About Find BPM
Find BPM answers two questions about an audio file — how fast it is and what key it is in — and answers them in the browser tab you already have open. This page covers exactly what it measures, how the measurement works, how far to trust each number, and what happens to the audio you feed it.
What it measures
Each track you add produces six figures:
- Tempo, anywhere from 40 to 240 BPM, to one decimal place, with the half-time, double-time and other plausible readings listed beside it.
- Key, one of all 24 majors and minors, written out in full and paired with its Camelot code and relative major or minor.
- Beat clarity and key match, two 0-100 scores. The first says how strongly one repeating pulse stood out; the second is the gap between the winning key and the runner-up. Neither is a probability — they exist to tell you when to check by ear.
- First beat, the offset in seconds from the start of the file to the first beat of the detected grid, which is what the play-along dots and the metronome click follow.
How the tempo is found
- Decode. The browser turns the file into samples and resamples them to 11.025 kHz — plenty for rhythm, and four times less work than the original rate.
- Onset envelope. A short-window spectrum is taken every 23 milliseconds, and each frame is scored by how much energy it gains over the one before. Three frequency bands are averaged separately and then weighted towards the bass, because a plain sum across bins lets one soft cymbal outvote a kick drum.
- Autocorrelation. Comparing that curve with delayed copies of itself shows which spacing it repeats at. A comb of the first three multiples plus a preference for tempi near 120 BPM decides which reading to lead with — this stage is what separates a beat from its own subdivisions, since a soft hi-hat lining up with a loud kick multiplies out to almost nothing.
- Refinement. Whole-frame delays are a coarse grid: near 130 BPM they land three BPM apart. So the chosen tempo is sharpened by measuring the envelope's Fourier coefficient across a narrow band in 0.02 BPM steps, and the phase of that coefficient gives the first beat without a separate search.
On synthetic material with a known tempo this returns the exact figure — 128.0 for 128, 174.0 for 174 — and it holds up when the timing is nudged by ±12 milliseconds a beat, the way a drummer plays. Recordings that never settle on one tempo are the honest limit, and the beat-clarity score is where that shows.
How the key is found
A second pass takes a much longer window — about a third of a second of audio at a time — so that neighbouring semitones stay apart in the spectrum. Every bin is assigned to the note nearest it, tapering to nothing halfway between two notes so that noise and cymbals contribute little, and each bin also votes for the notes it could be an overtone of. That last step matters more than it sounds: the third harmonic of every note is a fifth above the octave, so without folding the overtones back down, a I-IV-V progression in A reads convincingly as E major.
The twelve totals are then correlated against the Krumhansl-Schmuckler key profiles in all 24 rotations, and the best fit is the answer. Because a key and its relative share every note, the two are often close; the panel prints the relative key and the runner-up rather than pretending otherwise.
Long files are read from the middle — up to three minutes of it. Intros are often beatless and outros trail off, so the middle of a track is the most representative stretch, and the panel says which window it used.
What happens to your audio
Nothing leaves your device. Decoding uses the browser's own audio codecs, the analysis runs in a Web Worker in the same tab, and playback reads the file straight from disk through an object URL. No audio, no filename and no result is uploaded, logged or stored by Find BPM.
Because there is no server in the loop, there is also nothing to wait for: a 60 MB lossless file analyses as quickly as your CPU can decode it, with no upload ahead of it. Once the page has loaded you can disconnect from the network entirely and keep working. Closing the tab, removing a track from the list or pressing “Clear list” releases the in-memory copies immediately; nothing is written to storage, so nothing survives between visits.
This describes what Find BPM does with your files, which is nothing beyond measuring them for you. It does not change what a browser extension, a network proxy or the device itself might otherwise be doing.
Ready to analyse a track?
Start with the BPM finder for tempo first, or the key finder if the key is what you came for.