From MozillaZine Knowledge Base

I think the distinction attempted regarding Labels and Tags is incorrect at

I have not read the entire bug at because I am traveling, but AIUI there were three distinct changes in the 2006-2008 time period 1. allow number of assignments >5 2. change terminology from labels to tags (not a technical change in underlying capabilities) 3. UI to give users more control

Tags are not just renamed labels with a higher limit and a enhanced user interface, so I think the distinction in the KB article was correct. Additional
features were not added to labels in several steps, to eventually make them tags. Tags are a different design that replaced labels. To help make the
transition easier 5 predefined tags were provided that had the same names as labels did.
It was not possible to have multiple labels per message. The comments in that bug report mention that there was a hardcoded maximum number of
five labels plus the special none label. Both and the bug report mentioned that "Current labels
are essentially a hack that use a few unused bits in the .msf datastructure."
You can create an arbitrary number of tags, and assign multiple tags to a message. They are stored quite differently than labels - a POP account uses a
X-Mozilla-Keys: header while a IMAP account tries to store tags on the server using IMAP keywords. Using IMAP keywords means they are searchable and
accessible from multiple IMAP clients, including some webmail front-ends. The bug report also mentioned "I think the concept of having unlimited labels,
and a message being allowed more than one label is great. However this is totally out of line with how labels currently work. Labels are currently conceived
as more being a *state* a message is in. The proposal is more similar to a way of *tagging* messages. The way the labels are currently stored makes it
possible to change them without changing the length of the message, because it simply rewrites the fixed-size X-Mozilla-Status2 header.". states "The key is an imap mod-utf7 version of the tag, suitable for use in a pref name, an
imap keyword, and part of an x-mozilla-keys header. So, as you might guess, we actually store the key persistently, and translate it to the tag for display
purposes. This also allows us to rename a tag by changing the pref without changing all the messages that have that tag. We can also remove a tag by
removing the pref, and the key stored in the messages will then be ignored."
Tanstaafl 08:29, 30 June 2018 (UTC)