BPM Tap-Tempo & Metronome

Tap a key or click the big pad to find a tempo in BPM, then play a metronome click with a time signature, subdivisions, and an optional humanize jitter. The tap-tempo uses a median filter over the last 8 intervals, so a single sloppy tap doesn't throw the read. Runs in your browser, no upload, no tracking.

How to use it. Press Space (or click the pad) four or more times in time with what you want to measure. The headline shows the median BPM and a stability indicator. Pick a tempo with the slider or +/, choose a time signature, hit Start. The first beat of every bar is the accent (higher pitch).

Detected tempo
BPM
Tap the pad to start.
BPM
Time signature
Subdivision
Volume
Humanize ±0 BPM
Click Start to hear the click. Web Audio is unlocked on first user interaction.
Bar 1 · Beat 1/4

Tempo ladder

Italian tempo markings with the canonical BPM range midpoint. Click to load.

How the math works

  • Tap-tempo. Every tap records a timestamp. Intervals shorter than 20 ms are debounce (you double-clicked). Intervals longer than 2 s reset the buffer (you walked away). Intervals that imply a tempo outside 30–300 BPM are dropped. The remaining intervals are kept in a rolling window of the last 8 and the median is the displayed BPM.
  • Stability. The coefficient of variation (stddev ÷ mean × 100) of the rolling intervals. Below 8% the indicator turns green; above it stays amber. A 120 BPM reading with a 2 BPM stddev would be ~1.7% — rock solid.
  • Metronome schedule. A 4/4 bar at 120 BPM is 2 seconds long. A Web Audio oscillator fires the accent (a short 1320 Hz triangle blip) on the downbeat and a quieter 880 Hz blip on the off-beats. Subdivisions (eighths, triplets, sixteenths) fire extra blips at the right fraction of a beat.
  • Humanize. A small Gaussian jitter (in BPM) added per beat. At ±0 it's a perfect metronome. At ±3 it sounds like a confident human player. At ±8 it sounds like a nervous human player — useful for practising with a drummer who has swing.