Matroska Media Container Tag Specifications
Internet-Draft draft-ietf-cellar-tags-14
Steve Lhomme
slhomme@matroska.org
Moritz Bunkus
moritz@bunkus.org
Dave Rice
dave@dericed.com
12 November 2024
art
cellar
binary
storage
matroska
ebml
tags
This document defines the Matroska tags, namely the tag names and their respective semantic meaning.
Introduction
Matroska is a multimedia container format defined in [RFC9559]. It can store timestamped multimedia data but also chapters and tags. The Tag elements add important metadata to identify and classify the information found in a Matroska Segment. It can tag a whole Segment, separate Tracks elements, individual Chapter elements or Attachments elements.
Some details about tagging are already present in Section 24 of [RFC9559].
While the Matroska tagging framework allows anyone to create their own custom tags, it's important to have a common set of values for interoperability. This document intends to define a set of common tag names used in Matroska.
Notation and Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
Tagging
When a SimpleTag is nested within another SimpleTag, the nested SimpleTag becomes an attribute of its parent SimpleTag. For instance, if you wanted to store the dates that a singer started being the lead performer, then your SimpleTag tree would look something like this:
- Targets
  - TagTrackUID = {track UID of tagged content}.
- ARTIST = "Pet Shop Boys"
  - LEAD_PERFORMER = "Neil Tennant"
    - DATE_STARTED = "1981-08"
This corresponds to this layout of EBML elements:
<Tags>
  <Tag>
    <Targets>
      <TagTrackUID>{track UID of tagged content}</TagTrackUID>
    </Targets>

    <SimpleTag>
      <TagName>ARTIST</TagName>
      <TagString>Pet Shop Boys</TagString>

      <SimpleTag>
        <TagName>LEAD_PERFORMER</TagName>
        <TagString>Neil Tennant</TagString>

        <SimpleTag>
          <TagName>DATE_STARTED</TagName>
          <TagString>1981-08</TagString>
        </SimpleTag>

      </SimpleTag>

    </SimpleTag>
  </Tag>
</Tags>

