# ID3 (tag)

ID3 is de naam van een veelgebruikte conventie om metadata op te nemen in MPEG-bestanden. Deze metadata bevat gegevens zoals de titel, artiest, albumtracknummer en allerlei andere informatie over het bestand waarin het is opgenomen.

## ID3-versies

Er zijn twee onafhankelijke ID3-versies: ID3v1 en ID3v2.

### ID3v1

ID3v1 is ontworpen door Eric Kemp in 1996 en werd spoedig de de-factostandaard voor het opslaan van metadata in mp3's. De ID3v1-tag beslaat 128 bytes die aan het eind van de file worden toegevoegd, beginnend met de tekst TAG. Sommige spelers gaven een korte storing tijdens het lezen van de tag, de nieuwe gaan er goed mee om en slaan het afspelen ervan over.
ID3v1 werd door Michael Mutschler in 1997 uitgebreid door het laatste byte van het nauwelijks gebruikte "comment"-veld voor het tracknummer te gebruiken. Deze tags worden aangeduid als ID3v1.1.

#### Problemen met ID3v1

De kleine tag biedt slechts plaats aan 30 bytes voor titel, artiest, album en een "comment", 4 bytes voor het jaar, en één byte om het genre aan te geven uit een lijst van 80 voorgedefinieerde namen. (Winamp breidde later deze lijst uit naar 128 namen). Namen en titels langer dan 30 tekens worden afgekapt.
Veel gebruikers hadden kritiek op de voorgedefinieerde genrelijst, waarin bijvoorbeeld Minimalist en Baroque ontbraken terwijl Christian Rap er wel in voorkomt.
ID3v1 mist ook de mogelijkheid voor ondersteuning van internationale tekens (Unicode, UTF8). Van de tekst wordt verwacht dat die in ISO 8859-1 wordt gecodeerd, in de praktijk werd over het algemeen de lokale codering van de gebruiker gebruikt, met als gevolg dat er in ID3v1-tags een brij van vreemde tekens kan voorkomen, ook wel mojibake genoemd.

### ID3v2

Als antwoord op de kritiek werd de nieuwe standaard ID3v2 ontworpen. De eerste publieke versie verscheen in 1998, en was een kind van vele vaders. Ofschoon deze de naam ID3 draagt, is er geen relatie met de standaard ID3v1.
ID3v2-tags hebben een variabele afmeting, en staan gewoonlijk aan het begin van het bestand, dit om streaming media te ondersteunen. Ze bestaan uit een aantal frames die elk een stukje van de metagegevens bevatten. De TIT2-frame bevat bijvoorbeeld de titel, de WOAR-frame, de URL van de website van de artiest. Frames kunnen 16Mb lang zijn. Bij tekstframes wordt de codering vermeld, mojibake komt echter nog regelmatig voor.
In de nieuwste ID3v2-standaard zijn er 84 frametypes, applicaties kunnen bovendien hun eigen types hebben. Er zijn standaardframes die coverart kunnen bevatten, BPM, copyright en licenties, songteksten, willekeurige tekst en URL-gegevens en meer.
Er zijn drie ID3v2-versies: v2.2, v2.3 en v2.4.

#### ID3v2.2

Dit was de eerste publieke versie van ID3v2. Het gebruikt drie "character frame identifiers" in plaats van vier (TT2 voor de titel in plaats van TIT2). De meest voorkomende v2.3- en v2.4-frames komen ook voor in v2.2.

#### ID3v2.3

ID3v2.3 breidt de "frame identifier" uit tot vier tekens, en een aantal frames zijn eraan toegevoegd. Een frame kan meerdere waarden bevatten, gescheiden door een / teken.

#### ID3v2.4

ID3v2.4 is de nieuwste versie van de standaard, gedateerd november 2000. Opmerkelijk is dat het de mogelijkheid biedt om tekst in UTF-8 te coderen, hetgeen al langer gebruikelijk was, maar nog niet officieel werd ondersteund in de standaard. Er wordt een "null"-byte gebruikt om meerdere waarden te scheiden, zodat het voormalige scheidingsteken '/' weer in tekst kan voorkomen.

#### ID3v2 Chapters

Het ID3v2-addendum werd in december 2005 gepubliceerd, maar wordt tot nu toe niet algemeen ondersteund. Het staat gebruikers toe eenvoudig naar speciale plaatsen of hoofdstukken in een geluidsbestand te springen, een gelijklopende slideshow van afbeeldingen en titels tijdens het afspelen is dan mogelijk. Bijzondere toepassingen waaronder Enhanced podcasts kunnen worden gebruikt met ID3v2.3- en ID3v2.4-tags.

#### Voordelen

Het grote voordeel van ID3V2-tags boven ID3V1-tags is dat die veel meer ruimte bieden, zodat ook bijvoorbeeld afbeeldingen kunnen worden opgenomen. Boven APE-tags hebben ID3V2-tags het voordeel dat de namen van de velden ("frames") voorgedefinieerd zijn, wat welhaast een vereiste is voor automatische verwerking.

