Extensible Binary Meta Language
EBML (Extensible Binary Meta Language) je binární formát souboru. Byl inspirován formátem XML, ale na rozdíl od něj není textový, ale binární.

Použití 
Formát EBML byl vytvořen v rámci projektu Matroska, za účelem ukládání tohoto multimediálního kontejneru do binárního souboru. Díky svému návrhu však není na tento účel omezen a je možné pomocí něj ukládat libovolná strukturovaná data. Pro práci s EBML v jazyce C++ nabízí vývojový tým Matroska knihovnu https://github.com/Matroska-Org/libebml.

Výhody a nevýhody

Výhody 
 U různých verzí formátu, který je založen EBML, je možné zachovat zpětnou kompatibilitu
 Velikost binárních dat není omezená.
 Velikost polí pro data není konstantní, ale mění se dle potřeby, tudíž v dokumentu nezůstávají přebytečné prázdné znaky.
 Pro čtení ani zápis není nutné znát předem celkovou velikost, tudíž je možné zpracovávat jako datový proud.

Nevýhody 
 Každý dokument je celek sám o sobě, a nemůže obsahovat reference na jiné EBML soubory.
 Prozatím neexistuje typ souboru definující typ dokumentu, které smí EBML soubor obsahovat (pro XML soubory existuje DTD).
 Pro EBML nejsou definovány entity (elementy, které se nahrazují jinými).

Struktura 
Obdobně jako XML, i EBML se skládá z elementů, a to povinně kořenového elementu a nepovinně dalších.
Každý element se skládá ze tří částí: ID, Popis velikosti a poté samotná data.

ID 
ID je číslo, které je kódováno v jednom až čtyřech bytech. Velikost je určena pozicí první jedničky v binárním zápisu, tj. ID bude vypadat takto (kde místo x je binárně zakódované číslo ID):

 1xxx xxxx
 01xx xxxx xxxx xxxx
 001x xxxx xxxx xxxx xxxx xxxx
 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx

Popis velikosti 
Popis velikosti je číslo, určující počet bytů dat, které daný element obsahuje. jeho hodnota je v rozmezí 1 až 256, což znamená, že data elementu mohou mít velikost od 1 bytu do zhruba 72000 terabytů. Popis velikosti je kódován obdobně jako ID:

 1xxx xxxx
 01xx xxxx xxxx xxxx
 ...
 0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

Data 
Data jsou posloupnost bytů, o velikosti určené popisem velikosti, která není nijak interpretována formátem EBML, tj. formát již závisí pouze na tvůrci konkrétního souboru.

Externí odkazy 
 https://web.archive.org/web/20150619144820/http://www.matroska.org/technical/specs/rfc/index.html
 http://matroska-org.github.io/libebml/
 http://matroska-org.github.io/libebml/specs.html

Značkovací jazyky
Souborové formáty