What Are ID3 Tags?
ID3 tags are metadata containers embedded directly inside MP3 files. They store everything your music player needs to display track information without relying on file names or external databases.
A typical ID3 tag contains:
- Title — the song or track name
- Artist — the performing artist or band
- Album — the album or release name
- Year — release year
- Genre — music genre classification
- Track number — position within the album
- Album art — embedded cover image (usually JPEG or PNG)
- Lyrics — synchronized or unsynchronized song lyrics
- BPM — beats per minute for DJ software
- Composer, conductor, disc number — extended fields for classical and multi-disc releases
Without tags, your library becomes a pile of unnamed files. A file called track03.mp3 could be anything — ID3 tags are what tell your player it is "Bohemian Rhapsody" by Queen from "A Night at the Opera."
ID3v1 vs ID3v2
There are two major versions of the ID3 standard, and they are fundamentally different in design:
ID3v1 (1996)
The original tagging format. It appends a fixed 128-byte block to the end of the MP3 file. Its limitations are severe:
- 30 characters max for title, artist, and album fields
- 80 predefined genres (later extended to 148) — no custom genres
- No album art, no lyrics, no Unicode
- ID3v1.1 (1998) added a track number field by repurposing 2 bytes from the comment field
ID3v2 (1998–2000)
A complete redesign stored at the beginning of the MP3 file. ID3v2 uses a flexible frame-based structure with virtually no size limits:
- Unlimited text length for all fields
- Embedded artwork — JPEG, PNG, or other image formats
- Synchronized lyrics with timestamps
- Custom frames — store any metadata you want
- Unicode support — proper international characters
| Feature | ID3v1 | ID3v2.3 | ID3v2.4 |
|---|---|---|---|
| Text length | 30 chars | Unlimited | Unlimited |
| Album art | No | Yes | Yes |
| Unicode | No (Latin-1) | UCS-2 / UTF-16 | UTF-8 native |
| Genres | 80 predefined | Free text | Free text |
| Lyrics | No | Yes (synced) | Yes (synced) |
| Compatibility | Universal | Very wide | Good (not all players) |
Recommendation: use ID3v2.3 for maximum compatibility. It supports everything most users need — artwork, Unicode (via UTF-16), long text fields, and lyrics. ID3v2.4 adds native UTF-8 and improved footer support, but some older players and car head units cannot read it.
What Happens to Tags During Conversion?
FLAC does not use ID3 tags. Instead, it stores metadata as Vorbis Comments — a simpler key-value system also used by Ogg Vorbis and Opus. Cover art in FLAC is stored in a dedicated METADATA_BLOCK_PICTURE field.
When converting FLAC to MP3, the converter must map Vorbis Comments to ID3v2 frames. Fortunately, this mapping is straightforward:
| FLAC (Vorbis Comment) | MP3 (ID3v2 Frame) | Notes |
|---|---|---|
TITLE |
TIT2 |
Direct mapping |
ARTIST |
TPE1 |
Direct mapping |
ALBUM |
TALB |
Direct mapping |
DATE |
TDRC / TYER |
TDRC for v2.4, TYER for v2.3 |
TRACKNUMBER |
TRCK |
Direct mapping |
GENRE |
TCON |
Free text in both |
METADATA_BLOCK_PICTURE |
APIC |
Cover art, JPEG or PNG |
LYRICS |
USLT |
Unsynchronized lyrics |
FFmpeg handles this mapping with -map_metadata 0, which tells the encoder to copy all recognized metadata from the input to the output. Cover art stored as FLAC picture blocks is mapped to the ID3v2 APIC frame automatically.
Our converter preserves all metadata automatically. You do not need to configure anything — title, artist, album, track number, genre, year, and embedded cover art all transfer from FLAC to MP3 during conversion.
Common Tag Problems and Fixes
When metadata does not survive conversion, there is usually a specific, fixable cause:
Tags lost entirely
The converter did not include -map_metadata 0 (or equivalent). Without this flag, FFmpeg creates the output file with no metadata at all. This is the most common cause of "empty tags" after conversion.
Album artwork missing
Several possible causes:
- Artwork not embedded — some FLAC files rely on a separate
folder.jpgin the same directory rather than embedding the cover. External artwork is not part of the FLAC file and cannot transfer during conversion. - Artwork too large — some players struggle with embedded images over 500 KB. If your FLAC has a 5 MB PNG cover, consider resizing to a 500–800 pixel JPEG before or after conversion.
- Converter limitation — some basic converters strip artwork. Our converter preserves it.
Garbled characters (mojibake)
Character encoding mismatch. Vorbis Comments in FLAC are always UTF-8. But if the MP3 is written with ID3v2.3 using Latin-1 encoding, non-ASCII characters (Cyrillic, CJK, accented Latin) may display incorrectly. The fix: use -id3v2_version 3 with UTF-16 encoding, or use -id3v2_version 4 which supports UTF-8 natively.
ID3 version incompatibility
Some older car stereos and portable players only read ID3v1 or ID3v2.3. If your tags appear empty on a specific device, the converter may have written ID3v2.4 tags that the device cannot parse. The solution: use -id3v2_version 3 to force the widely compatible ID3v2.3 format.
Best Practices for Music Library Conversion
When converting a large FLAC library to MP3, follow these practices to keep your metadata intact and consistent:
- Always use
-map_metadata 0— this single flag ensures all recognized tags transfer from source to output - Use
-id3v2_version 3— ID3v2.3 is the most compatible version across players, devices, and car stereos - Keep artwork under 500 KB — resize covers to 500–800 pixels and compress as JPEG. Large PNG covers waste space and can cause issues on mobile devices
- Verify with
ffprobe— after converting a test file, runffprobe output.mp3to confirm all expected tags are present - Check a few files in your target player — the ultimate test is whether tags display correctly on the device you actually use
Batch tip: when converting an entire library, convert one album first and verify everything looks correct in your music player before processing the rest. Catching a metadata issue early saves hours of re-conversion.
The complete FFmpeg command
For reference, here is the command that combines best-practice audio encoding with full metadata preservation:
ffmpeg -i input.flac -map_metadata 0 -id3v2_version 3 \
-codec:a libmp3lame -q:a 0 output.mp3
This copies all metadata, writes ID3v2.3 tags, and encodes at VBR V0 (~245 kbps) quality. For CBR 320 kbps, replace -q:a 0 with -b:a 320k.