I want to mention a little tool that helped me out twice in the last week, and that I find very little info about online. It’s a Windows command-line MP3 file tagger and renamer called id3.exe. Since I forgot where I downloaded it from and Google doesn’t give me a clue either: here’s where you can download id3.exe.

ID3.exe can do several things, of which I will just cite the things I actually used:

  • it can obviously set ID3 tags in MP3 files (that is, ID3v1 and v2). The first time it adds ID3v2 tags which are stored in the beginning of the file (necessary when you need the info right when you start reading the file, like with streaming), the whole file has to be rewritten, but subsequent modifications are really fast.
    id3.exe -1 -2 -g [genre] -c "[Copyright notice]" -l "[Album name]" "%OUTPUT%"
  • set the ID3 tags of one file to those of another. I needed this when I transcoded MP3 files to a lower bitrate with LAME. LAME does not copy the existing ID3 tags to the new file. So I used ID3.exe to just copy those from the source file.
    id3.exe -D %INPUT% -1 -2 "%OUTPUT%"
  • Rename the file according to the MP3 tags. I had a big collection of MP3 files called “01 Track01” without any MP3 tags. I first set the ID3 tags based upon the folder structure (the folder name was the Album name), and then renamed them to “[Artist name] – [Album name] – [Track N°].mp3”.
    id3.exe -2 -f "%%a - %%l - %%t.rbs" "%OUTPUT%"
  • Id3 can also deduct album names, artist, song titles and track number from the complete filename + path.

This is the complete usage of the version I used:

id3 0.78 (2006080)
usage: id3 [-1 -2 -3] [OPTIONS] filespec ...
 -v             give verbose output
 -d             clear existing tag
 -t <title>     set tag fields
 -a <artist>
 -l <album>             (i'th matched `*' wildcard  = %1-%9,%0
 -n <tracknr>            path/file name/counters    = %p %f %x %X
 -y <year>               value of tag field in file = %t %a %l %n %y %g %c)
 -g <genre>
 -c <comment>
 -D <filename   duplicate tags read from filename
 -f <template>  rename files according to template
 -q <format>    print formatted string on standard output
 -m             match variables in filespec
 -R             search recursively
 -M             preserve modification time of files
 -V             print version info
Only on last selected tag type:
 -s <size>      set tag size
 -E             only write if tag already exists
 -u             update all standard fields
 -rTYPE         erase all `TYPE' frames
 -wTYPE <data>  write a `TYPE' frame
Report bugs to <[email protected]>.