# ID3-Tag

ID3 (engl. identify an MP3 „identifiziere eine MP3“) ist ein Format für Zusatzinformationen (Metadaten), die in Audiodateien des MP3-Formats enthalten sein können. Die einzelnen Informationseinheiten werden ID3-Tag genannt (englisch tag „Etikett“).

## Zweck

Bevor es ID3-Tags für Informationen wie den Namen des Albums, des Künstlers oder des Musik-Stils gab, musste der Datei- oder Verzeichnisname diese Angaben aufnehmen. Die Folge waren sehr lange Dateinamen und daher unübersichtliche Verzeichnisse. Ferner eignen sich Dateisysteme oft nicht für alle Sonderzeichen, die für manche Titel, Interpreten oder Albennamen nötig sind, sowie für die Länge der benötigten Dateinamen; auch unterscheiden sich oft die Zeichenkodierungen, zum Beispiel ISO 8859 und Unicode, Sonderzeichen wurden zwischen den verschiedenen code pages von ISO 8859 falsch interpretiert oder die Dateinamen werden bei der Übertragung über ein Netzwerk (genauer durch die Protokolle oder deren Implementierungen) verfälscht. Deshalb entschloss man sich, diese Metadaten direkt in den Audiodateien unterzubringen.
In Anlehnung an ID3 entwickelte sich ein ähnliches Verfahren für Bilddateien im JPEG-Format, welche das Datum und ähnliche Informationen, die Exif-Information, enthalten.
ID-Tags werden auch in Dateien mit synchronisierten Liedtexten im LRC-Format eingesetzt.

## Funktionsweise und Geschichte

Im MP3-Dateiformat sind Metainformationen standardmäßig nicht vorgesehen. ID3 ist auch in der neuesten Version ID3v2.4 nur ein informeller Standard, der bislang keinen Einzug in den MP3-Standard gefunden hat. Im Gegensatz zu neueren Formaten bzw. Containerformaten gibt es keine Unterscheidung zwischen Audio- und Metadaten, weshalb durch Mustererkennung herausgefunden werden muss, ob eines der nachfolgenden Formate in Betracht kommt.
Die beiden Hauptvarianten des ID3-Tag-Formats, ID3v1 und ID3v2, werden im Folgenden näher beschrieben.

## Versionen
### ID3v1

Die erste Version, ID3v1, wurde 1996 von Eric Kemp mit dem Programm „Studio3“ eingeführt. Um zu verhindern, dass ein Abspielprogramm oder -gerät versucht, die ID3v1-Daten als Audio-Informationen zu interpretieren, werden sie am Dateiende angefügt.
ID3v1 ist einfach gehalten und besteht einzig aus einem 128 Bytes großen Block mit festem Aufbau:
| Offset | Länge | Bedeutung |
| 0 | 3 | Kennung „TAG“ zur Kennzeichnung eines ID3v1-Blocks |
| 3 | 30 | Titel des Musikstücks |
| 33 | 30 | Künstler/Interpret |
| 63 | 30 | Album |
| 93 | 4 | Erscheinungsjahr |
| 97 | 30 | Beliebiger Kommentar |
| 127 | 1 | Genre |
Der Zeichensatz für die Textfelder ist nicht spezifiziert, üblich sind ASCII, ISO 8859-1 und Unicode, enkodiert als UTF-8. Dadurch kann es zu Fehlinterpretationen bei Umlauten, Zeichen nichtlateinischer Alphabete (z. B. des kyrillischen Alphabets) und Sonderzeichen kommen.
Obwohl ID3v1 zahlreiche Schwächen aufwies, verbreitete es sich sehr schnell. Die wesentlichen Nachteile sind:
* Keine Erweiterbarkeit um weitere Informationen
* Feste Länge der vorhandenen Datenfelder: Titel, Künstler und Album können nur mit maximal 30 Zeichen kodiert werden.
* Fehlende Aussage über die Zeichenkodierung der Zeichenketten
* Daten liegen am Ende: Für Dateien kein Problem, für Streaming allerdings unpraktisch, da die Metainformationen erst am Ende des Titels übertragen werden.

#### Genre

