coderef

WebCodecsLimited availability

The WebCodecs API provides low-level access to individual video frames and chunks of audio samples, for full control over the way media is processed.

Not yet supported in all major browsers — check the table and provide a fallback.

Browser support

DesktopChrome
1–93Not supported
94+Supportedsince Sep 21, 2021
Current: 155
Edge
12–93Not supported
94+Supportedsince Sep 24, 2021
Current: 154
Firefox
1–129Not supported
130+Supportedsince Sep 3, 2024
Current: 157
Safari
1–18.6Not supported
26+Supportedsince Sep 15, 2025
Current: 27
MobileChrome Android
18–93Not supported
94+Supportedsince Sep 21, 2021
Current: 155
Firefox Android
✕Not supportedup to 157
Current: 157
Safari iOS
1–18.6Not supported
26+Supportedsince Sep 15, 2025
Current: 27

How to use

Not supported in Firefox Android. Use feature detection below and provide a fallback (or a polyfill) for those browsers.

Example

Full syntax and examples are on MDN: AudioData.

Feature detection

JS · check before using
if ("AudioData" in globalThis) {
  // AudioData is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (126). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
AudioData94941302694✕26
AudioData.AudioData94941302694✕26
AudioData.allocationSize94941302694✕26
AudioData.clone94941302694✕26
AudioData.close94941302694✕26
AudioData.copyTo94941302694✕26
AudioData.duration94941302694✕26
AudioData.format94941302694✕26
AudioData.numberOfChannels94941302694✕26
AudioData.numberOfFrames94941302694✕26
AudioData.sampleRate94941302694✕26
AudioData.timestamp94941302694✕26
AudioDecoder94941302694✕26
AudioDecoder.AudioDecoder94941302694✕26
AudioDecoder.close94941302694✕26
AudioDecoder.configure94941302694✕26
AudioDecoder.decode94941302694✕26
AudioDecoder.decodeQueueSize94941302694✕26
AudioDecoder.dequeue_event10610613026106✕26
AudioDecoder.flush94941302694✕26
Show 106 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
AudioDecoder.isConfigSupported_static94941302694✕26
AudioDecoder.reset94941302694✕26
AudioDecoder.state94941302694✕26
AudioEncoder94941302694✕26
AudioEncoder.AudioEncoder94941302694✕26
AudioEncoder.close94941302694✕26
AudioEncoder.configure94941302694✕26
AudioEncoder.configure.bitrateMode11911913026119✕26
AudioEncoder.configure.opus11011013026110✕26
AudioEncoder.configure.opus.opus_application126126✕✕126✕✕
AudioEncoder.configure.opus.opus_signal126126✕✕126✕✕
AudioEncoder.dequeue_event10610613026106✕26
AudioEncoder.encode94941302694✕26
AudioEncoder.encodeQueueSize94941302694✕26
AudioEncoder.flush94941302694✕26
AudioEncoder.isConfigSupported_static94941302694✕26
AudioEncoder.reset94941302694✕26
AudioEncoder.state94941302694✕26
EncodedAudioChunk94941302694✕26
EncodedAudioChunk.EncodedAudioChunk94941302694✕26
EncodedAudioChunk.byteLength94941302694✕26
EncodedAudioChunk.copyTo94941302694✕26
EncodedAudioChunk.duration94941302694✕26
EncodedAudioChunk.timestamp94941302694✕26
EncodedAudioChunk.type94941302694✕26
EncodedVideoChunk949413016.494✕16.4
EncodedVideoChunk.EncodedVideoChunk949413016.494✕16.4
EncodedVideoChunk.byteLength949413016.494✕16.4
EncodedVideoChunk.copyTo949413016.494✕16.4
EncodedVideoChunk.duration949413016.494✕16.4
EncodedVideoChunk.timestamp949413016.494✕16.4
EncodedVideoChunk.type949413016.494✕16.4
ImageDecoder9494133✕94133✕
ImageDecoder.ImageDecoder9494133✕94133✕
ImageDecoder.close9494133✕94133✕
ImageDecoder.complete9494133✕94133✕
ImageDecoder.completed9494133✕94133✕
ImageDecoder.decode9494133✕94133✕
ImageDecoder.isTypeSupported_static9494133✕94133✕
ImageDecoder.reset9494133✕94133✕
ImageDecoder.tracks9494133✕94133✕
ImageDecoder.type9494133✕94133✕
ImageTrack9494133✕94133✕
ImageTrack.animated9494133✕94133✕
ImageTrack.frameCount9494133✕94133✕
ImageTrack.repetitionCount9494133✕94133✕
ImageTrack.selected9494133✕94133✕
ImageTrackList9494133✕94133✕
ImageTrackList.length9494133✕94133✕
ImageTrackList.ready9494133✕94133✕
ImageTrackList.selectedIndex9494133✕94133✕
ImageTrackList.selectedTrack9494133✕94133✕
VideoColorSpace949413015.49413015.4
VideoColorSpace.VideoColorSpace9494130179413017
VideoColorSpace.fullRange949413015.49413015.4
VideoColorSpace.matrix949413015.49413015.4
VideoColorSpace.primaries949413015.49413015.4
VideoColorSpace.toJSON949413015.49413015.4
VideoColorSpace.transfer949413015.49413015.4
VideoDecoder949413016.494✕16.4
VideoDecoder.VideoDecoder949413016.494✕16.4
VideoDecoder.close949413016.494✕16.4
VideoDecoder.configure949413016.494✕16.4
VideoDecoder.configure.flip_option138138✕✕138✕✕
VideoDecoder.configure.rotation_option138138✕✕138✕✕
VideoDecoder.decode949413016.494✕16.4
VideoDecoder.decodeQueueSize949413016.494✕16.4
VideoDecoder.dequeue_event10610613016.4106✕16.4
VideoDecoder.flush949413016.494✕16.4
VideoDecoder.isConfigSupported_static949413016.494✕16.4
VideoDecoder.isConfigSupported_static.flip_option138138✕✕138✕✕
VideoDecoder.isConfigSupported_static.rotation_option138138✕✕138✕✕
VideoDecoder.reset949413016.494✕16.4
VideoDecoder.state949413016.494✕16.4
VideoEncoder949413016.494✕16.4
VideoEncoder.VideoEncoder949413016.494✕16.4
VideoEncoder.close949413016.494✕16.4
VideoEncoder.configure949413016.494✕16.4
VideoEncoder.dequeue_event10610613016.4106✕16.4
VideoEncoder.encode949413016.494✕16.4
VideoEncoder.encodeQueueSize949413016.494✕16.4
VideoEncoder.flush949413016.494✕16.4
VideoEncoder.isConfigSupported_static949413016.494✕16.4
VideoEncoder.reset949413016.494✕16.4
VideoEncoder.state949413016.494✕16.4
VideoFrame949413016.49413016.4
VideoFrame.VideoFrame949413016.49413016.4
VideoFrame.VideoFrame.flip_option138138✕✕138✕✕
VideoFrame.VideoFrame.rotation_option138138✕✕138✕✕
VideoFrame.allocationSize949413016.49413016.4
VideoFrame.clone949413016.49413016.4
VideoFrame.close949413016.49413016.4
VideoFrame.codedHeight949413016.49413016.4
VideoFrame.codedRect949413016.49413016.4
VideoFrame.codedWidth949413016.49413016.4
VideoFrame.colorSpace949413016.49413016.4
VideoFrame.copyTo949413016.49413016.4
VideoFrame.copyTo.format_property127127130✕127130✕
VideoFrame.displayHeight949413016.49413016.4
VideoFrame.displayWidth949413016.49413016.4
VideoFrame.duration949413016.49413016.4
VideoFrame.flip138138✕✕138✕✕
VideoFrame.format949413016.49413016.4
VideoFrame.rotation138138✕✕138✕✕
VideoFrame.timestamp949413016.49413016.4
VideoFrame.visibleRect949413016.49413016.4