ID3
From Free net encyclopedia
- This article is about the tagging format for MP3s. For the decision tree algorithm, see ID3 algorithm.
ID3 is a tagging format for MP3 files. It allows metadata such as the title, artist, album, track number, etc., to be stored in the MP3 file.
Contents |
Versions
ID3v1
ID3v1 was created by Eric "NamkraD" Kemp in 1996 and was the original de facto standard. Eric wrote a program named Studio3 and created this structure as a way of storing file metadata in the file itself. ID3v1 tag occupies 128 bytes at the end of the file, beginning with the string "TAG" so that a tag could be easily spotted by media players. Early MP3 players would occasionally react badly to data injected into the MPEG stream, either stopping play at that point, emitting a burst of noise, or (in the case of tags at the file's start) refusing to even open the file. To solve these problems, the tag was placed at the end of the file instead of at the beginning.
offset | length | description |
---|---|---|
0 | 3 | "TAG" identifier string. |
3 | 30 | Song title string. |
33 | 30 | Artist string. |
63 | 30 | Album string. |
93 | 4 | Year string. |
97 | 30 | Comment string. |
127 | 1 | Genre byte. |
Strings should be zero-padded, however in practice most parsers have treated a zero-byte as a terminating character and this allowed ID3v1.1 to be introduced while maintaining compatibility with existing software. Some old taggers pad strings with spaces instead, which causes ID3v1.1-compliant parsers to interpret the file as being track 32.
ID3v1.1
ID3v1.1, an extension created by Michael Mutschler in 1997, added a new track number field to ID3v1 while maintaining the original size of 128 bytes. This new field occupies the last two bytes of the ID3v1 comment field.
offset | length | description |
---|---|---|
0 | 3 | "TAG" identifier string. |
3 | 30 | Song title string. |
33 | 30 | Artist string. |
63 | 30 | Album string. |
93 | 4 | Year string. |
97 | 28 | Comment string. |
125 | 1 | Zero byte separator. |
126 | 1 | Track byte. |
127 | 1 | Genre byte. |
The specification insists that all of the strings listed here be encoded with ISO 8859-1. However, in order to support languages outside Western Europe, many programs will use the system's default locale encoding instead. This can lead to difficulties in decoding the strings on machines with another default locale.
Genres
ID3v1 defines genres numbered 0 through 79 and Winamp extends the list from 80 to 147.
ID3v2
ID3v2 greatly expanded ID3, adding many more fields and allowing those fields to be much longer. ID3v2 also defined a more extensible data structure with named tag fields and allowed information such as lyrics and images to be stored in the file. The ID3v2 information is stored as a large data block at the beginning of the file (or optionally at the end of the file as of ID3v2 2.4). An MP3 file with ID3v2 tag can be played safely on players that weren't designed for ID3v2 — because the tags lack a syncsignal, the decoder can determine that the tags don't contain audio information. The benefit of having a tag at the beginning of the file is that the software can obtain tag information even before reaching the end of the file, which is advantageous if the file is streamed. A disadvantage to having the tag at the beginning is when the tags are modified in length, the entire file needs to be re-written. ID3v2 supports Unicode so that internationalized tags can be used.
ID3v2 is often used to refer to 3 different subversions: ID3v2.2, ID3v2.3, and ID3v2.4. Many programs that claim ID3v2 support fail to mention which sub-version they actually use. It is still somewhat hard to find ID3v2.4 support in tag editors. It seems most editors can read all versions but most write in ID3v2.2 or ID3v2.3 The big problems are that they usually just don't tell what versions they are using, usually don't use the "code name" for the tag, and may not fully implement the standard correctly.
Main Features:
- The ID3v2 tag is a container format, just like IFF or PNG files, allowing new frames (chunks) as evolution proceeds.
- Residing in the beginning of the audio file makes it suitable for streaming.
- Has an 'unsynchronization scheme' to prevent ID3v2-incompatible players from attempting to play the tag.
- Maximum tag size is 256 megabytes and maximum frame size is 16 megabytes.
- Byte conservative and with the capability to compress data it keeps the files small.
- The tag supports Unicode.
- Isn't entirely focused on musical audio, but also other types of audio.
- Has several new text fields such as composer, conductor, media type, BPM, copyright message, etc. and the possibility to design your own as you see fit.
- Can contain lyrics as well as music-synced lyrics (karaoke) in almost any language.
- Is able to contain volume, balance, equalizer and reverb settings.
- Could be linked to CD-databases such as CDDB.
- Is able to contain images and just about any file you want to include.
- Supports enciphered information, linked information and web links.
Most important differences between the v2 versions:
v2.2 is considered deprecated, no well-known program still writes this tag version
by default, except Apple's iTunes.
One of the major differences between v2.3 and v2.4 are the supported text encodings:
v2.3 supports strings encoded with ISO-8859-1 and UTF-16 Unicode.
v2.4 adds support for UTF-8 Unicode encoding.
While v2 tags are normally prepended (i.e. written at the beginning of the audio file)
version 2.4 also allows tags to be appended (i.e. written at the end of the audio file).
Note: appending v2.4 tags is supported by practically no application or player, so using
this feature is not recommended.
Almost all programs and hardware players support v2.3, but some might not support
Unicode properly, even though Unicode encoding is clearly specified in the ID3v2 standard.
Even though it is still not widely supported, support for the latest
tag version 2.4 has been growing recently (in 2005 and 2006).
ID3v2.4 with UTF-8 encoding could be seen as the final & most flexible "incarnation"
of v2 tags, thus software & hardware developers are advised to upgrade their tag support
as soon as possible (note: v2.4 is actually quite an old standard, as it is from the year 2000).