ID3タグ（アイディースリータグ、ID3 tag）は、MP3ファイルの中に、アーティスト・作成年・曲名等の情報を書き込むための規格である。

 概要 
ID3タグはMP3ファイルに元々組み込まれていた仕様ではなく、1996年に公開された「Studio3」というソフトウェアに組み込まれたのが始まりである。以後、様々なバージョンの規格が作られた。

ID3を追加したり、書き換えたりするソフトウェアはいくつか存在する。代表的な物はWinamp、SuperTagEditorシリーズ、mp3infp、Mp3tag等。

 バージョン 
ID3はいくつかのバージョンが存在する。このうち、ID3v1はファイルの末尾に、ID3v2はファイルの先頭に書かれるため、同時に1つのファイルに含めることができる。

 ID3v1 
もっとも広く対応されている形式。サイズは128バイト固定で制限が厳しいため、多くの情報は記録できない。
文字列には日本語を使用することができるが、文字コードに関する定義がないため、プラットフォームをまたぐ際に互換性の面で問題が生じることがある。

+ID3v1 形式開始位置長さ説明03“TAG” の識別子3文字330曲名文字列3330アーティスト文字列6330アルバム文字列934年文字列9730コメント文字列1271ジャンル番号

 ID3v1.1 
v1 のコメントを 2 バイト短縮し、トラック番号を記録できるようにした形式。
短縮した 2 バイトのうち、先の 1 バイトには必ず 0 (NULL) を格納し、残りの 1 バイトにトラック番号を記録する。
仕様上、v1 形式で 29 バイト以上のコメントが入力されたファイルとの互換は完全には保てず、
トラック番号を記録して v1.1 形式に移行した時点でコメントの 29 、30 バイト目のデータが消失する。

+ID3v1.1 形式開始位置長さ説明03“TAG” の識別子3文字330曲名文字列3330アーティスト文字列6330アルバム文字列934年文字列9728コメント文字列12510 (NULL) が格納される1261トラック番号1271ジャンル番号

 ジャンル番号一覧 
80番以降はWinampで定義されたもの

 # ジャンル名 0 Blues 1 Classic Rock 2 Country 3 Dance 4 Disco 5 Funk 6 Grunge 7 Hip-Hop 8 Jazz 9 Metal 10 New Age 11 Oldies 12 Other（その他） 13 Pop 14 R&B 15 Rap 16 Reggae 17 Rock 18 Techno 19 Industrial 20 Alternative 21 Ska 22 Death Metal 23 24 Soundtrack 25 Euro-Techno 26 Ambient 27 Trip-Hop 28 Vocal 29 Jazz-funk 30 Fusion 31 Trance 32 Classical 33 Instrumental 34 Acid 35 House 36 Game 37 38 Gospel 39 Noise 40 Alt. Rock 41 Bass 42 Soul 43 Punk 44 45 Meditative 46 Instrumental pop 47 48 Ethnic 49 Gothic 50 51 Techno-Industrial 52 Electronic 53 Pop-folk 54 Eurodance 55 Dream 56 Southern Rock 57 Comedy 58 Cult 59 Gangsta 60 Top 40 61 Christian Rap 62 Pop/Funk 63 Jungle 64 Native American 65 Cabaret 66 New Wave 67 Psychedelic 68 69 Showtunes 70 Trailer 71 Lo-Fi 72 73 Acid Punk 74 Acid Jazz 75 Polka 76 Retro 77 Musical 78 Rock & Roll 79 Hard Rock

 # ジャンル名 80 Folk 81 Folk-Rock 82 83 Swing 84 Fast Fusion 85 Bebob 86 Latin 87 Revival 88 Celtic 89 Bluegrass 90 Avantgarde 91 Gothic Rock 92 Progressive Rock 93 Psychedelic Rock 94 Symphonic Rock 95 Slow Rock 96 Big Band 97 Chorus 98 Easy Listening 99 Acoustic 100 Humour 101 Speech 102 Chanson 103 Opera 104 Chamber Music 105 Sonata 106 Symphony 107 Booty Bass 108 Primus 109 Porn Groove 110 Satire 111 Slow Jam 112 Club 113 Tango 114 Samba 115 Folklore 116 Ballad 117 Power Ballad 118 Rhythmic Soul 119 Freestyle 120 Duet 121 Punk Rock 122 Drum Solo 123 A capella 124 Euro-House 125 Dance Hall 126 Goa 127 Drum & Bass 128 Club-House 129 Hardcore 130 Terror 131 Indie 132 BritPop 133 Afro-punk 134 Polsk Punk 135 Beat 136 Christian gangsta rap 137 Heavy Metal 138 Black Metal 139 Crossover 140 Contemporary Christian 141 Christian Rock 142 Merengue 143 Salsa 144 Thrash Metal 145 Anime 146 JPop 147 Synthpop 148 Abstract 149 Art Rock 150 Baroque 151 Bhangra 152 Big beat 153 Breakbeat 154 Chillout 155 Downtempo 156 Dub 157 EBM 158 Eclectic 159 Electro

 # ジャンル名 160 Electroclash 161 Emo 162 Experimental 163 Garage 164 Global 165 IDM 166 Illbient 167 Industro-Goth 168 Jam Band 169 Krautrock 170 Leftfield 171 Lounge 172 Math Rock 173 New Romantic 174 Nu-Breakz 175 Post-Punk 176 Post-Rock 177 Psytrance 178 Shoegaze 179 Space Rock 180 Trop Rock 181 World Music 182 Neoclassical 183 Audiobook 184 Audio theatre 185 Neue Deutsche Welle 186 Podcast 187 Indie-Rock 188 G-Funk 189 Dubstep 190 Garage Rock 191 Psybient

 ID3v2 