#### Kritiek en problemen

In tegenstelling tot andere soorten tags (ID3V1, APE) worden ID3V2-tags vooraan in het bestand opgenomen. Wordt zo'n tag langer, dan moet de rest van het bestand opschuiven. Omdat MP3-bestanden heel groot kunnen zijn (honderden megabytes is geen uitzondering), kost dat enige tijd. Daarom pleegt in ID3V1-tags reserveruimte te worden opgenomen. Hoewel die meestal maar een gering percentage van het totaal beslaat is dat in essentie toch verspilling.
Ofschoon de verschillende versies van ID3v2 in wezen gelijk zijn is het moeilijk om een algoritme voor het lezen en schrijven te maken. Er zijn kleine maar cruciale verschillen tussen de versies. Zelfs binnen een versie verschilt de structuur van de frames aanzienlijk. Bijvoorbeeld het TIT2-frame dat de titel bevat, en USLT dat de songteksttranscriptie bevat, vereisen verschillende algoritmen voor het uitlezen van de gegevens. Voor de 84 verschillende frames zijn honderden subparsers nodig. Andere taggingformaten zoals APEv2 vermijden dit, en gebruiken een enkel key/value-paar voor de interne structuur van al de frames.
ID3v2 slaat veel zaken op in de tag die in het algemeen aan het audioformaat zelf worden overgelaten. Enkele voorbeelden zijn het TLEN-frame dat de audiolengte bevat, en het AENC-frame dat het encryptieschema voor het geluid bevat. (Echter, de informatie die TLEN oplevert wordt meestal niet geschat. In het algemeen kan de duur van een variabele-bitsnelheid-stream pas na onderzoek van al de frames van de gehele stream worden berekend. Zodoende kan TLEN bruikbaar zijn voor streaming audio en hardware met beperkingen. Overigens wordt in MP3-bestanden met variabele bitsnelheid meestal 'Xing' (of 'Info')-informatie in het eerste MP3-frame opgenomen waarmee toch simpel de speeltijd kan worden berekend.)
Ondanks dat ID3v2.4 al enige tijd bestaat heeft het nog niet veel toepassing gekregen. Dit komt waarschijnlijk omdat de ID3v2-referentie-uitvoering het nog steeds niet kan lezen en schrijven. Ten gevolge van deze problemen gebruiken sommige tagging tools andere metadataformaten bij het vullen van MP3-tags. Weinig nieuwe audioformaten gebruiken ID3v2-tags; in plaats daarvan kiezen ze APEv2-tags of Ogg Vorbis-comments.
ID3-tags moeten eigenlijk worden overgeslagen door de routines die het geluid in MP3-bestanden weergeven, doch dit pleegt op een nogal simpele manier te gebeuren, namelijk door te zoeken naar elf achtereenvolgende '1'-bits. Die kenmerken een header van een MP3-frame. In de ID3-tag kunnen echter ook (toevallig) elf achtereenvolgende '1' bits voorkomen (bijvoorbeeld in een Unicode byte order mark), die in theorie tot bijgeluiden kunnen leiden. ID3v2.4 vermijdt op een nogal complexe manier elf achtereenvolgende '1'-bits.

## ID3-tags bewerken

In de volgende besturingssystemen of programma's kan de ID3-tags worden bewerkt.

### In Windows

ID3 tags kunnen in Windows vanaf versie 7 worden bewerkt door met de rechtermuisknop op een bestand te klikken en vervolgens voor Properties (Eigenschappen) te kiezen. Op het tabblad (details) kan bijna alles aangepast worden. Windows 7 kan bovendien, in tegenstelling tot Windows XP, een albumcover wijzigen via de ingebouwde muziekspeler (Windows Media Player).

### Andere software

Andere software waarmee ID3-tags gemanipuleerd kunnen worden, zijn onder meer:
* Apple iTunes
* Windows Media Player
* Foobar2000 (freewaremuziekspeler)
* MediaMonkey (freewaremuziekspeler)
* Mp3tag
* Winamp
* EasyTAG (Linux)
* eyeD3 (op elk platform met Python)
Een tag-editor, zoals te vinden is in vele, zo niet de meeste MP3-decodeertoepassingen, leest ID3-taginformatie juist voor dit doel, hetgeen kenmerken zoals batch-processing (massaverwerking van gegevens), gebaseerd op ID3-tags, mogelijk maakt. Het is dan niet nodig om de tags van elk bestand handmatig te bewerken. Het moet vermeld worden dat sommige tags helemaal geen tags zijn, maar enkel apart opgeslagen informatie voor een muziekbibliotheek van een programma. Zowel met Winamp als met Windows Media Player kan geavanceerde taginformatie worden bewerkt en daarmee het bestand gewijzigd worden, maar ook kunnen de gegevens voor het bestand alleen binnen het programma worden aangepast, zonder het bestand zelf te wijzigen.