.WEBM WebM Video
.webm

WebM Video

WebM is Matroska with four restrictions: no embedded fonts, no traditional subtitles, basic chapters only, and a VP8/VP9/AV1 plus Vorbis/Opus codec allowlist. Chrome played it in 2010, Safari not until 2021 — QuickTime and iMovie still refuse. FileDex converts WebM to MP4 in your browser, no upload.

Container structure
EBML
Segment
Tracks
VideoAudioStreamingLossyRFC 63862010

Common questions

What is a WebM file?

WebM is Google's royalty-free video container, launched at Google I/O in May 2010 for HTML5 `<video>`. It's a Matroska profile — same EBML binary framework as MKV — but restricted to VP8, VP9, or AV1 video with Vorbis or Opus audio. Chrome, Firefox, Edge, and Safari play it natively; QuickTime and iMovie still don't.

How do I convert a WebM file to MP4?

FileDex converts WebM to MP4 in your browser — drop the file into the converter above. WebM's VP8 and VP9 codecs cannot be stream-copied into MP4 because the MP4 container's codec registry excludes them, so FileDex re-encodes the video to H.264 and the audio to AAC automatically.

WebM vs MP4 — which one should I use?

Use MP4 when your file needs to open in QuickTime, iMovie, Final Cut Pro, PowerPoint, or most smart TV apps — none play WebM. Use WebM for web pages where file size matters and you control the playback path. WebM's VP9 files run 20 to 30 percent smaller than H.264 MP4 at equal visual quality, with no codec royalty fees.

Why won't WebM play in QuickTime or iMovie?

Apple's desktop video apps do not include a WebM decoder even though Safari does. QuickTime Player, iMovie, and Final Cut Pro play H.264 MP4 and HEVC natively but refuse WebM's VP8 and VP9 codecs — a split that has persisted since WebM launched in 2010. Convert the WebM to MP4 with FileDex — the file opens in QuickTime directly.

Is WebM free to use on my website?

Yes — Google released VP8 royalty-free in 2010, and the 2013 Google-MPEG-LA cross-license covered patents the pool considered potentially essential for VP8 and VP9. Publishers owe no per-stream license fees for serving WebM video, unlike H.264 and HEVC MP4 delivery which can carry MPEG-LA pool obligations depending on scale and delivery method.

What makes .WEBM special

Same bytes as MKV
WebM and MKV share the same first four bytes.
The first four bytes of a file are its magic signature — they tell software what kind of file it is. WebM and MKV both begin with 1A 45 DF A3 because they use the same binary framework. A short word a few bytes later — 'webm' or 'matroska' — is the only byte-level difference between them.
Four things WebM bans
WebM is Matroska with four explicit restrictions.
The WebM Project Container Guidelines block four things Matroska permits: embedded fonts and attached files are unsupported, traditional subtitle tracks are forbidden (WebVTT only via alternate mechanism), chapter support is basic only, and the video codec must be VP8, VP9, or AV1 with audio as Vorbis or Opus.
Twelve patent claims in 2011
Twelve patent holders stepped forward against VP8 in 2011.
Google released VP8 royalty-free at Google I/O on May 19, 2010. MPEG-LA called for patent holders nine months later, in February 2011, and twelve companies filed VP8 patent claims by the March 18 deadline. The standoff ended in March 2013 with an eleven-holder Google-MPEG-LA cross-license.
Plays in Safari, not QuickTime
QuickTime and iMovie still refuse WebM in 2026.
Apple released Safari 14.1 for macOS with WebM support in April 2021, and iOS 15 added it in September 2021. But QuickTime Player, iMovie, and Final Cut Pro on the same Macs still do not play WebM natively sixteen years after the format launched. Same operating system, different verdict per app.

Open a WebM file in a hex editor. The first four bytes read 1A 45 DF A3. Open an MKV file alongside it. Those same four bytes appear there too. Scroll about twenty bytes forward: the WebM spells webm in lowercase ASCII; the MKV spells matroska in lowercase ASCII. That string, buried inside the EBML header, is the only thing at the byte level that tells a file-detection tool which format it is reading.

Continue reading — full technical deep dive

The identical four bytes are no coincidence — they are the EBML Header element ID, defined by RFC 8794 (August 2020). EBML — Extensible Binary Meta Language — is a binary derivative of XML that both Matroska and WebM build on. Run ffprobe on either a WebM or an MKV and both files report their format_name as matroska,webm. FFmpeg has one demuxer for the two formats. The difference between them is not structural but rule-based: the WebM Project Container Guidelines codify a Matroska profile that bans attachments, forbids traditional subtitle tracks, permits only basic chapters, and restricts video codecs to VP8, VP9, or AV1 and audio codecs to Vorbis or Opus. What WebM loses in Matroska's flexibility, it earns back in a different kind of reach.