ID3v1.1を拡張、改良した形式。ID3v1のネックだった字数制限がほぼ無くなり、Unicodeのサポートなど非常に便利になっている。しかし、タグを記録するときに増えるファイルサイズがID3v1より大きかったり、古いプレイヤーでは表示に対応していないものがある。

 v1からの主な変更点 
 項目別のサイズ制限は16MB、全体のタグサイズ制限は256MBになった
 記入できる項目の増加
 Unicodeのサポート
 画像が含められる

 バージョン番号 
現在、ID3v2には「ID3v2.2」「ID3v2.3」「ID3v2.4」の3つがある。仕様書によれば、例えば「ID3v2.3」というバージョン表記は、「ID3v2」という規格の「メジャーバージョン3」となる。決して「ID3」の「バージョン2.3」ではない。

前記仕様書によれば、メジャーバージョン間の前方互換性は保証されていない。そのため、例えば「ID3v2.3」をサポートするソフトウェアは「ID3v2.4」のタグ情報は読み込めない。この場合、サポートするメジャーバージョンより大きなバージョンのタグを読み込もうとする場合は、単純にタグ全体を読み飛ばすべきと記述されている。

各バージョン間の違いは、「ID3v2.2」から「ID3v2.3」に変更されたとき、フレームIDが3桁から4桁に増えた。このため、メジャーバージョン2と3ではフレームIDに互換性がなくなった。「ID3v2.3」から「ID3v2.4」に変更されたとき、メジャーバージョン4からは文字コードとしてUTF-8のサポートが追加された（これ以前のユニコード対応はUTF-16のみ）。

ID3タグを制定している組織「ID3.org」によれば、現在最も普及しているバージョンは「ID3v2.3」である。最新バージョンとなる「ID3v2.4」は、一部の改訂箇所に不同意があったり、ソフト・ハードウェア市場がなかなか対応を行おうとしないため、いまだ普及に至っていない、と説明されている。

 仕様 
ID3v2タグはファイルの先頭に配置され、大まかに分けて、ID3v2ヘッダ、拡張ヘッダ、フレーム(複数)、パディング領域の4領域から構成され、この順に並んでいる。以下に各領域ごとの詳細を示す。v2.2はフレームIDが3桁であるなど一部異なる

 ID3v2ヘッダ 
計10バイト。サイズは各バイトの最上位ビットが無効であり、有効な値は28ビットとなる。
v2.2では圧縮方式が指定されていない為、圧縮されている場合データを読み取れない可能性がある。また、拡張ヘッダは存在しない。
オフセット長さ説明03“ID3” のマジックナンバー3文字32バージョン51フラグ64サイズ

+ID3v2ヘッダのフラグオフセット下位からのビット位置説明07非同期処理がされているか6タグが圧縮されているか(v2.2)拡張ヘッダが存在するか(v2.3以降)5タグが試験的なものか(v2.3以降)4フッタが存在するか(v2.4)3～0未使用

 拡張ヘッダ 
+ 拡張ヘッダ(v2.3)オフセット長さ説明04この拡張ヘッダのサイズ42フラグ64パディング領域のサイズ10可変長拡張ヘッダのデータ

+拡張ヘッダのフラグ(v2.3)オフセット下位からのビット位置説明07CRCデータ有り6～0未使用17～0未使用

+拡張ヘッダ(v2.4)オフセット長さ説明04この拡張ヘッダのサイズ41フラグ長(常に1)51フラグ6可変長拡張ヘッダのデータ

+拡張ヘッダのフラグ(v2.4)オフセット下位からのビット位置説明07未使用6以前のタグを更新したものか5CRCデータ有り4タグデータに制限を加えるか3～0未使用

 フレームデータ 
+各フレーム(v2.2)オフセット長さ記述03フレームID33フレームサイズ6可変長フレームデータ

+各フレーム(v2.3以降)オフセット長さ記述04フレームID(種別1バイト+ネーム3バイト)44フレームサイズ82フラグ10可変長フレームデータ

