Reconciling Style Guide with ID3 spec

Tags: #<Tag:0x00007f756c1781b0> #<Tag:0x00007f756c178070>

I have a disagreement with the Classical Track Title style guide. This guide recommends putting the entire track title into the Title field, including Grouping, Title, and Version (“Concerto in G major: I. Allegro, Op 9 no 6”). But this is not in compliance with the ID3 specification, and it causes Picard to incorrectly tag files.

When editing tracks in MusicBrainz, the editor doesn’t even provide inputs for TIT1 or TIT3, which means correct entry of multi-movement works is not possible.

There are 3 ID3 tags intended for titling tracks. Below is an excerpt from the ID3 specification:

TIT1 - The ‘Content group description’ frame is used if the sound belongs to a larger category of sounds/music. For example, classical music is often sorted in different musical sections (e.g. “Piano Concerto”, “Weather - Hurricane”).

TIT2 - The ‘Title/Songname/Content description’ frame is the actual name of the piece (e.g. “Adagio”, “Hurricane Donna”).

TIT3 - The ‘Subtitle/Description refinement’ frame is used for information directly related to the contents title (e.g. “Op. 16” or “Performed live at Wembley”).

As an example, consider the following classical composition by Tomaso Albinoni:

Formatted per the MB Style Guide, the tracks below all have the complete title in TIT2, while TIT1 and TIT3 are blank.

│Concerto in G major, Op 9 no 6: Allegro
│Concerto in G major, Op 9 no 6: Adagio (non troppo)
│Concerto in G major, Op 9 no 6: Allegro

According to the ID3 spec (or at least, how I interpret it), it should look like this:

Concerto in G major │Allegro │Op 9 no 6
Concerto in G major │Adagio (non troppo) │Op 9 no 6
Concerto in G major │Allegro │Op 9 no 6
1 Like

Do you have software that actually supports this kind of metadata (i.e. looks at the other fields besides TIT2)? ID3 as a spec contains a lot of fields that might be useful but most software only understands the basic Artist/Title/Album tags. Another one that comes up a lot are the separate Artist fields (TPE1 through 4), which would in theory give a nice way to separate things like conductors or remixers but I don’t know of any software that actually reads them.

I’m not aware of software that reads TIT1 and TIT3, and I’m aware of the issues with TPE1-4 as well. The problem is that, as long as software doesn’t support these tags, that software will never be able to adequately manage classical music. I’m advocating for compliance with the ID3 specification, both for TIT1-3 and TPE1-4, for that reason.

You are making wrong assumptions here, it is not the part of the MusicBrainz database to follow the ID3 spec. The ID3 spec is an implementation detail for tagging software. Yes, there are some things with classical music that is not fully sorted out, but the answer to this is not to say MusicBrainz must have a ID3 TIT1 field but to have concrete suggestions how to improve the database structure.

If you are interested in tagging your music the way you described with Picard you should take a look at the Classical Extras plugin for Picard. It is able to give you the separate parts of the titles already.

Inside Picard the work, title, movement and subtitle variables are interesting then. If you want exactly your structure you should enable “iTunes compatible grouping and work”. Then work will be written to TIT1.

For TIT3 you should use the subtitle tag, Classical Extras will allow you to map the according title part to this. Alternatively you use the movement tag which gets mapped to a MVN frame which actually is supported by software (e.g. iTunes, MusicBee)


I’ll look into that. Thanks.

Also if you are interested in the technical details how Picard writes the tags to ID3 have a look at the tag mapping:


If anything, foobar2000 reads and writes all TIT and TPE tags, but of course with its own baked-in, unmodifiable mapping. I feel like forced tag mappings for ID3 frames were a mistake, because in the end they fragmented the standard beyond reason (ie. every piece of software has its own mapping with obstructed access to actual frames).

This is foobar’s ID3 mapping table:

Foobar’s mapping table for (almost) all tag standards:

Mp3tag mapping table:


Yep, Foobar is the app I knew about that correctly handles these tags. It used to be the default behavior, but they caved and switched to misusing them by default, to be consistent with everyone else, but you can still get correct behavior via a user option.