Blogpad An exercise in brevity.

Puerta's impressive comeback →← Improving Google's cache

iTunes and ID3 tag management

iTunes for Windows desktop iconIt’s unclear exactly how iTunes handles ID3 tags when you’re editing a track’s properties.

An intro
For those not following this stuff close, we’ve got —generally speaking— two versions of ID3 tags (and a track can carry them both):
  • ID3v1 (actually ID3v1.1): 128 bytes long, located at the end of the file, fields can only carry a limited number of characters, etc.
  • ID3v2 (actually ID3v2.3.0 — are there any programs that write ID3v2.4.0?): extendable/expandable (up to 256MB long!?), located at the beginning of the file, no character limit on the fields, support for pictures, etc.

The tests
(Please note that this is iTunes for Windows we’re talking about.)

I did a few tests to find out how iTunes messes with the two versions, by adding/editing the info of a track that had:
  • neither an ID3v1, nor an ID3v2 tag
  • only an ID3v1 tag
  • only an ID3v2 tag
  • both an ID3v1 and an ID3v2 tag, with different information on each

The results
In all of my tests, iTunes would only edit (or add, in the case of the first two tests) the ID3v2 tag.

It makes sense that iTunes only wants to “speak” with ID3v2 since it’s the one that supports album art, and “richer” metadata, which is the whole music organizing mantra. We should also note, that in the last case, where the track carried both an ID3v1 tag and an ID3v2 tag with different information on each, iTunes would read the ID3v2 tag and neglect the ID3v1 one.

This is generally good news for me, since all of my tracks are stripped from their ID3v1 tags, and I only deal with ID3v2. Thus, I know that when I have to edit a track’s info from within iTunes, no ID3v1 tag will be suddenly added (as is the case with Creative’s PlayCenter; don’ even get me started with that bloatware).

Something wrong here?
But, there’s something wrong with this behaviour, isn’t it?

ID3v1 may suck, but there are still MP3 players out there (mostly those CD players that can handle MP3 — and that includes most car audio players too) that can only read ID3v1.

You can see where this is going.

You’ve just burned a CD with MP3 tracks using iTunes, so that you can listen to it in your car stereo. And when “…Baby One More Time” (OK, we’re pushing things here deliberately) starts blasting through your speakers , the LCD display reads “ARTIST: brittany spaers”, “SONG: 1 more time”.

You’re certain you’ve tagged Britney’s album properly, and know how to spell her name; you check your iTunes’ library again, and you confirm this.

So what’s happening here?

As we’ve described above, iTunes only interacts with ID3v2, so you’re out of luck in fixing this from within Apple’s music management program (you’ve got to revert to a separate tag editing program, or maybe “Winamp” → “File Info”, and do some manual editing.)

Proposed solution?
I can only see one way of fixing this.

iTunes should always update (if it already exists), or create (if it doesn’t) the correspondent ID3v1 tag when you add tracks to the library, or modify their information. This sucks for people like me who want to avoid ID3v1 tags entirely, because I got no use for’em, but we’ve got to think of people who listen to their MP3s in devices that can only read ID3v1.

A few extra notes on this: since ID3v1 has got some character limits on its fields (e.g. “30 characters max. allowed for ‘Artist’”), these ID3v1 fields would obviously only carry the first ‘x’ allowed characters from their ID3v2 counterparts. And in the case of ID3v1 genres, where you can only choose between 80 predefined ones, if the ID3v2 genre doesn’t belong to one of the predefined ones, then the ID3v1 genre field should be left blank.

In an ideal world, Apple would add an option in “Edit” → “Preferences” → “Advanced”:
Keep ID3v1 tags in sync? [x]
Checking it (as shown in the example above) causes iTunes to behave like we’ve described two paragraphs above.

Unchecking this option, removes the ID3v1 tag (if it exists) when adding tracks to your library, and only deals with ID3v2. Again, it doesn’t just ignore ID3v1, it removes it if present, treating it as cruft.

