cratefox

How accurate is it, really?

Most tools quote accuracy measured on their own libraries. We used to as well: our old number was 69%, graded partly against tags the detector itself had written. That is circular, so we retired it. These numbers come from GiantSteps, the public academic dataset of real Beatport tracks with independent key, tempo, and genre labels. 1225 tracks, no cherry-picking, weak spots included.

64.9%
Key: Camelot-exact. Of 604 tracks with independent key labels, the detected key matched exactly.
77.8%
Key: safe to mix. Exact or a non-clashing neighbor; only 22.2% would mislead a harmonic mix, and you can override any key before export.
49.8%
BPM: strict scoring. Of 664 tempo-labeled tracks, within 1 BPM at the exact 1x tempo. Most misses are half-time or double-time hearings, honest detail below.

Run of 2026-07-07, frozen in the repo (tests/giantsteps/RESULTS_2026-07-07_edmm.txt). The BPM figure includes the same-day tempo fix, verified on the full 1225-track set; the frozen file shows 40.4% before that fix.

What those words mean at the decks

By genre, including where we are weak

GenreKey-labeled tracksKey exactDangerous
Progressive house8861.4%22.7%
Tech house8155.6%28.4%
Deep house7777.9%14.3%
Trance5870.7%19.0%
Electro house5174.5%11.8%
House4770.2%21.3%
Drum and bass3857.9%28.9%
Techno3447.1%41.2%
Dubstep2259.1%18.2%
Electronica2065.0%25.0%
Minimal1145.5%54.5%

Small buckets are noisy; n is shown so you can judge. The two honest sore spots: minimal and techno, where sparse, percussive arrangements give the detector the least harmonic evidence. If you play those genres, audition keys before you trust them.

Reproduce it yourself

The audio is not ours to redistribute, but the dataset is public and the whole pipeline is in the repo. Any Cratefox install can re-run the ruler:

mkdir -p ~/cratefox-reference/giantsteps && cd ~/cratefox-reference/giantsteps git clone --depth 1 https://github.com/GiantSteps/giantsteps-key-dataset.git git clone --depth 1 https://github.com/GiantSteps/giantsteps-tempo-dataset.git bash tests/giantsteps/dl.sh # md5-verified audio from the JKU academic mirror python tests/giantsteps/build_csv.py # independent truth labels -> giantsteps_truth.csv python tests/bench_analyze.py --root audio --truth-csv giantsteps_truth.csv

Same command, same data, same numbers. If yours differ, write hey@cratefox.app and we will publish the correction.

The demo is simulated. These numbers are not.

The animated crate on the homepage is an illustration with fictional tracks (so no real record gets mis-keyed in marketing). This page is the opposite: real tracks, independent labels, misses counted. That split is deliberate.

Get your invite →