From Wikipedia, the free encyclopedia
Jump to: navigation, search
For other uses, see ID3 (disambiguation).

ID3 is a metadata container most often used in conjunction with the MP3 audio file format. It allows information such as the title, artist, album, track number, and other information about the file to be stored in the file itself.

There are two unrelated versions of ID3: ID3v1 and ID3v2.

Although ID3 is sometimes referred to as a standard, the term applies only in the de facto sense, as no standardization body was involved in its creation nor has such an organization given it a formal approval status.[1]


After the creation of the MP3 standard, there appeared a problem with storing data about the file. Standalone MP3s didn't have any special method of doing this. In 1996 Eric Kemp had the idea to add a small chunk of data to the audio file, thus solving the problem. The method, now known as ID3v1, quickly became the de facto standard for storing metadata in MP3s.[2] The format was released by Damaged Cybernetics, an underground group that specialized in cracking console gaming systems. There was no identifying information for any of the ROMs,[clarification needed] thus an ID tagging system was created to make tracking easier. Eric and associates carried this over into MP3 files. This format was used for a number of file formats unknown at that time.[citation needed]

The ID3v1 tag occupies 128 bytes, beginning with the string TAG 128 bytes from the end of the file. The tag was placed at the end of the file to maintain compatibility with older media players. Some players would play a small burst of static when they read the tag, but most ignored it, and almost all modern players will correctly skip it. This tag allows 30 bytes each for the title, artist, album, and a "comment", four bytes for the year, and a byte to identify the genre of the song from a predefined list of 80 values (Winamp later extended this list to 148 values).

One improvement to ID3v1 was made by Michael Mutschler in 1997. Since the comment field was too small to write anything useful, he decided to trim it by two bytes and use those two bytes to store the track number. Such tags are referred to as ID3v1.1.[2]


Strings are either space- or zero-padded. Unset string entries are filled using an empty string. ID3v1 is 128 bytes long.[3]

Field Length Description
header 3 "TAG"
title 30 30 characters of the title
artist 30 30 characters of the artist name
album 30 30 characters of the album name
year 4 A four-digit year
comment 28[4] or 30 The comment.
zero-byte[4] 1 If a track number is stored, this byte contains a binary 0.
track[4] 1 The number of the track on the album, or 0. Invalid, if previous byte is not a binary 0.
genre 1 Index in a list of genres, or 255

Extended tag[edit]

The extended tag is an extra data block before an ID3v1 tag, which extends the title, artist and album fields by 60 bytes each, offers a freetext genre, a one-byte (values 0–5) speed and the start and stop time of the music in the MP3 file, e.g., for fading in. If none of the fields are used, it will be automatically omitted.

Some programs supporting ID3v1 tags can read the extended tag, but writing may leave stale values in the extended block. The extended block is not an official standard, and is only supported by few programs, not including XMMS or Winamp. The extended tag is sometimes referred to as the "enhanced" tag.


Note: The extended tag is 227 bytes long, and placed before the ID3v1 tag.

Field Length Description
header 4 "TAG+"
title 60 60 characters of the title
artist 60 60 characters of the artist name
album 60 60 characters of the album name
speed 1 0=unset, 1=slow, 2= medium, 3=fast, 4=hardcore
genre 30 A free-text field for the genre
start-time 6 the start of the music as mmm:ss
end-time 6 the end of the music as mmm:ss

List of genres[edit]

ID3v1 pre-defines a set of genres denoted by numerical codes. Winamp extended the list by adding more genres in its own music player, which were later adopted by others. However, support for the extended Winamp list is not universal. In some cases, only the genres up to 125 are supported.[5][6]

Core specification[edit]