Das Genre wird als einzelnes Byte kodiert. Die Genredefinitionen 0–79 folgen der ID3-Tag-Spezifikation von 1999. Weitere Genres wurden sukzessive in späteren Winamp-Versionen eingeführt und setzten sich dann schnell durch, z. B. 80–110 im Dezember 1997, 111–115 im Januar 1998 mit Winamp 1.7, 116–141 im April 1998 mit Winamp 1.90, 142 bis 147 im Juni 1998 mit Winamp 1.91, später dann 148–191 mit Winamp 5.6.

### ID3v1.1

Eine Weiterentwicklung des ID3v1-Standards gestaltete sich schwierig, da die vorhandenen Felder bereits starr vorgegeben waren. Michael Mutschler gelang eine Erweiterung zu ID3v1.1. Dafür wurde das Kommentarfeld von 30 auf 28 Byte gekürzt. Darauf folgt ein Nullbyte, das sicherstellt, dass alle ID3-Reader die Auswertung der Zeichenketten beenden. Das freigewordene Byte an Position 126 bekam die Bedeutung Titelnummer.

### ID3v2

Wegen der Schwächen von ID3v1 wurde 1998 von Martin Nilsson und anderen ein neues Format entworfen, das den Namen ID3v2 erhielt. Die Zusatzinformationen werden dabei in einem Block vor oder seit ID3v2.4 auch nach den Audiodaten (dem MPEG-Stream) in die Datei eingefügt. Aktuell ist Version 4.0 (auch ID3v2.4.0) aus dem Jahr 2000.
Einen ID3v2-Block erkennt man am Header, dessen erste fünf Bytes aus der Zeichenkette „ID3“ und der ID3v2-Version (z. B. $04 00 für ID3v2.4) bestehen. ID3v2-Tags werden so kodiert, dass Geräte oder -programme, die ID3v2 zwar nicht verstehen, aber ungültige Informationen einfach überspringen, die Audiodateien fehlerfrei abspielen.
In der aktuellen Version 2.4 werden viele Zusatzinformationen spezifiziert, es gibt jedoch kaum eine Implementierung, die den vollen Funktionsumfang unterstützt. Eine Besonderheit sind zum Beispiel Titelbilder („cover“) oder ganze Bilderserien („slide shows“, zusammen auch als Album Art bekannt), die im ID3-Tag abgelegt werden können und durch das PIC-Flag identifiziert werden. Maximal sind 256 MiB große PNG- oder JPEG-Bilder spezifiziert, im Normalfall werden aber zwischen 32×32 bis zu 600×600 Pixel große Bilder abgelegt, die auch auf modernen Smartphones scharf dargestellt werden.

### ID3v2.2, v2.3 und v2.4

Einige Versionen von ID3-Tags sind inkompatibel zueinander. Die Hauptunterschiede sind:
* v1 bis v2.2 gelten als veraltet; nur wenige Programme schreiben in der Standardeinstellung noch diese Tag-Version. Selbst der Grund der einfachen Implementierbarkeit in Abspielgeräten oder -programmen spricht nicht mehr dafür.
* Ab Version 2.3 werden bestimmte zu verwendende Zeichenkodierungen festgelegt. v2.3 unterstützt die Kodierungen ISO 8859-1 und UTF-16, v2.4 unterstützt darüber hinaus UTF-8.
* Normalerweise stehen v2-Tags am Anfang einer Datei, v2.4 erlaubt sie aber auch am Ende. Bislang gibt es jedoch nur wenige Tagging-Programme bzw. Software- oder Hardware-Player, die diese Variante unterstützen.
* Ab Version 2.4 können Text-Attribute wie das Genre oder der Künstler Mehrfachwerte erhalten. So kann ein Lied beispielsweise zwei Genres oder ein Duett beiden Sängern zugeordnet werden, statt die Namen manuell zu einer Zeichenkette „Künstler A, Künstler B“ bzw. „Jazz-Pop“ zusammenzufassen.
Die am weitesten verbreitete Version v2.3 wird von fast allen neueren Programmen und Geräten unterstützt; einige haben jedoch Probleme beim Lesen von Unicode-Tags, obwohl der Standard diese Kodierung spezifiziert.
UTF-8-kodierte Tags der Version 2.4 bilden die neueste und flexibelste Version des v2-Standards. Trotz deutlicher Fortschritte in jüngerer Zeit werden die Neuerungen von v2.4 oft nur teilweise unterstützt. So wird bei Text-Attributen mit Mehrfachwerten oft nur der erste angezeigt, oder die Werte werden zusammengehängt, so dass aus den beiden Genres „Pop“ und „Jazz“ dann beispielsweise „PopJazz“ oder „JazzPop“ wird.