I’d really like to see the “ideal world” solution applied, but Apple hates extra options, so chances of this being realized are slim.

What happens with the Mac version?
As we’ve noted above, this iTunes behaviour can only be confirmed for Windows (the XP version), as this is how we’ve conducted our tests. I’d love to hear from Mac users if the same applies to their case too.
Jun 1st, 2005

Comments on “iTunes and ID3 tag management”

  1. You are perfectly right! Thank you for posting the post, for that I don’t have to do my own test again. One thing to mention is that ID3v2 and v1 can NEVER in sync. Besides limited length, ID3v1 don’t support Unicode and cannot write any characters other than ISO-8859-1 characters. Apple would have to break the standard to write a ID3v1 tag if there are songs titled in non-English language. (There are millions of them.) Your “ideal world” solution need one more option: Write ID3v1 tag in this charset: [ISO-8859-1] with a note below “Charsets other than ISO-8859-1 would be non-standard”. I bought an iAudio U3 MP3 player (which lead me to find here by Google) and I found out that the only solution for me to show Chinese on the LCD is to get ID3v1 tags in big5 charset. Kind of surprised me that an 2006 machine doesn’t support ID3v2 tags in Unicode. There is another solution: got rid off iAudio and get an iPod which behaves like iTunes. The “ideal world” solution for Apple :-P .

    timdream on March 4th, 2006 at 9:11 am / Edit
  2. Don’t know about winblows, but the Linux solution is easy. Use id3v2 from sourceforge.net. cd /path/to/library find . -name ".mp3" |while read file; do id3v2 -s "${file}" id3v2 -1 "${file}" done The -s option strips the id3v1 tag away. The -1 option tells it to only write id3v1 info. We aren’t changing any info, but it converts from id3v2 to id3v1 as a result. All the mp3 files now all have both id3v2 and id3v1 tags, and they are in sync. No messing with slow guis and dealing with individual files. Should work in OS X too, maybe in Cygwin on Windblows. -=- Don’t do this unless all your files have id3v2 tags. If an mp3 doesn’t - you’ll find it tagless … You could check for id3v2 and if not there, add it first via id3v2 -C "${file}"

    Michael A. Peters on May 8th, 2006 at 1:35 pm / Edit
  3. Michael, this is an excellent tip — thank you for sharing!

    Konstantinos on May 9th, 2006 at 2:07 am / Edit
  4. yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes I strongly hope itunes support id3v1,but…………….so,i am very disappointed for it

    hongtao.wang on June 20th, 2006 at 3:24 pm / Edit
  5. I don’t know if you guys want to have more work when tagging your mp3 files, but there’s a program (for Windows) called “Mp3 Tag Tools v1.2”. It is free and very handy. You can write ID3v2 info and send it to ID3v1 just pressing F7 if I’m not mistaken. If you don’t want ID3v1 tag, you just disable a checkbox and that’s it. I hope this can help some of you… See you…

    Carlos on March 25th, 2007 at 4:40 pm / Edit
  6. Yes, the same applies for Macs too. I’m running iTunes 7.3.2, and have run into the same problems. I usually use Audacity for creating my mp3 files (works great), but it still uses ID3v1. To work around this on a file-by-file basis, I leave the ID3 fields blank in Audacity, add the song to the iTunes library, and then fill in the Artist, Track, Album, etc. I don’t know about Windows, but the Mac version of iTunes can write (but not sync) ID3v1 tags. Select Advanced > Convert ID3 Tags…, and you’ll get the option of v1.0 or v1.1. However, there’s no way of removing a v1 tag once it’s physically present at the end of an mp3 file.

    General Grant on February 3rd, 2008 at 3:47 am / Edit
  7. @General Grant: thank you for the detailed comment. I didn’t know that last part, about iTunes being able to write (not sync) to ID3v1 — it’ll probably be possible with the Windows version as well, I may have to look into it.

    Konstantinos Christidis on February 3rd, 2008 at 4:10 am / Edit