Key and BPM Finder Accuracy
How often the song key finder and the BPM finder get it right on real music that was labelled by people, and where they go wrong.
Updated . Every number on this page is read from the benchmark files at build time.
Results on real, human-labelled loops
Test set: 429 loops from the Freesound Loop Dataset (Ramires et al. 2020). Loops where at least two human annotators agree; test split by uploader, never used for fitting. This test split has now been scored 2 times. Earlier scores (2026-11-01: tempo 72.9 %, key 69.5 %) were known while the current model was tuned on dev data, so this result is not fully blind. Scored 1 November 2026. Key: the exact key 67 % of the time (141 loops with a key label). Tempo: within 2 % of the label 72 % of the time (351 loops with a tempo label).
| Measure | Right | 95 % CI | Loops |
|---|---|---|---|
| Key: exact | 66.7 % | 58.5–73.9 % | 141 |
| Key: exact or close (relative / fifth) | 82.3 % | 75.1–87.7 % | 141 |
| Tempo: within 2 % | 72.4 % | 67.5–76.8 % | 351 |
| Tempo: right, or half / double | 87.2 % | 83.3–90.3 % | 351 |
| Tempo within 2 %, loops with drums | 78.2 % | 72–83.4 % | 202 |
| Tempo within 2 %, loops without drums | 64.4 % | 56.5–71.7 % | 149 |
The 95 % CI is the range the true accuracy most likely sits in, given how many loops were tested (Wilson score interval). Not every loop has both labels, so the key and tempo rows count different loops.
GiantSteps+ Key (Faraldo et al., Zenodo 1095691, CC BY-SA 4.0) + GiantSteps Tempo v2 (Schreiber & Mueller 2018).
Test split, never used for fitting. Scored once, after all tuning was finished. 238 items, scored 1 November 2026.
| Measure | Right | 95 % CI | Loops |
|---|---|---|---|
| Key: exact | 72.6 % | 66.6–78 % | 234 |
| Key: exact or close (relative / fifth) | 83.8 % | 78.5–87.9 % | 234 |
| Tempo: within 2 % | 91.3 % | 73.2–97.6 % | 23 |
| Tempo: right, or half / double | 100 % | 85.7–100 % | 23 |
| Tempo within 2 %, loops with drums | 91.3 % | 73.2–97.6 % | 23 |
Upper bound: synthetic test clips
The engine was also scored on 2400 generated clips (chord progressions, bass and drums at known keys and tempos) that it was never tuned on. Real recordings are messier, so read these numbers as the best case, not as what to expect from your song.
| Measure | Right | 95 % CI | Loops |
|---|---|---|---|
| Key: exact | 77.7 % | 76–79.3 % | 2400 |
| Key: exact or close | 91.7 % | 90.5–92.7 % | 2400 |
| Tempo: within 2 % | 94.5 % | 93.5–95.3 % | 2400 |
| Tempo: right, or half / double | 98.5 % | 97.9–98.9 % | 2400 |
What the measures mean
- Tempo within 2 %: |bpm - label| <= 2 % of label.
- Right, or half / double: within 2 %, or within the same tolerance of half or double the label. The BPM finder shows the half and double values for this reason.
- Key exact: same tonic and mode.
- Exact or close: exact, relative major/minor, or a fifth away (Camelot +-1, same letter).
Limitations
Loops, not full songs. The test material is short loops uploaded to Freesound, a lot of it electronic. A full song gives the finder more to work with (a chorus that lands on the home chord), but also more to get confused by: key changes, long intros, spoken parts. A song that changes key gets one answer, usually the key it spends the most time in.
Key confusions are musical, not random. When the key is wrong it is usually a neighbour: the relative major or minor, which uses the same seven notes, or the key a fifth away, which differs by one note. That is why the result shows a second guess when it is not sure. On the synthetic clips the misses split like this:
- A fifth away (e.g. G major for C major): 43 % of misses
- Something else: 33 % of misses
- Relative major / minor (e.g. A minor for C major): 20 % of misses
- Same tonic, other mode (e.g. C minor for C major): 5 % of misses
Modes and blues. Songs in Dorian or Mixolydian, and blues built on dominant 7th chords, do not fit "major or minor" cleanly; expect the major or minor key that shares the most notes.
Tempo without drums. Loops without drums scored 64 % against 78 % with drums. Rubato, free-time intros and live tempo drift lower the score further; tap the tempo when the result says it is not sure.
Microphone recordings. These tests use clean files. Listening through a phone microphone adds room noise and loses the low end, so results from Listen are less reliable than results from the file itself.
Dataset and licence
Real-music results use the Freesound Loop Dataset (Ramires et al. 2020), licensed under CC BY 4.0. The loops were uploaded to Freesound by their creators; the tempo and key labels come from the dataset's annotators. No audio from the dataset is published on this site, only the aggregate scores above. The analysis code that produced them runs the same way in your browser when you use the finders.
More guitar tools
- Song key finderkey of a song from audio
- BPM findertempo from an audio file
- Metronomepractise to a steady click
- Guitar tunertune up first
- Chord progression generatorprogressions in any key, with audio
- All guitar toolsevery tool, grouped by job