+フレームのフラグ(v2.3)オフセット下位からのビット位置説明07タグを書き替えたときにフレームを保持するか6タグ以外の部分が書き替えられたときにフレームを保持するか5フレームが読み取り専用か4～0未使用17zlibで圧縮されているか6グループIDがあるか5暗号化されているか4～0未使用
+フレームのフラグ(v2.4)オフセット下位からのビット位置説明07未使用6タグを書き替えたときにフレームを保持するか5タグ以外の部分が書き替えられたときにフレームを保持するか4フレームが読み取り専用か3～0未使用17未使用6グループIDがあるか5～4未使用3zlibで圧縮されているか2暗号化されているか1非同期処理されているか0データ長インジケーターがあるか

+フレームIDIDDescriptionNotesAENCCRAAudio encryptionAPICPICAttached pictureASPIAudio seek point indexv2.4で追加COMMCOMCommentsCOMRCommercial frameCRMEncrypted meta frameENCREncryption method registrationEQU2Equalizationv2.4で追加EQUAEQUEqualizationv2.4でEQU2に変更ETCOETCEvent timing codesGEOBGEOGeneral encapsulated objectGRIDGroup identification registrationIPLSIPLInvolved people listv2.4でTMCLとTIPLに変更LINKLNKLinked informationMCDIMCIMusic CD identifierMLLTMLLMPEG location lookup tableOWNEOwnership framePRIVPrivate framePCNTCNTPlay counterPOPMPOPPopularimeterPOSSPosition synchronisation frameRBUFBUFRecommended buffer sizeRVA2Relative volume adjustmentv2.4で追加RVADRVARelative volume adjustmentv2.4でRVA2に変更RVRBREVReverbSEEKSeek framev2.4で追加SIGNSignature framev2.4で追加SYLTSLTSynchronized lyric/textSYTCSTCSynchronized tempo codesTALBTALAlbum/Movie/Show titleTBPMTBMBeats per minute (BPM)TCOMTCMComposerTCONTCOContent typeTCOPTCRCopyright messageTDATTDADatev2.4でTDRCに変更TDENEncoding timev2.4で追加TDLYTDYPlaylist delayTDOROriginal release timev2.4で追加TDRCRecording timev2.4で追加TDRLRelease timev2.4で追加TDTGTagging timev2.4で追加TENCTENEncoded byTEXTTXTLyricist/Text writerTFLTTFTFile typeTIMETIMTimev2.4でTDRCに変更TIPLInvolved people listv2.4で追加TIT1TT1Content group descriptionTIT2TT2Title/songname/content descriptionTIT3TT3Subtitle/Description refinementTKEYTKEInitial keyTLANTLALanguage(s)TLENTLELengthTMCLMusician credits listv2.4で追加TMEDTMTMedia typeTMOOMoodv2.4で追加TOALTOTOriginal album/movie/show titleTOFNTOFOriginal filenameTOLYTOLOriginal lyricist(s)/text writer(s)TOPETOAOriginal artist(s)/performer(s)TORYTOROriginal release yearv2.4でTDORに変更TOWNFile owner/licenseeTPE1TP1Lead artist(s)/Lead performer(s)/Soloist(s)/Performing groupTPE2TP2Band/orchestra/accompanimentTPE3TP3Conductor/performer refinementTPE4TP4Interpreted, remixed, or otherwise modified byTPOSTPAPart of a setTPROProduced noticev2.4で追加TPUBTPBPublisherTRCKTRKTrack number/Position in setTRDATRDRecording datesv2.4でTDRCに変更TRSNInternet radio station nameTRSOInternet radio station ownerTSIZTSISizev2.4で削除TSOAAlbum sort orderv2.4で追加TSOPPerformer sort orderv2.4で追加TSOTTitle sort orderv2.4で追加TSRCTRCInternational Standard Recording Code (ISRC)TSSETSSSoftware/Hardware and settings used for encodingTSSTSet subtitlev2.4で追加TYERTYEYearv2.4でTDRCに変更TXXXTXXUser defined text information frameUFIDUFIUnique file identifierUSERTerms of useUSLTULTUnsynchronized lyric/text transcriptionWCOMWCMCommercial informationWCOPWCPCopyright/Legal informationWOAFWAFOfficial audio file webpageWOARWAROfficial artist/performer webpageWOASWASOfficial audio source webpageWORSOfficial internet radio station homepageWPAYPaymentWPUBWPBPublishers official webpageWXXXWXXUser defined URL link frame

 フッタ 
v2.4で追加された。フレーム領域の後ろ（パディング領域がある場合はその後ろ）に置かれる。マジックナンバー以外はヘッダと同じ。
オフセット長さ説明03“3DI” (マジックナンバー)32バージョン51フラグ64サイズ