Why a .webm plays in Safari but refuses to open in QuickTime

Download a .webm video from a tweet and double-click it on a modern Mac. QuickTime Player opens. A dialog appears: "The file isn't compatible with QuickTime Player." Drag the same file into Safari's address bar. The video plays. Same machine, same operating system, same file — different verdict per app, sixteen years after WebM launched.

Chrome added native WebM playback in version 6 in May 2010, two weeks after the format's announcement. Firefox followed in version 4 in March 2011. Microsoft Edge inherited WebM support from Chromium in 2016, Opera shipped it in version 10.6 in July 2010, and Apple was the last major browser vendor to join — Safari 14.1 for macOS in April 2021, then iOS 15 in September 2021. The desktop video apps that ship on the same machines have not followed: QuickTime Player, iMovie, and Final Cut Pro on macOS still do not play WebM natively; Windows Movies & TV requires codec packs; PowerPoint cannot embed a WebM; and video editors outside Adobe's lineup typically require pre-conversion. This is the exact inverse of MKV's compatibility cliff, where desktop media players handle MKV fluently while iPhones, Apple TVs, and smart TVs refuse. The browser-first reach was no accident — WebM was designed from day one as the HTML5 video format no publisher had to pay to use.

The patent pool that took nine months to form

On May 19, 2010, during the Google I/O keynote, Google released VP8 open-source under a BSD-like license and bundled it with an irrevocable patent grant. The counter-attack took nine months to mobilize. In February 2011, MPEG-LA publicly called for patent holders who believed VP8 infringed essential MPEG-family patents, setting a March 18 submission deadline. Twelve companies stepped forward by that date.

The standoff lasted nearly three years. In March 2013, MPEG-LA dropped the pool effort after Google paid for a cross-license to patents from eleven of the twelve claimants — covering "patents that may be essential" for VP8, with VP9 forward-licensed under the same terms and the right to sub-license to third-party users. VP8 and VP9 became the first browser-native video codec lineage with no per-stream royalty obligation to a third-party patent pool. H.264 and HEVC, by contrast, are served through MPEG-LA pools that collect device and distribution fees from encoder vendors, hardware makers, and large streaming platforms. AV1, the newer third codec in the WebM allowlist, inherits the stance through the Alliance for Open Media's royalty-free license. A website serving VP9 WebM video to a hundred million viewers owes no codec pool fees — the quiet consequence of the 2013 settlement. Royalty-free playback unlocked the browser; the container rules are why WebM still needs conversion to leave it.

Why WebM → MP4 re-encodes and WebM → MKV doesn't

Run ffmpeg -i input.webm -c copy output.mp4 on a WebM file. The command fails: Could not find tag for codec vp8 in stream #0, codec not currently supported in container. The MP4 container's codec registry — defined by ISO/IEC 14496-12 and managed through IANA — does not include VP8 or VP9. The stream cannot be moved as-is; the video must be re-encoded, usually to H.264, and the audio must be re-encoded, usually to AAC. A three-second sample takes a fraction of a second; a two-hour movie takes minutes. By contrast, ffmpeg -i input.webm -c copy output.mkv completes in milliseconds, producing a bit-identical MKV — Matroska has no codec allowlist, so the same VP9 and Opus streams move into the new container untouched.

FileDex defaults to VP8 plus Vorbis for its WebM output, not VP9 plus Opus. The VP9 encoder (libvpx-vp9) runs out of memory in the WebAssembly heap on non-trivial inputs, and the Opus encoder (libopus) crashes with a memory access violation inside the WASM runtime — known FFmpeg WASM limitations carried in current browser-based FFmpeg builds. WebM sources containing Opus audio extract fine — the decoder works — but users cannot create Opus in FileDex. A reader can verify the EBML collision from the command line in under a second: run xxd -l 32 video.webm and read the four-byte ASCII string webm with the naked eye.

.WEBM compared to alternatives