In this way, it becomes possible to store any SimpleTag as attributes of another SimpleTag.
Multiple items SHOULD never be stored as a list in a single TagString. If there is more than one tag value with the same name to be stored, then more than one SimpleTag SHOULD be used.
Why Official Tags Matter
There is a debate between people who think all tags SHOULD be free and those who think all tags SHOULD be strict. Our recommendations are in between.
Advanced-users application might let you put any tag in your file. But for the rest of the applications, they usually give you a basic list of tags you can use. Both have their needs. But it's usually a bad idea to use custom/exotic tags because you will probably be the only person to use this information even though everyone else could benefit from it. So hopefully, when someone wants to put information in one's file, they will find an official one that fits their need and hopefully use it. If it's not in the list, this person can try get a new tag in the Matroska Tags Names registry (Section 6.1). This registry is not meant to have every possible information in a file. Matroska files are not meant the become a whole database of people who made costumes for a film. A website would be better for that. It's hard to define what should be in and what doesn't make sense in a file; thus, each demand needs to balance if it makes sense to be carried over in a file for storage and/or sharing or if it doesn't belong there.
We also need an official list simply for developers to be able to display relevant information in their own design, if they choose to support a list of meta-information they should know which tag has the wanted meaning so that other apps could understand the same meaning.
Tag Formatting
TagName Formatting
The TagName SHOULD consist of UTF-8 capital letters, numbers and the underscore character '_'.
The TagName SHOULD NOT contain any space.
TagNames starting with the underscore character '_' are not official tags; see Section 3.1.
TagString Formatting
Although tags are metadata mostly used for reading, there are cases where the string value could be used for sorting, categorization, etc. For this reason, when possible, strict formatting of the value should be used so everyone can agree on how to use the value.
Due to preexisting files where these formatting rules were not explicit, they are usually presented as rules that SHOULD be applied when possible, rather than MUST be applied at all times. It is RECOMMENDED to use strict formatting when writing new tag values.
Date Tags Formatting
TagString fields with dates SHOULD have the following format: "YYYY-MM-DD hh:mm:ss.mss". This is similar to the ISO8601 date and time format defined in appendix A of [RFC9559] without the "T" separator, without the time offset and with the addition of the milliseconds "mss". The date and times represented are in Coordinated Universal Time (UTC).
Date and times are usually not precise to a particular millisecond. To store less accurate dates, parts of the date string are removed starting from the right. For instance, to store only the year, one would use "2004". To store a specific day such as May 1st, 2003, one would use "2003-05-01".
Number Tags Formatting
TagString fields that require a Float SHOULD use the "." mark instead of the "," mark. Only ASCII numbers "0" to "9" and the "." character SHOULD be used. The "." separator represent the boundary between the integer value and the decimal parts. If the string doesn't contain the "." separator, the value is an integer value. Thousandths separators SHOULD NOT be used.
To display it differently for another local, applications SHOULD support auto replacement on display.
Country Code Tags Formatting
TagString fields that use a Country Code SHOULD use the Matroska countries form defined in Section 13 of [RFC9559], i.e. [RFC5646] two-letter region subtags, without the UK exception
Target Types
The TargetTypeValue element allows tagging of different parts that are inside or outside a given file. For example, in an audio file with one song you could have information about the album it comes from and even the CD set even if it's not found in the file.
For applications to know the kind of information (like "TITLE") relates to a certain level (CD title or track title), we also need a set of official TargetTypeValue values and TargetType names. That also means the same tag name can have different meanings depending on where it is, otherwise we would end up with 7 "TITLE_" tag names.
For human readability a TargetType string can be added next to the corresponding TargetTypeValue. Audio and video have different TargetType values. The following table summarizes the TargetType values found in Section 5.1.8.1.1.2 of [RFC9559]:
TargetTypeValue Values Semantic Description
TargetTypeValue | Audio TargetType | Video TargetType | Comment
70 | COLLECTION | COLLECTION | the high hierarchy consisting of many different lower items
60 | EDITION / ISSUE / VOLUME / OPUS | SEASON / SEQUEL / VOLUME | a list of lower levels grouped together
50 | ALBUM / OPERA / CONCERT | MOVIE / EPISODE / CONCERT | the most common grouping level of music and video (e.g., an episode for TV series)
40 | PART / SESSION | PART / SESSION | when an album or episode has different logical parts
30 | TRACK / SONG | CHAPTER | the common parts of an album or a movie
20 | SUBTRACK / PART / MOVEMENT | SCENE | corresponds to parts of a track for audio (like a movement)
10 | - | SHOT | the lowest hierarchy found in music or movies
Tags from a TargetTypeValue apply to the all lower TargetTypeValues. This means that if a CD has the same artist for all tracks, you just need to set the "ARTIST" tag at TargetTypeValue 50 (ALBUM) and not to each TargetTypeValue 30 (TRACK), but you can also repeat the value for each track. If some tracks of that CD have no known "ARTIST", the value MUST be set to nothing, a void string "" as detailed in Section 24.2 of [RFC9559], so that the album "ARTIST" doesn't apply.
If a tag with a given TagName is found at a TargetTypeValue, only values of that TagName are valid at that TargetTypeValue level. In other words, the TagName values from upper TargetTypeValue levels don't apply at that level.
Multiple SimpleTag with the same TagName can be used at a given TargetTypeValue level when each SimpleTag contain a TagString. For example this can be useful to find a single "ARTIST" even when they are found in a collaboration. The concatenation of each TagString represents the value for the TagName at this level. The presentation, for instance with a separator, is up to the application.
Target Types Parts
There are three organizational tags defined in Section 4.2:
- TOTAL_PARTS
- PART_NUMBER
- PART_OFFSET
These tags allow specifying the ordering of some tags within a another group of tags.
For example if you have an album with 10 tracks and you want to tag the second track from it. You set "TOTAL_PARTS" to "10" at TargetTypeValue 50 (ALBUM). It means the "ALBUM" contains 10 lower parts. The lower part in question is the first lower TargetTypeValue that is specified in the file. So, if it's TargetTypeValue = 30 (TRACK), then that means the album contains 10 tracks. If TargetTypeValue is 20 (MOVEMENT), that means the album contains 10 movements, etc. And since it's the second track within the album, the "PART_NUMBER" at TargetTypeValue 30 (TRACK) is set to "2".
If the parts are split into multiple logical entities, you can also use "PART_OFFSET". For example you are tagging the third track of the second CD of a double CD album with a total of 10 tracks -- like The Orb's Adventures Beyond The Ultraworld [OrbUltraworld] -- the "TOTAL_PARTS" at TargetTypeValue 50 (ALBUM) is "10", the "PART_NUMBER" at TargetTypeValue 30 (TRACK) is "3", and the the "PART_OFFSET" at TargetTypeValue 30 (TRACK) is "5", which is the number of tracks on the first CD.
When a TargetTypeValue level doesn't exist it MUST NOT be specified in the files, so that the "TOTAL_PARTS" and "PART_NUMBER" elements match the same levels.
Here is an example of an audio record with 2 tracks in a single file. There is one Tag element for the record, and one Tag element per track on the record. Each track being identified by a chapter.
The Tag for the record:
- Targets
  - TargetTypeValue = 50
- ARTIST = "Daft Punk"
- TITLE = "Da Funk"
- TOTAL_PARTS = "2"
The Tag for the first track:
- Targets
  - TargetTypeValue = 30
  - TagChapterUID = 12345
- TITLE = "Da Funk"
- PART_NUMBER = "1"
The Tag for the second track:
- Targets
  - TargetTypeValue = 30
  - TagChapterUID = 67890