0 to 19
ID Hex Genre
00 00 Blues
01 01 Classic Rock
02 02 Country
03 03 Dance
04 04 Disco
05 05 Funk
06 06 Grunge
07 07 Hip-Hop
08 08 Jazz
09 09 Metal
10 0A New Age
11 0B Oldies
12 0C Other
13 0D Pop
14 0E Rhythm and Blues
15 0F Rap
16 10 Reggae
17 11 Rock
18 12 Techno
19 13 Industrial
20 to 39
ID Hex Genre
20 14 Alternative
21 15 Ska
22 16 Death Metal
23 17 Pranks
24 18 Soundtrack
25 19 Euro-Techno
26 1A Ambient
27 1B Trip-Hop
28 1C Vocal
29 1D Jazz & Funk
30 1E Fusion
31 1F Trance
32 20 Classical
33 21 Instrumental
34 22 Acid
35 23 House
36 24 Game
37 25 Sound Clip
38 26 Gospel
39 27 Noise
40 to 59
ID Hex Genre
40 28 Alternative Rock
41 29 Bass
42 2A Soul
43 2B Punk rock
44 2C Space
45 2D Meditative
46 2E Instrumental Pop
47 2F Instrumental Rock
48 30 Ethnic
49 31 Gothic
50 32 Darkwave
51 33 Techno-Industrial
52 34 Electronic
53 35 Pop-Folk
54 36 Eurodance
55 37 Dream
56 38 Southern Rock
57 39 Comedy
58 3A Cult
59 3B Gangsta
60 to 79
ID Hex Genre
60 3C Top 40
61 3D Christian Rap
62 3E Pop/Funk
63 3F Jungle
64 40 Native American
65 41 Cabaret
66 42 New Wave
67 43 Psychedelic
68 44 Rave
69 45 Showtunes
70 46 Trailer
71 47 Lo-Fi
72 48 Tribal
73 49 Acid Punk
74 4A Acid Jazz
75 4B Polka
76 4C Retro
77 4D Musical
78 4E Rock & Roll
79 4F Hard Rock

Winamp Extensions[edit]

80 to 99
ID Hex Genre
80 50 Folk
81 51 Folk-Rock
82 52 National Folk
83 53 Swing
84 54 Fast Fusion
85 55 Bebop
86 56 Latin
87 57 Revival
88 58 Celtic
89 59 Bluegrass
90 5A Avantgarde
91 5B Gothic Rock
92 5C Progressive Rock
93 5D Psychedelic Rock
94 5E Symphonic Rock
95 5F Slow Rock
96 60 Big Band
97 61 Chorus
98 62 Easy Listening
99 63 Acoustic
100 to 119
ID Hex Genre
100 64 Humour
101 65 Speech
102 66 Chanson
103 67 Opera
104 68 Chamber Music
105 69 Sonata
106 6A Symphony
107 6B Booty Bass
108 6C Primus
109 6D Porn groove
110 6E Satire
111 6F Slow Jam
112 70 Club
113 71 Tango
114 72 Samba
115 73 Folklore
116 74 Ballad
117 75 Power Ballad
118 76 Rhythmic Soul
119 77 Freestyle
120 to 141
ID Hex Genre
120 78 Duet
121 79 Punk rock
122 7A Drum Solo
123 7B A capella
124 7C Euro-House
125 7D Dance Hall
126 7E Goa Trance
127 7F Drum & Bass
128 80 Club-House
129 81 Hardcore Techno
130 82 Terror
131 83 Indie
132 84 BritPop
133 85 Afro-punk
134 86 Polsk Punk
135 87 Beat
136 88 Christian Gangsta Rap
137 89 Heavy Metal
138 8A Black Metal
139 8B Crossover
140 8C Contemporary Christian
141 8D Christian Rock
142 to 147 (from Winamp version 1.91 – June 1998)
ID Hex Genre
142 8E Merengue
143 8F Salsa
144 90 Thrash Metal
145 91 Anime
146 92 Jpop
147 93 Synthpop
148 to 191 (from Winamp version 5.6 – November 2010)
ID Hex Genre
148 94 Abstract
149 95 Art Rock
150 96 Baroque
151 97 Bhangra
152 98 Big Beat
153 99 Breakbeat
154 9A Chillout
155 9B Downtempo
156 9C Dub
157 9D EBM
158 9E Eclectic
159 9F Electro
160 A0 Electroclash
161 A1 Emo
162 A2 Experimental
163 A3 Garage
164 A4 Global
165 A5 IDM
166 A6 Illbient
167 A7 Industro-Goth
168 A8 Jam Band
169 A9 Krautrock
170 AA Leftfield
171 AB Lounge
172 AC Math Rock
173 AD New Romantic
174 AE Nu-Breakz
175 AF Post-Punk
176 B0 Post-Rock
177 B1 Psytrance
178 B2 Shoegaze
179 B3 Space Rock
180 B4 Trop Rock
181 B5 World Music
182 B6 Neoclassical
183 B7 Audiobook
184 B8 Audio Theatre
185 B9 Neue Deutsche Welle
186 BA Podcast
187 BB Indie Rock
188 BC G-Funk
189 BD Dubstep
190 BE Garage Rock
191 BF Psybient


