How to tag key and BPM for Rekordbox, Serato and Traktor
Write the BPM and key into the file's own tags: TBPM and TKEY in mp3 and aiff (ID3), or BPM and INITIALKEY in flac, ogg and opus (Vorbis comments). Then import the files, or re-read their tags if they're already in your library, and Rekordbox, Serato and Traktor will show those values in their BPM and key columns (Traktor shows the tagged key in its Key Text column).
Where do DJ apps store key and BPM?
In two places, and knowing which is which saves a lot of confusion.
The first is the file itself. Audio files carry tags (metadata) alongside the audio: artist, title, genre, and also standard fields for tempo and key. Anything written there travels with the file to any app or computer.
The second is the app's own library. Rekordbox, Serato and Traktor each keep their own database or collection file with everything they know about your tracks: cue points, beatgrids, play history, and their own copy of BPM and key. When an app shows you a BPM, it's showing you its library value, which may have come from the tags on import or from its own analysis.
So tagging a file and seeing it in your DJ software are two steps. You write the tags, then the app has to read them.
Which tag fields hold BPM and key?
| Format | Tag system | BPM field | Key field |
|---|---|---|---|
| mp3 | ID3v2 | TBPM | TKEY |
| aiff | ID3v2 (in an ID3 chunk) | TBPM | TKEY |
| flac | Vorbis comments | BPM | INITIALKEY |
| ogg, opus | Vorbis comments | BPM | INITIALKEY |
| m4a (AAC, ALAC) | MP4 atoms | tmpo | no single standard field |
| wav | varies | support differs between apps | support differs between apps |
In a tag editor, TKEY and INITIALKEY usually show up as "Initial key" and TBPM as "BPM". If you care about tags travelling cleanly between apps, mp3, aiff and flac are the safe choices. I avoid wav for a tagged library for exactly this reason: the audio is fine, the metadata is a lottery.
What goes in the key field isn't fully standardised either. Some tools write "Am", some "A minor", some a Camelot code like "8A". The DJ apps generally understand plain key names. If you write Camelot codes into the key field, check your app reads them the way you expect before you tag 3,000 files.
How to tag key and BPM in bulk
Your options, roughly from least to most effort:
- Let your DJ software analyse and, where it offers it, write its results back to the file tags. Fine if you only use one app.
- Use a tag editor to type values in by hand. Fine for a handful of tracks you've worked out by ear.
- Use a dedicated key and tempo tool that writes tags for a whole folder.
keyandbpm has a terminal version that does the last one. It's free and open source, runs locally, and needs Bun and ffmpeg installed. You get it from the GitHub repo, run bun install, and then point it at files:
bun apps/cli/src/cli.ts --tag --rename ~/Music/incoming/*.mp3
With --tag it writes TBPM and TKEY into mp3 and aiff files and BPM and INITIALKEY into flac, ogg and opus. The audio stream is copied untouched, only the tags change. The key goes in as a short name like "Am", "F#m" or "Db", and the BPM is rounded to a whole number, since that's what the BPM field is generally expected to hold.
With --rename it also puts the key and tempo at the front of the file name, like [Am][92.94] track.mp3, keeping two decimals of tempo. That's handy in any file browser, on a USB stick, or anywhere tags aren't displayed. Run it again and it replaces the old prefix rather than stacking a new one.
It won't tag m4a or wav files. It'll still analyse them and can still rename them.
If you'd rather check a single track before committing, drop it into the browser analyser first. It's the same analysis, shows key, relative key, key strength, BPM with a confidence figure and a beat grid you can play against, and doesn't upload anything.
Getting Rekordbox, Serato and Traktor to read the tags
New files are the easy case. Import them and each app reads the BPM and key tags on the way in, then shows them in its BPM and key columns. Traktor is the exception for key: the tagged key goes in a column called Key Text, and its own Key column holds only its own analysis.
Files already in your library are where people get stuck. The app has already stored its own values, and it won't necessarily go back to the file to look again. Each of the three has an option to re-read tags from files for selected tracks; look in the track's right-click menu or the files panel for wording along the lines of reloading or rescanning tags (in Traktor it's Check Consistency). Select the tracks you've just tagged and run that.
The other thing to watch is re-analysis. If you run your DJ software's own analysis over tracks you've carefully tagged, it may replace your key or BPM with its own result. All three let you control what gets analysed in their preferences. If you trust your tags more than the app's detector, turn off key detection there, or analyse only for beatgrids and waveforms.
A note on each app
- Rekordbox keeps its own database and needs tracks analysed for beatgrids and waveforms before you can export to USB for CDJs. It can display keys either as classic key names or in an alphanumeric, Camelot-style format; the option is in its preferences.
- Serato stores a lot of its own analysis inside the file tags, as well as in its database. That's convenient when you move files between computers, and it's why Serato-analysed files can carry extra data other apps ignore.
- Traktor keeps everything in its collection file and can write key and other data back to the file tags. It can display keys as Open Key codes (1d for C major, 1m for A minor) or as musical key names.
Menus move between versions, so I'm deliberately not giving click-by-click paths. The labels above are stable enough to search for in each app's own manual.
Should you tag the key as Camelot or as a key name?
My opinion: write plain key names into the tag, and let each app convert to whatever notation you like for display. Key names are what the field was designed for and what every app understands. Camelot codes are a display preference.
If you want Camelot codes in front of you in a set, switch the display setting in your DJ app rather than rewriting the data. The Camelot wheel chart converts one to the other if you're doing it by hand.
Common problems
The BPM is half or double what you expected. That's a tempo-octave issue, not a tagging one: 87 and 174 are the same groove counted two ways. Decide which you want in the tag and stick to it. Why is my BPM half or double explains how to tell which is right.
The key in the app doesn't match the tag. Either the app re-analysed and overwrote it, or it hasn't re-read the file since you changed it. Re-read the tags and check your analysis settings.
Two tools gave different keys. Often they're relatives (A minor and C major) or a fifth apart, and the track is genuinely ambiguous. See why key finders disagree.
The tags vanished after converting formats. Converting wav to mp3, or flac to aiff, doesn't always carry tags across, and when it does, the field names have to be translated between tag systems. Tag after converting, not before.
Questions people ask
What ID3 tag holds the musical key?
TKEY, which tag editors usually label as Initial key. BPM goes in TBPM.
Does Rekordbox read the key from ID3 tags?
It reads BPM and key tags when you import files. If the tracks are already in your collection, re-read their tags, and be aware that running key analysis in Rekordbox can replace the tagged key with its own result.
Where does Serato store BPM and key?
In its library and also in the file's own tags, where it keeps its analysis data too. That's why Serato's values tend to follow a file when you copy it to another computer.
Can you tag key and BPM in WAV files?
Sometimes, but support differs between apps, so tags written by one program may not show up in another. For a tagged DJ library, aiff, flac or mp3 are more reliable.
Should BPM tags include decimals?
Most tools write a whole number to the BPM tag. DJ software analyses its own precise tempo for the beatgrid anyway, so the tag mainly helps with sorting and searching.