## Gängige ID3v2-Frames (Auswahl)

Die Informationen werden in Feldern gespeichert, die in der ID3-Dokumentation als Frames bezeichnet sind.
Die meisten Abspielprogramme und -geräte sind primär für Popmusik ausgelegt, während der Standard diese Einschränkung nicht vorsieht. Dennoch hat Apple in der Version 12.5 von iTunes proprietäre Tags (sowohl für MP3 als auch für MP4) eingeführt, um Werke außerhalb der Popmusik besser verwalten zu können. Die folgende Tabelle enthält Tags für Popmusik, für klassische Musik und gemeinsam genutzte Tags (ohne Kennzeichnung). In der Spalte Code stehen die Bezeichnungen der Frames.
| Code | Musikstil | Bedeutung |
| TALB | | Name des Albums |
| TPE1 | | Interpret/-en ("Artist") |
| TPE2 | | Album-Interpret/-en ("Album Artist") |
| TPE3 | Klassik | Dirigent |
| TIT1 | Klassik | Name des Werks, etwa „Sinfonie Nr. 5“ oder „My Fair Lady“ |
| TIT2 | Pop Klassik | Name des Musikstücks Satzbezeichnung oder Titel, etwa „I. Allegro“ oder „Es grünt so grün“ |
| TIT3 | Klassik | Titelzusatz, etwa „op. 42“ |
| TCOM | Klassik Hip-Hop | Komponist/Beatmaker ("composer") |
| TRCK | | Stücknummer/Anzahl Stücke ("Track Number") |
| TPOS | | CD-Nummer/Anzahl CDs ("Disk Number") |
| TCON | | Genre (freier Text oder numerisch) |
| COMM | | Kommentar ("comment") |
| TORY | | "original year" |
| TDRC | | "year" |
| APIC | | Hier sind Bilder enthalten, als .jpg oder .png |
| MVNM | Klassik | Satzbezeichnung (Apple-proprietär) |
| MVIN | Klassik | Satznummer/Anzahl Sätze (Apple-proprietär) |
| GRP1 | Klassik | Gruppierung (Apple-proprietär) |
Anmerkung: Die von Apple in iTunes eingeführten Metadaten für klassische Musik ("movement name" und "movement index") vertragen sich nicht mit dem Standard. Verwendet man „Werk und Satz“, liegen die Informationen in TIT1 (statt z. B. WORK), MVNM und MVIN, andernfalls wird aber GRP1 verwendet (statt TIT1). Folglich arbeitet iTunes in beiden Modi proprietär. Alle gängigen Tag-Editoren nehmen darauf Rücksicht. Bei mp4-Dateien hat Apple diesen Fehler nicht gemacht, möglicherweise ist es also ein Versehen.

## Anzeigen von ID3-Tags

Die meisten mobilen MP3-Player können ID3-Tags darstellen. Außerdem haben viele moderne Betriebssysteme und Desktop-Umgebungen eine ID3-Unterstützung implementiert. Unter Linux gibt es neben den Kommandozeilenwerkzeugen id3 (für ID3v1-Tags) und id3v2 (für ID3v2-Tags) auch grafische Anzeige- und Editiermöglichkeiten, beispielsweise in KDE das kfile-Plugin – siehe das Bild zu Konqueror weiter oben. Unter Windows ermöglicht der Explorer das Anzeigen und Bearbeiten von ID3-Tags. Von diesen Möglichkeiten abgesehen, bieten die meisten Audioplayer diese Funktion ebenfalls.

## Bearbeiten von ID3-Tags

Um ID3-Tags zu bearbeiten, wird ein sogenannter Tag-Editor benötigt. In vielen Abspielprogrammen und Betriebssystemen ist ein solcher bereits integriert. Zudem gibt es eine Reihe spezialisierter Editoren (Standalone-Tag-Editoren) mit erweitertem Funktionsumfang.