WEBM
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
WebM video player (EBML/Matroska marker).
At a glance
| Original creator | Google, with the Alliance for Open Media |
| First published | 2010 |
| Purpose | An open, royalty-free media container for the web: a restricted subset of Matroska, holding VP8 or VP9 video, Vorbis audio and WebVTT text. |
| Extensions | .webm |
| Poka parser | poka-webm |
| Viewer | none: the parser draws its own preview |
| Depth tier | Standalone parser (see Depth tiers) |
| Breadth tier | B5 Identification (see Breadth tiers) |
How much Poka reads
B5 Identification. The format is recognised and a few properties are shown (name, size, version string). Nothing of the content is decoded.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: parsers/poka-webm/src/main.rs (90 lines, no tests): checks the 1A 45 DF A3 EBML magic and then searches the first 4096 bytes for the text webm or matroska, then emits POKA_MEDIA|video; playback is the browser video element (desktop preview.js, web app.js). Corpus has artcraft-effectcraft-webm-*.webm and an ESO black-hole .webm, but no test reads their structure. Judgement: B5 because no EBML element is parsed; playback is delegated. Covers WebM and Matroska-doctype files routed under .webm.
What Poka does not read
- EBML elements are not parsed: duration, track list, codecs (VP8, VP9, AV1, Vorbis, Opus), resolution
- title and tags, chapters and cover art are not shown
- WebVTT subtitle tracks and multiple audio tracks (no selection)
- DocType is not read as an element (a string search is used)
- codecs the webview cannot decode give only an unsupported note
- .mkv is not routed to this module
Background
Wikipedia dates the first release to 18 May 2010. The Library of Congress describes WebM as a constrained version of Matroska, itself built on EBML, without attachments and without several Matroska elements. Poka checks the EBML signature and looks for the webm or matroska document type by a string search of the first 4096 bytes, then hands the original file to the frontend, which plays it in the browser's video element.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| WebM (Matroska subset) | 1A 45 DF A3, DocType webm |
Not recorded | Played by the browser, so the codecs that play are the browser's. |
Derived and related formats
- WebM audio (
.weba): Has its own row in FILE_FORMATS.csv.
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- oxideav-mkv (candidate; MIT; Rust; https://github.com/OxideAV/oxideav-mkv) — Pure-Rust Matroska/WebM demuxer and muxer returning raw packets; v0.0.11, early. Licence from README badge.
- webm-iterable (candidate; MIT; Rust; https://github.com/austinleroy/webm-iterable) — Iterator over WebM/Matroska EBML tags from any Read source, with a writer; v0.7.1.
- symphonia-format-mkv (candidate; MPL-2.0; Rust; https://github.com/pdeljanov/Symphonia) — Pure Rust MKV/WebM demuxer (a part of project Symphonia).; v0.6.1, updated 2026-08-13; matched on lib.rs, not tested
- nom-exif (candidate; non-standard; Rust; https://github.com/mindeng/nom-exif) — Exif/metadata parsing library written in pure Rust, both image (jpeg/heif/heic/jpg/tiff etc.) and video/audio (mov/mp4/3gp/webm/mkv/mka, etc.) files are supported.; v3.8.0, updated 2026-09-07; matched
- matroska-demuxer (candidate; Zlib OR MIT OR Apache-2.0; Rust; https://github.com/hasenbanck/matroska-demuxer) — A demuxer that can demux Matroska and WebM container files.; v0.8.1, updated 2026-08-07; matched on lib.rs, not tested