.WEBM compared to alternative formats
Formats Criteria Winner
.WEBM vs .MP4
Native playback in Apple's desktop video apps
QuickTime Player, iMovie, and Final Cut Pro play H.264 MP4 natively but refuse WebM's VP8/VP9 codecs. Safari on macOS added WebM playback in April 2021, but Apple's desktop video apps have not followed. MP4 opens in the Finder double-click path; WebM needs a third-party player or pre-conversion.
MP4 wins
.WEBM vs .MKV
Codec flexibility vs. web playback guarantee
Same EBML container structure, same `1A 45 DF A3` magic bytes — the difference is rule-based. MKV carries codecs from RFC 9559 §27's thirty-plus codec ID registry and embeds fonts, chapters, and twelve subtitle tracks; WebM restricts to VP8/VP9/AV1 plus Vorbis/Opus. MKV wins on desktop flexibility; WebM wins on browser guarantees and royalty-free delivery.
Draw
.WEBM vs .MOV
Ecosystem fit — Apple tools vs. web pages
MOV is QuickTime's native container, used by iMovie and Final Cut Pro and shared by camera and drone footage. WebM is the HTML5 video target — royalty-free, browser-native, and smaller at equivalent VP9 quality. The picks track the destination: MOV for editing workflows, WebM for web delivery.
Draw

Technical reference

MIME Type
video/webm
Magic Bytes
1A 45 DF A3 EBML header. DocType field identifies as WebM vs MKV.
Developer
Google
Year Introduced
2010
Open Standard
Yes — View specification
000000001A45DFA3 .E..

EBML header. DocType field identifies as WebM vs MKV.

Binary Structure

WebM files are built on EBML — Extensible Binary Meta Language, a binary derivative of XML defined by RFC 8794. Every WebM file begins with the same four bytes (`1A 45 DF A3`) — the EBML Header element ID — that MKV also uses. The distinguishing marker appears inside the EBML header: the DocType element carries the UTF-8 string `webm` (4 bytes) instead of MKV's `matroska` (8 bytes). Following the header, the Segment element (`18 53 80 67`) contains the media payload: Info, Tracks, Cluster (encoded media data), Cues (seek index), and basic Chapters. The WebM Project Container Guidelines restrict the codec allowlist to VP8, VP9, or AV1 video plus Vorbis or Opus audio, ban the Attachments element (so no embedded fonts or arbitrary files), forbid traditional subtitle tracks beyond WebVTT via an alternate mechanism, and permit only basic chapters without EditionUID, EditionFlagHidden, or ChapProcess sub-elements.

OffsetLengthFieldExampleDescription
0x00 4 bytes EBML Header ID 1A 45 DF A3 EBML Header element ID per RFC 8794 §11.2.1. Identical in MKV, WebM, and other EBML-derived formats.
0x04 1 byte EBML Header size (VINT) 9F VINT-encoded length of the EBML Header payload. 0x9F decodes to 0x1F (31 bytes) — smaller than MKV's 0xA3 because the 'webm' DocType string is shorter than 'matroska'.
0x05 3 bytes EBMLVersion element 42 86 81 Element ID (0x4286) + 1-byte VINT size marker. Child of EBML Header.
0x08 1 byte EBMLVersion value 01 EBML specification version 1 per RFC 8794.
0x09 3 bytes EBMLReadVersion 42 F7 81 Element ID (0x42F7) + 1-byte VINT size marker.
0x0C 1 byte EBMLReadVersion value 01 Minimum EBML version a parser must support to read this document.
0x18 3 bytes DocType element 42 82 84 DocType ID (0x4282) + VINT size 0x84 indicating 4-byte payload.
0x1A 4 bytes DocType string (ASCII) 77 65 62 6D ASCII 'webm' — the four bytes that distinguish a WebM from a Matroska file. Changing these bytes to 0x6D 0x61 0x74 0x72 0x6F 0x73 0x6B 0x61 ('matroska') converts the file's identity.
May 2010Google announces WebM at Google I/O; VP8 codec released royalty-free under BSD-like license with an irrevocable patent grant. Chrome 6 adds playback two weeks later.February 2011MPEG-LA calls for patent holders claiming VP8 infringement, setting a March 18 submission deadline. The counter-attack on VP8's royalty-free release arrives nine months after Google I/O, not immediately.July 2011Twelve companies identified as holding patents MPEG-LA deems essential to VP8, per Computerworld and MPEG-LA reporting. The patent-pool threat is now formed but not monetized.March 2013MPEG-LA drops the VP8 patent-pool effort after a Google cross-license covering eleven of the twelve claimants. Google secures rights to patents that may be essential for VP8 and VP9, with sub-license rights for third-party users.June 2013VP9 codec specification finalized inside Google. YouTube begins serving VP9 WebM video the same year; VP9 delivers 20 to 30 percent smaller files than H.264 at equal visual quality.March 2018AV1 1.0 specification released by the Alliance for Open Media. WebM container support for AV1 follows in the same year; YouTube and Netflix begin AV1 delivery.April 2021Safari 14.1 for macOS Big Sur adds native WebM playback; iOS 15 extends WebM support to Safari on iPhone and iPad in September 2021. Apple was the last major browser vendor to ship WebM.October 2024RFC 9559 publishes Matroska as an IETF Standards Track document. The RFC does not separately codify WebM — the WebM Project Container Guidelines remain the authoritative spec for WebM-specific restrictions.
Create WebM from any video with VP9 + Opus ffmpeg
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -c:a libopus output.webm

