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.
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
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
| 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 |
Convert .WEBM to...
Technical reference
- MIME Type
video/webm- Magic Bytes
1A 45 DF A3EBML header. DocType field identifies as WebM vs MKV.- Developer
- Year Introduced
- 2010
- Open Standard
- Yes — View specification
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.
| Offset | Length | Field | Example | Description |
|---|---|---|---|---|
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. |
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.
- Specification RFC 6386 — VP8 Data Format and Decoding Guide
- Specification RFC 6716 — Definition of the Opus Audio Codec
- Specification RFC 8794 — Extensible Binary Meta Language (EBML)
- Documentation WebM Project — Container Guidelines
- Registry Library of Congress FDD — WebM (fdd000357)
- Registry PRONOM fmt/573 — WebM