Audio analysis · No upload
Count a song’s BPM on your device
Drop a song to measure its tempo in BPM, with any half or double reading that fits nearly as well.
The strip draws the chosen beat grid over the measured onset envelope, so you can see whether the grid lines land on the hits. The list gives that grid in seconds: one constant period, with its phase placed where it collects the most onset energy. A strong off-beat hit can pull the grid off the musical beat, and each time lags by about one 6 ms analysis frame. The confidence label (strong, fair or weak) comes from the two numbers printed after it.
One tempo for up to two minutes from the middle, resampled to mono at 11,025 Hz; Analysed shows the span. Tempo changes are not tracked. Silence, fewer than 16 onsets, low scores or a strongest period outside 40–220 BPM can yield “no steady tempo found”; over ten minutes is refused by name. Takes .wav, .wave, .mp3, .m4a, .aac, .ogg, .oga, .opus, .flac, .aif, .aiff and .weba.
Tap tempo yourself
Press Tap, or focus it and press Space or Enter, in time with whatever you are listening to. The tap counter measures only your tapping and has its own readout, so nothing you tap changes the file’s estimate above. It uses your last eight intervals and shows their spread beside the tempo: the wider the spread, the less even your taps were. A pause of more than three seconds starts a new count, and the note under the buttons says so. The counter makes no sound, and nothing on this page flashes.
How this counter works
Your browser reads the file and decodes its audio. The browser’s resampler mixes the samples to mono at 11,025 samples per second, and the Sample rate row shows that analysis rate. The tool analyses up to two minutes from the middle of the recording, to reduce the influence of intros, count-ins and fade-outs, and prints the exact span beside the estimate. Files longer than ten minutes are refused by name, because the whole recording must first fit in memory as decoded samples. Six bandpass filters, centred on 70, 175, 400, 900, 2100 and 4000 Hz, separate rhythmic activity at different frequencies, so a strong kick drum does not mask every higher-frequency onset. Each band is rectified, smoothed with a 25 millisecond time constant, compressed logarithmically and differenced, and the rises add up to one onset-strength signal. Autocorrelating that signal gives a peak at each interval that repeats. A fixed preference near 120 BPM selects a reference peak. That preference is an assumption about music built into the tool; nothing in your file sets it. The tool then chooses the shortest eligible period between 40 and 220 BPM with a peak at least 85% as high as that reference, which is not necessarily the absolute strongest. Parabolic interpolation and later repeating peaks refine the period, a phase search places the beat grid where it collects the most onset energy, and the grid ends where the onsets end.
The readout compares the chosen peak with the band mean and reports the fraction of selected strongest onsets near the grid. Neither number shows whether the chosen beat level is right: accents on every other beat can make a tempo and its half fit about equally well. Half, double, 3:2 or 2:3 readings no more than 15% below the chosen peak are listed, with out-of-band readings labelled. A strongest out-of-band peak can cause a refusal if it qualifies and the in-band candidate is less than a tenth as high; otherwise an in-band half or double reading can still be reported. This page reports one tempo for the analysed span. A changing tempo can lower the scores or cause a refusal, but it is not tracked and can go unflagged. The tool does not measure key, genre, time signature or mood.
BPM on this page is the tempo of a music recording. Heart rate uses the same unit, but this tool measures nothing about a person.