- TITLE = "Rollin' & Scratchin'"
- PART_NUMBER = "2"
This corresponds to this layout of EBML elements:
<Tags>
  <!-- description of the whole file/record -->
  <Tag>
    <Targets>
      <TargetTypeValue>50</TargetTypeValue>
    </Targets>

    <SimpleTag>
      <TagName>ARTIST</TagName>
      <TagString>Daft Punk</TagString>
    </SimpleTag>

    <SimpleTag>
      <TagName>TITLE</TagName>
      <TagString>Da Funk</TagString>
    </SimpleTag>

    <SimpleTag>
      <TagName>TOTAL_PARTS</TagName>
      <TagString>2</TagString>
    </SimpleTag>
  </Tag>

  <!-- description of the first track/chapter -->
  <Tag>
    <Targets>
      <TargetTypeValue>30</TargetTypeValue>
      <TagChapterUID>12345</TagChapterUID>
    </Targets>

    <SimpleTag>
      <TagName>TITLE</TagName>
      <TagString>Da Funk</TagString>
    </SimpleTag>

    <SimpleTag>
      <TagName>PART_NUMBER</TagName>
      <TagString>1</TagString>
    </SimpleTag>
  </Tag>

  <!-- description of the second track/chapter -->
  <Tag>
    <Targets>
      <TargetTypeValue>30</TargetTypeValue>
      <TagChapterUID>67890</TagChapterUID>
    </Targets>

    <SimpleTag>
      <TagName>TITLE</TagName>
      <TagString>Rollin' & Scratchin'</TagString>
    </SimpleTag>

    <SimpleTag>
      <TagName>PART_NUMBER</TagName>
      <TagString>2</TagString>
    </SimpleTag>
  </Tag>
</Tags>