Id3v2 logo.png

In 1998, a new specification called ID3v2 was created by multiple contributors.[7] Although it bears the name ID3, its structure has virtually no similarity with ID3v1.

ID3v2 tags are of variable size, and usually occur at the start of the file, to aid streaming media. They consist of a number of frames, each of which contains a piece of metadata. For example, the TIT2 frame contains the title, and the WOAR frame contains the URL of the artist's website. Frames can be up to 16MB in length, while total tag size is limited to 256MB. The internationalization problem was solved by allowing the encoding of strings not only in ISO-8859-1, but also in Unicode.

Textual frames are marked with an encoding byte.[8]

$00 – ISO-8859-1 (LATIN-1, Identical to ASCII for values smaller than 0x80).
$01 – UCS-2 (UTF-16 encoded Unicode with BOM), in ID3v2.2 and ID3v2.3.
$02 – UTF-16BE encoded Unicode without BOM, in ID3v2.4.
$03 – UTF-8 encoded Unicode, in ID3v2.4.

However, mojibake is still common when using local encodings instead of Unicode. In particular, some Japanese editors are known to use Shift JIS encoding, which usually has disastrous effects: it will assuredly not work with any standard-compliant software regardless of local settings (since it is not supported by the standard), assuredly not work outside Japan (since Shift JIS has very little support outside of Japan), and will not even work on all Japanese computers even with a specifically non-compliant reader (as it is software-dependent and settings-dependent).

There are 83 types of frames declared in the ID3v2.4.0 specification,[9] and applications can also define their own types. There are standard frames for containing cover art, BPM, copyright and license, lyrics, and arbitrary text and URL data, as well as other things. There are three versions of ID3v2:

  • ID3v2.2 was the first public version of ID3v2. It used three character frame identifiers rather than four (TT2 for the title instead of TIT2). Most of the common v2.3 and v2.4 frames have direct analogues in v2.2. Now this standard is considered obsolete.[10]
  • ID3v2.3 expanded the frame identifier to four characters, and added a number of frames. A frame can contain multiple values, separated with a null byte. This is the most widely used version of ID3v2 tags. [11]
  • ID3v2.4 is the latest version published, dated November 1, 2000. Notably, it allows textual data to be encoded in UTF-8, which was a common practice in earlier tags (despite the standard, since it was not supported yet) because it has several noticeable advantages over UTF-16. Another new feature allows the addition of a tag to the end of the file before other tags (like ID3v1). [12]

Windows Explorer and Windows Media Player cannot handle ID3v2.4 tags in any version, up to and including Windows 8 / Windows Media Player 12. Windows can understand ID3v2 up to and including version 2.3.[13][14]

ID3v2 rating tag issue[edit]

There is a loose de facto standard for implementation of song ratings. Most apps will display 0 to 5 stars for any given song, and how the stars are expressed can vary. For instance, when rating a song in iTunes, the rating is not embedded in the tag in the music file, but is instead stored in a separate database that contains all of the iTunes metadata. Other media players can embed rating tags in music files but some software creates its own tag frame or method. As a result, a song which is rated on one media player sometimes won't display the rating when played on other software or mobile device.[citation needed]

However, there is a "Popularimeter" frame in the ID3v2 specification meant for this purpose. The frame is called POPM and Windows Explorer, Windows Media Player, Winamp, foobar2000, media monkey, and other software all map roughly the same ranges of 0–255 to a 0–5 stars value for display.

The following list details how Windows Explorer reads and writes the POPM frame:

  • 224-255 = 5 stars when READ with Windows Explorer, writes 255
  • 160-223 = 4 stars when READ with Windows Explorer, writes 196
  • 096-159 = 3 stars when READ with Windows Explorer, writes 128
  • 032-095 = 2 stars when READ with Windows Explorer, writes 64
  • 001-031 = 1 star when READ with Windows Explorer, writes 1

Windows Explorer uses the following syntax:

Windows Media Player 9 Series | 255 | 0

