Tap Tempo (BPM Counter)
Tap along to any song to find its tempo in beats per minute, with a rolling average so a single mistimed tap does not throw the figure.
Tap the button or press the spacebar in time with the beat.
Only the first and last tap count
The obvious way to find a tempo is to measure every gap and average them. Write that sum out and almost everything cancels — each interior tap appears once positive and once negative:
(t₂−t₁) + (t₃−t₂) + … + (tₙ−tₙ₋₁) = tₙ − t₁
Only the endpoints survive. Checked over three thousand random tap sequences, averaging every gap and dividing first-to-last by n−1 agree to about 10⁻¹⁴ milliseconds — floating point noise and nothing else. Nudge every interior tap and the answer does not move at all.
Which sounds like the middle taps are wasted. They are not — they are what establishes that you are still tapping the same tempo rather than drifting onto another. But they contribute nothing to the number.
So tapping longer helps far more than you would expect
If only the endpoints matter, and each carries the same human timing jitter, the error in the measured interval is fixed and gets spread over n−1 beats. So accuracy improves in direct proportion to how long you tap — not by the square root, as it would if you were averaging independent measurements. Simulated at 120 BPM with 25 ms of jitter — each tap landing anywhere within ±50 ms of the beat, so it is out by 25 ms on average — over 20,000 runs, rerun on every build:
| Taps | Accuracy | |
|---|---|---|
| 2 | ±8.18 BPM | |
| 3 | ±4.06 BPM | |
| 4 | ±2.70 BPM | |
| 5 | ±1.98 BPM | |
| 8 | ±1.15 BPM | |
| 12 | ±0.73 BPM | |
| 16 | ±0.54 BPM | |
| 24 | ±0.35 BPM | |
| 32 | ±0.26 BPM |
Doubling the taps halves the error, every time — going from four taps to sixteen is not a modest refinement, it is five times more accurate. A square-root law would have given only double. Reaching ±1 BPM takes about 10 taps and ±0.5 takes 19.
Which is why any tap tempo control worth using keeps accepting taps instead of deciding after three — and why it should drop the whole run after a long pause, since a stale first tap is the one thing that can wreck the answer outright.
How to use
- Tap steadily on the beat, not on every note.
- Keep tapping for several bars.
- Read the averaged tempo.
- Reset and start again if you lose the beat.
Frequently asked questions
How many taps do I need?
At least eight, and more is better. A rolling average over several bars smooths out the natural variation in human tapping, whereas two or three taps produce a figure that can be several beats per minute out.
Why does my reading drift?
Because tapping is a physical act with its own timing error, and because you may be tapping slightly ahead or behind consistently. Consistent lag does not matter for tempo — only the interval between taps does — but variable timing does, which is why averaging helps.
Am I tapping the right beat?
That is the usual source of a doubled or halved reading. Tapping every eighth note rather than every quarter gives double the true tempo; tapping every other beat gives half. Both are internally consistent, so the tool cannot tell — checking the result against a metronome resolves it.
What are typical tempo ranges?
Very roughly: ballads sit around 60 to 80 beats per minute, much pop and rock around 100 to 130, house around 120 to 130, drum and bass around 170 to 175. These are conventions rather than rules, and plenty of music sits deliberately outside them.
Is the tempo of a recording always constant?
Not for anything played by humans without a click. Live and older recordings drift, sometimes substantially, and a single average tempo describes them only roughly. Modern productions built to a grid are constant by construction, which is why they tap so cleanly.
What is this useful for?
Setting a metronome to match a recording, choosing a DJ transition, entering the right tempo in a recording session, and working out whether two tracks will beat-match. It is far quicker than counting beats against a watch.
🔒 This tool runs entirely in your browser. Nothing you enter is uploaded, logged, or stored.