Encodes to VP9 with constant-quality CRF 30 (lower numbers produce higher quality) plus Opus audio. VP9 WebM files typically run 20 to 30 percent smaller than H.264 MP4 at equal visual quality. Native FFmpeg runs this comfortably; FileDex's WebAssembly build cannot emit VP9 or Opus because those encoders crash in the browser's WASM runtime, so FileDex defaults to VP8 plus Vorbis instead.

Convert WebM to MP4 (re-encode required) ffmpeg
ffmpeg -i input.webm -c:v libx264 -crf 23 -c:a aac output.mp4

WebM cannot stream-copy into MP4 because the MP4 container's codec registry does not include VP8, VP9, or Vorbis. The video re-encodes to H.264 at CRF 23 (transparent quality for 1080p content) and the audio re-encodes to AAC. The same command logic runs inside FileDex's WebAssembly build for the browser conversion path.

Inspect WebM container and stream details ffmpeg
ffprobe -v quiet -print_format json -show_streams -show_format input.webm

Reports codec, duration, resolution, and channel information as structured JSON. The format name comes back as `matroska,webm` because FFmpeg uses a single demuxer for both containers — they share the EBML framework, and the DocType string inside the file decides which codec policy applies.

WEBM MP4 transcode lossy MP4 plays natively on iPhones, Apple TVs, Chromecast, and smart TVs. FileDex re-encodes VP8 or VP9 to H.264 and Vorbis or Opus to AAC — the codec combination iOS and tvOS decoders accept.
WEBM MKV remux lossless MKV has no codec allowlist, so WebM to MKV is a stream copy that completes in milliseconds. VP8 or VP9 video and Vorbis or Opus audio move bit-identical into the MKV container; only the DocType string changes.
WEBM MOV transcode lossy MOV is QuickTime's native container and shares MP4's codec allowlist. FileDex re-encodes to H.264 plus AAC so the file opens in QuickTime Player, iMovie, and Final Cut Pro without a transcode plugin.
WEBM AVI transcode lossy AVI is a 1992 Microsoft container that legacy Windows tools and some DVRs still require. FileDex re-encodes to H.264 video plus MP3 audio — the combination compatible with the widest set of AVI players.
WEBM WMV transcode lossy WMV is Microsoft's Windows Media container, used for PowerPoint-embedded video and corporate video pipelines. FileDex re-encodes the video to Windows Media Video 9 and audio to WMA v2 at the target bitrate.
WEBM FLV transcode lossy FLV is Adobe Flash's video container. Flash itself ended in 2020, but some legacy streaming servers and archival pipelines still require FLV. FileDex re-encodes to H.264 plus AAC in an FLV container.
WEBM 3GP transcode lossy 3GP is the 3GPP mobile container used by older phones and MMS pipelines. FileDex re-encodes to H.263 or H.264 video plus AAC audio in a 3GP container, suitable for legacy device delivery.
WEBM M4V transcode lossy M4V is Apple's variant of MP4 used by iTunes Store. FileDex writes an unprotected M4V with H.264 plus AAC — iTunes, Apple TV, and macOS Finder treat it as MP4 for playback purposes.
WEBM MPG transcode lossy MPG is the MPEG-1 or MPEG-2 program stream used by DVDs and older broadcast systems. FileDex re-encodes to MPEG-2 video at the target bitrate plus MP2 audio for DVD-authoring pipelines.
WEBM TS transcode lossy TS is the MPEG-2 transport stream used by ATSC and DVB broadcast feeds. FileDex writes H.264 or MPEG-2 video into a transport stream with AAC or AC-3 audio for broadcast-style workflows.
WEBM VOB transcode lossy VOB is the DVD-Video object file format, carrying MPEG-2 video with MP2 or AC-3 audio. FileDex re-encodes to MPEG-2 plus AC-3 at DVD-compatible bitrates for DVD authoring pipelines.
WEBM MP3 export lossy MP3 is the lowest-common-denominator audio format for podcast clients, music players, and car stereos. FileDex extracts WebM's audio track and transcodes Vorbis or Opus to MP3 at the target bitrate.
WEBM WAV export lossless WAV is Microsoft's uncompressed PCM audio container, used by audio editing software and accessibility tools. FileDex decodes the WebM audio track to PCM samples and writes them into a 16-bit WAV file.
WEBM FLAC export lossless FLAC is a lossless audio codec preferred by audiophile libraries and some archival workflows. FileDex decodes the WebM audio track and re-encodes to FLAC — lossless relative to the decoded samples, not the original source.
WEBM AAC export lossy AAC is the MP4 and iOS audio codec, widely used by iTunes libraries and streaming platforms. FileDex extracts WebM's audio track and re-encodes Vorbis or Opus to AAC — playable in Apple Music and QuickTime.
WEBM OGG export lossless OGG is the Xiph.org container for Vorbis, Opus, and FLAC audio — a royalty-free counterpart to MP3. FileDex writes the WebM audio track into an OGG container; stream copy is possible when the codec is already Vorbis or Opus.
WEBM M4A export lossy M4A is MPEG-4 audio — the container iTunes and Apple Music use for AAC-encoded files. FileDex extracts WebM's audio track and re-encodes Vorbis or Opus to AAC inside an M4A wrapper for iOS compatibility.
WEBM PNG export lossless PNG is lossless raster imagery. FileDex extracts a single frame from the WebM video at the user-chosen timestamp, decodes it via FFmpeg, and writes the frame to PNG — useful for thumbnails, social-media stills, or documentation.
WEBM JPG export lossy JPEG is the photograph standard for compressed imagery. FileDex extracts a single video frame at the chosen timestamp and re-encodes it to JPEG at the target quality setting — suitable for smaller thumbnails or social posts.
WEBM WEBP export lossy WebP is Google's royalty-free image format, smaller than PNG at equivalent quality. FileDex extracts a single frame from the WebM video and writes it to WebP — a natural pairing since WebP and WebM share the VP8 encoder lineage.
WEBM GIF transcode lossy GIF produces an animated image loop from the WebM video. FileDex extracts a frame range at the target frame rate and writes a palette-quantized GIF — useful for social sharing when audio is not needed.
WEBM BMP export lossless BMP is the uncompressed Windows bitmap format used by legacy Windows tools and documentation pipelines. FileDex extracts a single frame at the chosen timestamp and writes it uncompressed to BMP — large file, zero quality loss.
MEDIUM