The 0 is the play counter portion of POPM as per the ID3v2 POPM specification, which is not to be confused or conflated with the PCNT frame, which is a separate frame meant entirely for playcounts. If an app supports granularity however, it should write 1 for one full star, and then 2–31 would be granular points under one full star. Notably, the ID string Windows uses is not an email address, as called for in the specifications. Further, Windows Explorer and Windows Media Player up to and including Windows 7 and Windows Media Player 12 (possibly beyond)[clarification needed] contain a bug such that, if one were to use them to rate files, any Replay Gain tags one would have will be corrupted.[citation needed]

ID3v2 chapters[edit]

The ID3v2 Chapter Addendum was published in December 2005 but is not widely supported as yet. It allows users to jump easily to specific locations or chapters within an audio file and can provide a synchronized slide show of images and titles during playback. Typical applications include Enhanced podcasts and it can be used in ID3v2.3 or ID3v2.4 tags.[15]

ID3v2 embedded image extension[edit]

The metadata can also contain images of the following types:[16]

$00     Other
$01     32x32 pixels 'file icon' (PNG only)
$02     Other file icon
$03     Cover (front)
$04     Cover (back)
$05     Leaflet page
$06     Media (e.g. label side of CD)
$07     Lead artist/lead performer/soloist
$08     Artist/performer
$09     Conductor
$0A     Band/Orchestra
$0B     Composer
$0C     Lyricist/text writer
$0D     Recording Location
$0E     During recording
$0F     During performance
$10     Movie/video screen capture
$11     A bright coloured fish
$12     Illustration
$13     Band/artist logotype
$14     Publisher/Studio logotype

ID3v2 frame specification (Version 2.3)[edit]

Frame Description Notes
AENC Audio encryption
APIC Attached picture
COMM Comments
COMR Commercial frame
ENCR Encryption method registration
EQUA Equalization replaced by EQU2 in v2.4
ETCO Event timing codes
GEOB General encapsulated object
GRID Group identification registration
IPLS Involved people list replaced by TMCL and TIPL in v2.4
LINK Linked information
MCDI Music CD identifier
MLLT MPEG location lookup table
OWNE Ownership frame
PRIV Private frame
PCNT Play counter
POPM Popularimeter
POSS Position synchronisation frame
RBUF Recommended buffer size
RVAD Relative volume adjustment replaced by RVA2 in v2.4
RVRB Reverb
SYLT Synchronized lyric/text
SYTC Synchronized tempo codes
TALB Album/Movie/Show title
TBPM Beats per minute (BPM)
TCOM Composer
TCON Content type
TCOP Copyright message
TDAT Date replaced by TDRC in v2.4
TDLY Playlist delay
TENC Encoded by
TEXT Lyricist/Text writer
TFLT File type
TIME Time replaced by TDRC in v2.4
TIT1 Content group description
TIT2 Title/songname/content description
TIT3 Subtitle/Description refinement
TKEY Initial key
TLAN Language(s)
TLEN Length
TMED Media type
TOAL Original album/movie/show title
TOFN Original filename
TOLY Original lyricist(s)/text writer(s)
TOPE Original artist(s)/performer(s)
TORY Original release year replaced by TDOR in v2.4
TOWN File owner/licensee
TPE1 Lead performer(s)/Soloist(s)
TPE2 Band/orchestra/accompaniment
TPE3 Conductor/performer refinement
TPE4 Interpreted, remixed, or otherwise modified by
TPOS Part of a set
TPUB Publisher
TRCK Track number/Position in set
TRDA Recording dates replaced by TDRC in v2.4
TRSN Internet radio station name
TRSO Internet radio station owner
TSIZ Size deprecated in v2.4
TSRC International Standard Recording Code (ISRC)
TSSE Software/Hardware and settings used for encoding
TYER Year replaced by TDRC in v2.4
TXXX User defined text information frame
UFID Unique file identifier
USER Terms of use
USLT Unsynchronized lyric/text transcription
WCOM Commercial information
WCOP Copyright/Legal information
WOAF Official audio file webpage
WOAR Official artist/performer webpage
WOAS Official audio source webpage
WORS Official internet radio station homepage
WPAY Payment
WPUB Publishers official webpage
WXXX User defined URL link frame

Multiple values in v2.3 tags[edit]

