Are the ID3v2.4 frame flags really completely different from ID3v2.3?

In the file "id3v2.3.0.txt", section 3.3.1, it reads:

The flags field is defined as follows.

     %abc00000 %ijk00000

… whereas in the document "id3v2.4.0-structure.html", section Frame Header Tags, it reads:

The flags field is defined as follows (l and o left out because ther resemblence to one and zero):

%0abc0000 %0h00kmnp

So, in ID3v2.3 bits for flags "abc" are bit 7‥5 while in ID3v2.4 "abc" are bit 6‥4? And the other flag bits are similarly different between both ID3v2 versions?

Is this true? Are documentations right here? So they changed the whole set of flags, thereby dropping backwards compatibility?

Your answer is appreciated.

hmm, seems like (down) says same:

1 Like

The v2.3 and v2.4 Frame headers are not backwards compatible anyway - the different set of flags is also the smaller issue, as these flags are very, very rarely used.

The main difference is the different size indicator: In v2.3 a regular 32-bit integer is used, in v2.4 a 28-bit sync-safe integer is used (still 32 bit long, but only 28 bits are used), which means that the first bit of each of the 4 bytes is always zero. This change has been made so that the ID3v2 tag cannot be wrongly detected as a MPEG frame header (iirc starting with 11 bits set to 1) of the actual audio data.

So, if you want to write a id3v2tag library, you need different parsing methods for the frame headers anyway. :wink:

1 Like

that's reason why 2.3. is most common....

It is amazing to think that v2.4 has been formalized for over 20 years. Yet due to overwhelming use and consistency, the gold standard remains as v2.3. That says a lot about how well that version was thought out, after a few variations of v1, and even a couple of early v2 efforts.


Another reason might be, that v2.4 wasn't supported by Windows for a long, long time. If I remember correctly, even Windows 10 did not support v2.4 from the beginning. So, if you wanted to see "Artist" and "Title" in your music folders in the Windows Explorer, you had to use v2.3. Or wma files :joy:.

To make it worse, if you started tagging a mp3 file with Windows (e.g. via the file properties dialog) which had a v2.4 tag, Windows would've add a new v2.3 tag before it. So, there may be thousands of files tagged with v2.4, but these tags are buried behind another v2.3 tag. :confused:

I don't miss anything on 2.3.

I wouldn’t think that most that have already updated their library or exclusively use v2.4 have anything to miss! There certainly aren’t any tags MIA.:grinning:

What I meant by “gold standard” was more about cross-platform compatibility. There are still some players on both mobile and desktop devices that don’t necessarily or properly handle v2.4, at least not consistently. But v2.3 seems to have the widest support in this regard. That is the part I find is amazing, that even after 20+ years of being available, there are newer devices and software not being built with v2.4 capability in mind.