Official Tags
The following is a complete list of the supported Matroska Tags. While it is possible to use Tag names that are not listed below, this is NOT RECOMMENDED as compatibility will be compromised. If you find that there is a Tag missing that you would like to use, then please contact the persons mentioned in the IANA Matroska Tags Registry for its inclusion; see Section 6.1.
Nesting Information
Nesting Information tags are intended to contain other tags.
Nesting Information tags
Tag Name | Type | Description
ORIGINAL | nested | A special tag that is meant to have other tags inside (using nested tags) to describe the original work of art that this item is based on. All tags can be used "under" the "ORIGINAL" tag like "LYRICIST", "LEAD_PERFORMER", etc.
SAMPLE | nested | A tag that contains other tags to describe a sample used in the targeted item originally found in another work of art. All tags can be used "under" the "SAMPLE" tag like "TITLE", "ARTIST", "DATE_RELEASED", etc.
COUNTRY | UTF-8 | The name of the country that is meant to have other tags inside (using nested tags) to country specific information about the item, using the Country Code format defined in Section 3.2.2.3. All tags can be used "under" the "COUNTRY" tag like "LABEL", "RATING", etc.
Organization Information
Organization Information tags
Tag Name | Type | Description
TOTAL_PARTS | UTF-8 | Total number of parts defined at the first lower level. (e.g., if TargetTypeValue is "50" (TargetType = "ALBUM"), the total number of tracks of an audio CD).
PART_NUMBER | UTF-8 | Index of the current part relative to parts of the same level, starting at 1. (e.g., if TargetTypeValue is "30" (TargetType = "TRACK"), the track number of an audio CD).
PART_OFFSET | UTF-8 | A number to add to "PART_NUMBER", when the parts at that level don't start at 1 (e.g., if TargetTypeValue is "30" (TargetType = "TRACK"), the track number of the second audio CD).
Titles
Titles tags
Tag Name | Type | Description
TITLE | UTF-8 | The title of this item. For example, for music you might label this "Canon in D", or for video's audio track you might use "English 5.1" This is akin to the "TIT2" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
SUBTITLE | UTF-8 | Sub Title of the entity. This is akin to the "TIT3" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
Nested Information
Nested Information includes tags contained in other tags.
Nested Information tags
Tag Name | Type | Description
URL | UTF-8 | URL corresponding to the tag it's included in, using the format defined in [RFC3986].
SORT_WITH | UTF-8 | A child SimpleTag element to indicate what alternative value the parent SimpleTag element can have to be sorted -- for example, "Pet Shop Boys" instead of "The Pet Shop Boys". Or "Marley Bob" and "Marley Robert Nesta" (no comma needed).
INSTRUMENTS | UTF-8 | The instruments that are being used/played, separated by a comma. It SHOULD be a child of the following tags: "ARTIST", "LEAD_PERFORMER", or "ACCOMPANIMENT".
EMAIL | UTF-8 | Email corresponding to the tag it's included in, using the "Addr-Spec" format defined in Section 3.4.1 of [RFC5322].
ADDRESS | UTF-8 | The physical address of the entity. The address SHOULD include a country code using the Country Code format defined in Section 3.2.2.3. It can be useful for a recording label.
FAX | UTF-8 | The fax number corresponding to the tag it's included in. It can be useful for a recording label.
PHONE | UTF-8 | The phone number corresponding to the tag it's included in. It can be useful for a recording label.
Entities
Entities tags
Tag Name | Type | Description
ARTIST | UTF-8 | A person or band/collective generally considered responsible for the work. This is akin to the "TPE1" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
LEAD_PERFORMER | UTF-8 | Lead Performer/Soloist(s). This can sometimes be the same as "ARTIST". This is akin to the "TPE1" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
ACCOMPANIMENT | UTF-8 | Band/orchestra/accompaniment/musician. This is akin to the "TPE2" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
COMPOSER | UTF-8 | The name of one composer of this item. This is akin to the "TCOM" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
ARRANGER | UTF-8 | The name of a person who arranged the piece (e.g., Ravel).
LYRICS | UTF-8 | The lyrics corresponding to a song (in case audio synchronization is not known or as a doublon to a subtitle track). Editing this value, when subtitles are found, SHOULD also result in editing the subtitle track for more consistency.
LYRICIST | UTF-8 | The name of a person who wrote the lyrics for a musical item. This is akin to the "TEXT" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
CONDUCTOR | UTF-8 | Conductor/performer refinement. This is akin to the "TPE3" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
DIRECTOR | UTF-8 | This is akin to the "IART" tag [RIFF.tags].
ASSISTANT_DIRECTOR | UTF-8 | The name of the assistant director.
DIRECTOR_OF_PHOTOGRAPHY | UTF-8 | The name of the director of photography, also known as cinematographer. This is akin to the "ICNM" tag in [RIFF.tags].
SOUND_ENGINEER | UTF-8 | The name of the sound engineer or sound recordist.
ART_DIRECTOR | UTF-8 | The person who oversees the artists and craftspeople who build the sets.
PRODUCTION_DESIGNER | UTF-8 | Artist responsible for designing the overall visual appearance of a movie.
CHOREGRAPHER | UTF-8 | The name of the choregrapher
COSTUME_DESIGNER | UTF-8 | The name of the costume designer
ACTOR | UTF-8 | An actor or actress playing a role in this movie. This is the person's real name, not the character's name the person is playing.
CHARACTER | UTF-8 | The name of the character an actor or actress plays in this movie. This SHOULD be a sub-tag of an ACTOR tag in order to not cause ambiguities.
WRITTEN_BY | UTF-8 | The author of the story or script (used for movies and TV shows).
SCREENPLAY_BY | UTF-8 | The author of the screenplay or scenario (used for movies and TV shows).
EDITED_BY | UTF-8 | This is akin to the "IEDT" tag in [RIFF.tags].
PRODUCER | UTF-8 | Produced by. This is akin to the "IPRO" tag in [RIFF.tags].
COPRODUCER | UTF-8 | The name of a co-producer.
EXECUTIVE_PRODUCER | UTF-8 | The name of an executive producer.
DISTRIBUTED_BY | UTF-8 | This is akin to the "IDST" tag in [RIFF.tags].
MASTERED_BY | UTF-8 | The engineer who mastered the content for a physical medium or for digital distribution.
ENCODED_BY | UTF-8 | This is akin to the "TENC" tag in [ID3v2.3].
MIXED_BY | UTF-8 | DJ mix by the artist specified
REMIXED_BY | UTF-8 | Interpreted, remixed, or otherwise modified by. This is akin to the "TPE4" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
PRODUCTION_STUDIO | UTF-8 | This is akin to the "ISTD" tag in [RIFF.tags].
THANKS_TO | UTF-8 | A very general tag for everyone else that wants to be listed.
PUBLISHER | UTF-8 | This is akin to the "TPUB" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
LABEL | UTF-8 | The record label or imprint on the disc.
Search and Classification
Search and Classification tags
Tag Name | Type | Description
GENRE | UTF-8 | The main genre (classical, ambient-house, synthpop, sci-fi, drama, etc.). The format follows the "TCON" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
MOOD | UTF-8 | Intended to reflect the mood of the item with a few keywords (e.g., "Romantic", "Sad" or "Uplifting"). The format follows that of the "TMOO" tag in [ID3v2.4] when the TargetTypeValue is 30 (TRACK).
ORIGINAL_MEDIA_TYPE | UTF-8 | Describes the original type of the media, such as, "DVD", "CD", "computer image," "drawing," "lithograph," and so forth. This is akin to the "TMED" tag in [ID3v2.4].
CONTENT_TYPE | UTF-8 | The type of the item (e.g., Documentary, Feature Film, Cartoon, Music Video, Music, Sound FX).
SUBJECT | UTF-8 | Describes the topic of the file, such as "Aerial view of Seattle."
DESCRIPTION | UTF-8 | A short description of the content, such as "Two birds flying."
KEYWORDS | UTF-8 | Keywords to the item separated by a comma, used for searching.
SUMMARY | UTF-8 | A plot outline or a summary of the story.
SYNOPSIS | UTF-8 | A description of the story line of the item.
INITIAL_KEY | UTF-8 | The initial key that a musical track starts in. The format is identical to "TKEY" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
PERIOD | UTF-8 | Describes the period that the piece is from or about. For example, "Renaissance".
LAW_RATING | UTF-8 | Depending on the "COUNTRY" it's the format of the rating of a movie (P, R, X in the USA, an age in other countries or a URI defining a logo).
Temporal Information
All tags in this section use the Date format defined in Section 3.2.2.1.
Temporal Information tags
Tag Name | Type | Description
DATE_RELEASED | UTF-8 | The time that the item was originally released. This is akin to the "TDRL" tag in [ID3v2.4] when the TargetTypeValue is 30 (TRACK).
DATE_RECORDED | UTF-8 | The time that the recording began. This is akin to the "TDRC" tag in [ID3v2.4] when the TargetTypeValue is 30 (TRACK).
DATE_ENCODED | UTF-8 | The time that the encoding of this item was completed began. This is akin to the "TDEN" tag in [ID3v2.4] when the TargetTypeValue is 30 (TRACK).
DATE_TAGGED | UTF-8 | The time that the tags were done for this item. This is akin to the "TDTG" tag in [ID3v2.4] when the TargetTypeValue is 30 (TRACK).
DATE_DIGITIZED | UTF-8 | The time that the item was transferred to a digital medium. This is akin to the "IDIT" tag in [RIFF.tags].
DATE_WRITTEN | UTF-8 | The time that the writing of the music/script began.
DATE_PURCHASED | UTF-8 | Information on when the file was purchased; see also Section 4.12 on purchase tags.
DATE_STARTED | UTF-8 | When the information of the parent SimpleTag element starts being valid. The information of the parent SimpleTag element is only valid between this date and the "DATE_ENDED" date of the same level. The "DATE_ENDED" is OPTIONAL. If empty or omitted the end date is unknown.
DATE_ENDED | UTF-8 | When the information is not valid anymore. The information of the parent SimpleTag element is only valid between the "DATE_STARTED" date of the same level and this date. The "DATE_STARTED" is OPTIONAL. If empty or omitted the start date is unknown.
Spatial Information
Spatial Information tags
Tag Name | Type | Description
RECORDING_LOCATION | UTF-8 | The location where the item was recorded, using the Country Code format defined in Section 3.2.2.3. This code is followed by a comma, then more detailed information such as state/province, another comma, and then city. For example, "US, Texas, Austin". This will allow for easy sorting. It is okay to only store the country, or the country and the state/province. More detailed information can be added after the city through the use of additional commas. In cases where the province/state is unknown, but you want to store the city, simply leave a space between the two commas. For example, "US, , Austin".
COMPOSITION_LOCATION | UTF-8 | Location that the item was originally designed/written, using the Country Code format defined in Section 3.2.2.3. This code is followed by a comma, then more detailed information such as state/province, another comma, and then city. For example, "US, Texas, Austin". This will allow for easy sorting. It is okay to only store the country, or the country and the state/province. More detailed information can be added after the city through the use of additional commas. In cases where the province/state is unknown, but you want to store the city, simply leave a space between the two commas. For example, "US, , Austin".
COMPOSER_NATIONALITY | UTF-8 | Nationality of the main composer of the item, mostly for classical music, using the Country Code format defined in Section 3.2.2.3.
Personal
Personal tags
Tag Name | Type | Description
COMMENT | UTF-8 | Any comment related to the content.
PLAY_COUNTER | UTF-8 | The number of time the item has been played.
RATING | UTF-8 | A numeric value defining how much a person likes the song/movie. The number is between 0 and 5 with stored using the Float number defined in Section 3.2.2.2 (e.g., 2.7), 5(.0) being the highest possible rating. Other rating systems with different ranges will have to be scaled.
Technical Information
Technical Information tags
Tag Name | Type | Description
ENCODER | UTF-8 | The software or hardware used to encode this item. ("LAME" or "XviD")
ENCODER_SETTINGS | UTF-8 | A list of the settings used for encoding this item. No specific format.
BPS | UTF-8 | The average bits per second of the specified item stored using the Float number defined in Section 3.2.2.2. This is only the data in the Block(s), and excludes headers and any container overhead.
FPS | UTF-8 | The average frames per second of the specified item. This is typically the average number of Blocks per second stored using the Float number defined in Section 3.2.2.2. In the event that lacing is used, each laced chunk is to be counted as a separate frame.
BPM | UTF-8 | Average number of beats per minute in the complete target (e.g., a chapter) stored using the Float number defined in Section 3.2.2.2.
MEASURE | UTF-8 | In music, a measure is a unit of time in Western music like "4/4". It represents a regular grouping of beats, a meter, as indicated in musical notation by the time signature. The majority of the contemporary rock and pop music you hear on the radio these days is written in the 4/4 time signature.
TUNING | UTF-8 | It is saved as a frequency in hertz to allow near-perfect tuning of instruments to the same tone as the musical piece (e.g., "441.34" in Hertz). The values is stored using the Float number defined in Section 3.2.2.2.
REPLAYGAIN_GAIN | UTF-8 | The gain to apply to reach 89dB SPL on playback. The value is computed according to the [ReplayGain] standard. The value in decibels (dB) is stored as a string (e.g., "-0.42 dB"). The decibel unit is OPTIONAL. Note that ReplayGain information can be found at all TargetType levels (track, album, etc).
REPLAYGAIN_PEAK | UTF-8 | The maximum absolute peak amplitude of the item. The value is computed according to the [ReplayGain] standard. The value is a normalized absolute sample value of the target audio, using the Float number defined in Section 3.2.2.2 (e.g., "1.0129"). Note that ReplayGain information can be found at all TargetType levels (track, album, etc).
Identifiers
Identifiers tags
Tag Name | Type | Description
ISRC | UTF-8 | The International Standard Recording Code [ISRC], excluding the "ISRC" prefix and including hyphens.
MCDI | binary | This is a binary dump of the TOC of the CDROM that this item was taken from. This holds the same information as the "MCDI" in [ID3v2.3] when the TargetTypeValue is 50 (ALBUM).
ISBN | UTF-8 | International Standard Book Number [ISBN].
BARCODE | UTF-8 | European Article Numbering EAN-13 barcode defined in [GS1] General Specifications.
CATALOG_NUMBER | UTF-8 | A label-specific string used to identify the release -- for example, TIC 01.
LABEL_CODE | UTF-8 | A 4-digit or 5-digit number to identify the record label, typically printed as (LC) xxxx or (LC) 0xxxx on CDs medias or covers (only the number is stored).
LCCN | UTF-8 | Library of Congress Control Number [LCCN].
IMDB | UTF-8 | Internet Movie Database [IMDb] title identifier. "tt" followed by at least 7 digits for Movies, TV Shows, and Episodes.
TMDB | UTF-8 | The Movie DB "movie_id" or "tv_id" identifier for movies/TV shows [MovieDB]. The variable length digits string MUST be prefixed with either "movie/" or "tv/".
TVDB | UTF-8 | The TV Database "Series ID" or "Episode ID" identifier for TV shows [TheTVDB]. Variable length all-digits string identifying a TV Show to use with the "series/{id}" API.
TVDB2 | UTF-8 | The TV Database [TheTVDB] tag which can include movies. The variable length digits string representing a "Series ID", "Episode ID" or "Movie ID" identifier MUST be prefixed with "series/", "episodes/", or "movies/", respectively.
Commercial
Commercial tags
Tag Name | Type | Description
PURCHASE_ITEM | UTF-8 | URL to purchase this file using the URL format defined in [RFC3986]. This is akin to the "WPAY" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
PURCHASE_INFO | UTF-8 | Information on where to purchase this album using the URL format defined in [RFC3986]. This is akin to the "WCOM" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
PURCHASE_OWNER | UTF-8 | Information on the person who purchased the file. This is akin to the "TOWN" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
PURCHASE_PRICE | UTF-8 | The amount paid for entity, using the Float number defined in Section 3.2.2.2. The currency is not included. For instance, you would store "15.59" instead of "$15.59USD".
PURCHASE_CURRENCY | UTF-8 | The currency type used to pay for the entity. Use [ISO4217] for the 3 letter alphabetic code.
Legal
Legal tags
Tag Name | Type | Description
COPYRIGHT | UTF-8 | The copyright information as per the copyright holder. This is akin to the "TCOP" tag in [ID3v2.3] when the TargetTypeValue is 30 (TRACK).
PRODUCTION_COPYRIGHT | UTF-8 | The copyright information as per the production copyright holder. This is akin to the "TPRO" tag in [ID3v2.4] when the TargetTypeValue is 30 (TRACK).
LICENSE | UTF-8 | The license applied to the content (like Creative Commons variants).
TERMS_OF_USE | UTF-8 | The terms of use for this item. This is akin to the "USER" tag in [ID3v2.3].
Notes
In the Target list, a logical OR is applied on all tracks, a logical OR is applied on all chapters. Then a logical AND is applied between the Tracks list and the Chapters list to know if an element belongs to this Target.
Security Considerations
This document inherits security considerations from the EBML [RFC8794] and Matroska [RFC9559] documents.
Tag values can be either TagString or TagBinary blobs. In both cases issues can happen if the parsing of the data fails.
Most of the time strings are kept as-is and don't pose a security issue, apart from invalid UTF-8 values.
String tags that are parsed like "REPLAYGAIN_GAIN" or "REPLAYGAIN_PEAK" defined in Section 4.10 or string tags following the rules from Section 3.2.2 or string tags following other strict formats like URLs may cause issues when the string is bogus or in an unexpected format.
Binary tags that need to be parsed like "MCDI" defined in Section 4.11 may cause issues when the data is bogus or incomplete.
Due to the nature of nested SimpleTag, it is possible to exhaust the memory of the host app by using very deep nesting. An host app MAY add some limits to the amount of nesting possible to avoid such issues.
IANA Considerations
Matroska Tags Names Registry
IANA has created a new registry called the "Matroska Tag Names" registry.
To register a new Tag Name in this registry, one needs a Name, a Type, a Change Controller, and an optional Reference to a document describing the Element ID.
The Name corresponds to the value stored in the TagName element. The Name SHOULD always be written in all capital letters and contain no space as defined in Section 3.2,
The Type corresponds to which element will be stored the tag value. There can be 3 values for the Type:
- UTF-8: the value of the Tag is stored in TagString,
- binary: the value of the Tag is stored in TagBinary,
- nested: the tag doesn't contain a value, only nested tags inside.
Matroska Tag Names Values found in this document are assigned as initial values as follows:
Initial Contents of "Matroska Tag Names" Registry
Tag Name | Tag Type | Reference
ORIGINAL | nested | This document, Section 4.1
SAMPLE | nested | This document, Section 4.1
COUNTRY | UTF-8 | This document, Section 4.1
TOTAL_PARTS | UTF-8 | This document, Section 4.2
PART_NUMBER | UTF-8 | This document, Section 4.2
PART_OFFSET | UTF-8 | This document, Section 4.2
TITLE | UTF-8 | This document, Section 4.3
SUBTITLE | UTF-8 | This document, Section 4.3
URL | UTF-8 | This document, Section 4.4
SORT_WITH | UTF-8 | This document, Section 4.4
INSTRUMENTS | UTF-8 | This document, Section 4.4
EMAIL | UTF-8 | This document, Section 4.4
ADDRESS | UTF-8 | This document, Section 4.4
FAX | UTF-8 | This document, Section 4.4
PHONE | UTF-8 | This document, Section 4.4
ARTIST | UTF-8 | This document, Section 4.5
LEAD_PERFORMER | UTF-8 | This document, Section 4.5
ACCOMPANIMENT | UTF-8 | This document, Section 4.5
COMPOSER | UTF-8 | This document, Section 4.5
ARRANGER | UTF-8 | This document, Section 4.5
LYRICS | UTF-8 | This document, Section 4.5
LYRICIST | UTF-8 | This document, Section 4.5
CONDUCTOR | UTF-8 | This document, Section 4.5
DIRECTOR | UTF-8 | This document, Section 4.5
ASSISTANT_DIRECTOR | UTF-8 | This document, Section 4.5
DIRECTOR_OF_PHOTOGRAPHY | UTF-8 | This document, Section 4.5
SOUND_ENGINEER | UTF-8 | This document, Section 4.5
ART_DIRECTOR | UTF-8 | This document, Section 4.5
PRODUCTION_DESIGNER | UTF-8 | This document, Section 4.5
CHOREGRAPHER | UTF-8 | This document, Section 4.5
COSTUME_DESIGNER | UTF-8 | This document, Section 4.5
ACTOR | UTF-8 | This document, Section 4.5
CHARACTER | UTF-8 | This document, Section 4.5
WRITTEN_BY | UTF-8 | This document, Section 4.5
SCREENPLAY_BY | UTF-8 | This document, Section 4.5
EDITED_BY | UTF-8 | This document, Section 4.5
PRODUCER | UTF-8 | This document, Section 4.5
COPRODUCER | UTF-8 | This document, Section 4.5
EXECUTIVE_PRODUCER | UTF-8 | This document, Section 4.5
DISTRIBUTED_BY | UTF-8 | This document, Section 4.5
MASTERED_BY | UTF-8 | This document, Section 4.5
ENCODED_BY | UTF-8 | This document, Section 4.5
MIXED_BY | UTF-8 | This document, Section 4.5
REMIXED_BY | UTF-8 | This document, Section 4.5
PRODUCTION_STUDIO | UTF-8 | This document, Section 4.5
THANKS_TO | UTF-8 | This document, Section 4.5
PUBLISHER | UTF-8 | This document, Section 4.5
LABEL | UTF-8 | This document, Section 4.5
GENRE | UTF-8 | This document, Section 4.6
MOOD | UTF-8 | This document, Section 4.6
ORIGINAL_MEDIA_TYPE | UTF-8 | This document, Section 4.6
CONTENT_TYPE | UTF-8 | This document, Section 4.6
SUBJECT | UTF-8 | This document, Section 4.6
DESCRIPTION | UTF-8 | This document, Section 4.6
KEYWORDS | UTF-8 | This document, Section 4.6
SUMMARY | UTF-8 | This document, Section 4.6
SYNOPSIS | UTF-8 | This document, Section 4.6
INITIAL_KEY | UTF-8 | This document, Section 4.6
PERIOD | UTF-8 | This document, Section 4.6
LAW_RATING | UTF-8 | This document, Section 4.6
DATE_RELEASED | UTF-8 | This document, Section 4.7
DATE_RECORDED | UTF-8 | This document, Section 4.7
DATE_ENCODED | UTF-8 | This document, Section 4.7
DATE_TAGGED | UTF-8 | This document, Section 4.7
DATE_DIGITIZED | UTF-8 | This document, Section 4.7
DATE_WRITTEN | UTF-8 | This document, Section 4.7
DATE_PURCHASED | UTF-8 | This document, Section 4.7
DATE_STARTED | UTF-8 | This document, Section 4.7
DATE_ENDED | UTF-8 | This document, Section 4.7
RECORDING_LOCATION | UTF-8 | This document, Section 4.8
COMPOSITION_LOCATION | UTF-8 | This document, Section 4.8
COMPOSER_NATIONALITY | UTF-8 | This document, Section 4.8
COMMENT | UTF-8 | This document, Section 4.9
PLAY_COUNTER | UTF-8 | This document, Section 4.9
RATING | UTF-8 | This document, Section 4.9
ENCODER | UTF-8 | This document, Section 4.10
ENCODER_SETTINGS | UTF-8 | This document, Section 4.10
BPS | UTF-8 | This document, Section 4.10
FPS | UTF-8 | This document, Section 4.10
BPM | UTF-8 | This document, Section 4.10
MEASURE | UTF-8 | This document, Section 4.10
TUNING | UTF-8 | This document, Section 4.10
REPLAYGAIN_GAIN | UTF-8 | This document, Section 4.10
REPLAYGAIN_PEAK | UTF-8 | This document, Section 4.10
ISRC | UTF-8 | This document, Section 4.11
MCDI | binary | This document, Section 4.11
ISBN | UTF-8 | This document, Section 4.11
BARCODE | UTF-8 | This document, Section 4.11
CATALOG_NUMBER | UTF-8 | This document, Section 4.11
LABEL_CODE | UTF-8 | This document, Section 4.11
LCCN | UTF-8 | This document, Section 4.11
IMDB | UTF-8 | This document, Section 4.11
TMDB | UTF-8 | This document, Section 4.11
TVDB | UTF-8 | This document, Section 4.11
TVDB2 | UTF-8 | This document, Section 4.11
PURCHASE_ITEM | UTF-8 | This document, Section 4.12
PURCHASE_INFO | UTF-8 | This document, Section 4.12
PURCHASE_OWNER | UTF-8 | This document, Section 4.12
PURCHASE_PRICE | UTF-8 | This document, Section 4.12
PURCHASE_CURRENCY | UTF-8 | This document, Section 4.12
COPYRIGHT | UTF-8 | This document, Section 4.13
PRODUCTION_COPYRIGHT | UTF-8 | This document, Section 4.13
LICENSE | UTF-8 | This document, Section 4.13
TERMS_OF_USE | UTF-8 | This document, Section 4.13
References
Normative References
[GS1]