The version 2.3 of the standard prescribes that some fields can contain multiple values separated by the "/" character[citation needed]. The fields that can contain multiple values are:


ID3v2 frame specification (Version 2.4 – delta respect to 2.3)[edit]

 EQUA replaced by the EQU2 frame
 IPLS replaced by the two frames TMCL and TIPL
 RVAD replaced by the RVA2 frame
 TDAT replaced by the TDRC frame
 TIME replaced by the TDRC frame
 TORY replaced by the TDOR frame
 TRDA replaced by the TDRC frame
 TYER replaced by the TDRC frame
 TSIZ deprecated.

New frames

 ASPI Audio seek point index
 EQU2 Equalisation
 RVA2 Relative volume adjustment
 SEEK Seek frame
 SIGN Signature frame
 TDEN Encoding time
 TDOR Original release time
 TDRC Recording time
 TDRL Release time
 TDTG Tagging time
 TIPL Involved people list
 TMCL Musician credits list
 TMOO Mood
 TPRO Produced notice
 TSOA Album sort order
 TSOP Performer sort order
 TSOT Title sort order
 TSST Set subtitle

Multiple values in v2.4 tags[edit]

Version 2.4 of the specification prescribes that the text fields (all the fields starting with a T except TXXX) can contain multiple values separated by a null character. The null character is the one represented by the termination code for the character encoding used.

Editing ID3 tags[edit]

See also: Tag editor

ID3 tags may be edited in a variety of ways. On some platforms the file's properties may be edited by viewing extended information in the file manager. Additionally most audio players allow editing single or groups of files. Editing groups of files is often referred to as "batch tagging". There are also specialized applications, called taggers, which concentrate specifically on editing the tags and related tasks. Some, such as puddletag offer advanced features such as advanced batch tagging or editing based on regular expressions.

Non-MP3-implementation and alternatives[edit]

ID3 tags were designed with MP3 in mind, so they would work without problems with MP3 and MP3Pro files. However, the tagsets are an independent part of the MP3 file and should be usable elsewhere. In practice, the only other format which widely uses ID3v2 tags is AIFF, where the tag is stored inside an IFF chunk named "ID3". The same could be accomplished in WAV, but isn't. The only tagging system in wide usage for WAV is the Broadcast Wave Format, stored as a RIFF chunk. Windows media ASF files (WMA, WMV) have their own tagging formats but also support ID3 Tags embedded as attributes.[17] MP4 also allows the embedding of an ID3 tag,[18] and this is widely supported, especially in Apple's iTunes, which uses MP4 standards in its audio and video file formats. Other container-based formats use their own tagging formats. An example of this is Ogg, which uses Vorbis comments. Adding ID3 tags to these would break the container structure. Earlier versions of Winamp such as 2.xx have been proven able to add ID3v1 and ID3v2 tags to MP1 and MP2 files.

See also[edit]


  1. ^ ID3 History page
  2. ^ a b Practical Common Lisp, p. 335.
  3. ^ For an implementation of ID3v1 in Python, see Dive Into Python, Chapter 5. Objects and Object-Orientation
  4. ^ a b c The track number is stored in the last two bytes of the comment field. If the comment is 29 or 30 characters long, no track number can be stored.
  5. ^ ID3 Tag Genre ID List
  6. ^ Template:Title=ID3 Genre List
  7. ^ ID3v2 Contributors
  8. ^ id3v2-00 -
  9. ^ "ID3v2.4.0 Native Frames". Retrieved 2012-12-27. 
  10. ^ Nilsson, Martin. "ID3 Developer Information". Retrieved 9 April 2011. 
  11. ^ Template:Title=ID3 tag version 2.3.0
  12. ^ Template:Title=ID3 tag version 2.4.0 - Native Frames
  13. ^ Bright, Peter (28 October 2012). "Music and Video in Windows 8: a work in progress". Retrieved 2012-10-29. 
  14. ^ "Microsoft support community". 11 January 2011. 
  15. ^ Newell, C. (2 December 2005). "ID3v2 Chapter Frame Addendum". Retrieved 2008-02-06. 
  16. ^ ID3 Tag Version 2.3.0
  17. ^ "Windows Media Developer Center: ID3 Tag Support". Microsoft Developer Network. Microsoft. Retrieved 2010-03-24. 
  18. ^ The 'MP4' Registration Authority

External links[edit]