Attack Vectors

  • libvpx VP8 decoder heap buffer overflow (CVE-2023-5217) was exploited as a zero-day against Chrome in September 2023 for targeted surveillance. The same decoder ships in Firefox, Safari, and standalone WebM players built against libvpx.
  • libaom AV1 decoder has its own CVE history including CVE-2023-39616 (stack buffer overflow) and CVE-2024-5171 (integer overflow). AV1 is the newest codec in the WebM allowlist and sees growing adoption in YouTube and Twitch.
  • EBML parser bugs in the shared matroska,webm FFmpeg demuxer (CVE-2017-9608, CVE-2017-9991, and related) affect both WebM and MKV files. A malformed EBML header can trigger heap corruption during container parsing.
  • Opus decoder memory issues have surfaced in libopus releases historically. WebM sources carrying Opus audio exercise this code path during decode even when the user is not converting audio.

Mitigation: FileDex decodes WebM via FFmpeg compiled to WebAssembly inside the browser sandbox — the same process isolation used for browser video playback. The WebM Project Container Guidelines ban attachments and traditional subtitle tracks, removing two MKV attack surfaces that WebM simply does not carry: no font loading via libass, no extracted attachment payloads. A malformed demuxer crash is contained to the worker thread within the browser tab. No server uploads.

BSD-licensed reference encoder and decoder for VP8 and VP9, maintained by Google. Powers the WebM decoders inside Chrome, Firefox, and Safari, plus standalone converters including FFmpeg and HandBrake.
The browser that shipped WebM first, in version 6 on May 25, 2010 — two weeks after the format's announcement. Plays VP8, VP9, and AV1 WebM natively on Windows, macOS, Linux, Android, ChromeOS, and iOS.
FFmpeg tool
Cross-platform command-line converter and demuxer. Uses a single matroska,webm demuxer for both containers; writes WebM via the libvpx and libvpx-vp9 encoders with libvorbis or libopus audio.
Open-source cross-platform player with first-class WebM support. Runs on Windows, macOS, Linux, iOS, Android, and tvOS — fills the gap left by QuickTime Player refusing WebM on Apple desktops.
HandBrake tool
Open-source video transcoder with WebM input and output presets. Targets VP8 plus Vorbis and VP9 plus Opus for web delivery, with batch-conversion queues for large video libraries.
OBS Studio tool
Open-source streaming and recording software. Records directly to WebM using VP8 or VP9 — a common source of WebM files in the wild alongside YouTube re-uploads and Twitter-embedded videos.