GS1 General Specifications
January 2020
GS1 20.0
[ID3v2.3]

ID3 tag version 2.3.0
Martin Nilsson
Dirk Mahoney, Ed.
Johan Sundstrom, Ed.
3 February 1999
[ID3v2.4]

ID3 tag version 2.4.0 - Native Frames
Martin Nilsson
1 November 2000
[IMDb]

IMDb data key concepts
Internet Movie Database
[ISBN]

ISBN Users' Manual
International ISBN Agency
December 2017
[ISO4217]

ISO 4217 Currency codes
International Organization for Standardization
August 2015
ISO 4217:2015
[ISRC]

International Standard Recording Code (ISRC) Handbook
International ISRC Registration Authority
2021
IFPI 4th Edition
[LCCN]

Library Of Congress Control Number
United States Library Of Congress
October 1999
[MovieDB]

The Movie Database API
The Movie Database
[ReplayGain]

ReplayGain 1.0 specification
David Robinson
10 July 2001
[TheTVDB]

TVDB API V4
The TVDB
Informative References
[OrbUltraworld]

Orb - The Orb's Adventures Beyond The Ultraworld
Discogs
[RIFF.tags]

RIFF Tags
Exiftool
[RFC9559]
[RFC2119]
[RFC8174]
[RFC3339]
[RFC5646]
[RFC3986]
[RFC5322]
[RFC8794]