BPM Detector
Detect the tempo of any song in your browser, with a confidence score, beat grid and downloadable beat times.
Drag & drop a song here, or click to browse
No uploads. Your audio stays on your device.
Tap tempo
No file handy? Play the track and tap along — the average gap becomes the BPM.
Tap the button in time with the music.
—
BPM
—
Confidence: — —
Tempo detectors sometimes lock onto half or double the real pulse. Switch reading if the number feels off:
How it works
Drop an MP3, WAV, M4A, OGG or FLAC file and the Web Audio API decodes it inside this page — nothing is uploaded, so demos, rough mixes and DJ promos never leave your device. The tool builds an onset envelope (a running measure of how sharply the energy jumps, which is what your ear hears as a hit), then correlates that envelope against every candidate tempo in the search range to find the spacing that lines the hits up best.
The winning spacing is refined by fitting a straight line through the detected onsets, so the answer is accurate to a tenth of a BPM rather than snapped to the analysis grid, and a phase search finds where beat one sits. Because tempo is ambiguous by nature — a 140 BPM track can be read as 70 — the Half-time and Double-time buttons let you pick the reading that matches how you count it, and every number, including the downloadable CSV of beat times, updates with it. Steady, percussive material (house, hip-hop, rock) reads near 100% confidence; rubato piano or ambient pads will read low, and that is the honest answer.
Frequently asked questions
How do I find the BPM of a song?
Drag the audio file onto the drop zone and the tempo appears straight away — the page decodes the track with the Web Audio API, measures where the hits land, and correlates that against every tempo in the search range. If you do not have the file, play the track anywhere and hit the Tap tempo button in time with the beat: after two or three taps the average gap is shown as a BPM.
Is this BPM detector accurate?
On steady, percussive material it is accurate to a tenth of a BPM, because the winning beat spacing is refined by fitting a line through the detected onsets instead of snapping to the analysis grid. Tempo is genuinely ambiguous, though: a 140 BPM track can be read as 70, so a confidence score is shown and the Half-time and Double-time buttons let you switch to the reading you actually count in. Rubato piano, ambient pads and spoken word will read low confidence — that is the honest answer, not a bug.
Does my music get uploaded anywhere?
No. There is no server involved at all: the file is read straight from your device, decoded in the browser tab, and analysed with JavaScript. Unreleased mixes, client demos and DJ promos never leave your computer, and there is no account, no ads and no file-size upload limit beyond what your browser can hold in memory.