Metronome & Tap Tempo

A sample-accurate Web Audio metronome, subdivisions, accents, and tap tempo, without the drift of a JavaScript timer.

120
BPM

Beats per Bar

Subdivision

Why This Metronome Doesn't Drift

A naive metronome built with setInterval drifts over time because JavaScript timers aren't sample-accurate. The browser can delay a callback by several milliseconds under load, and those small errors accumulate audibly over a long session. This tool instead schedules every click's exact audio start time in advance using the Web Audio clock, then checks slightly ahead of playback to queue the next batch of clicks. The standard "lookahead scheduler" pattern used in serious browser-based audio tools.

Subdivisions Explained

Using Tap Tempo

Click "Tap Tempo" in time with a song or performance at least 4 times. The tool averages the intervals between your taps to estimate BPM, which is often faster and more intuitive than dialing in a number directly when you already have the tempo in your head or ears.

FAQ

Q: Why does the first beat sound different from the others?
A: It's accented (louder, slightly higher pitch) to help you feel the downbeat of each bar, matching how most physical metronomes and DAW click tracks work.

Q: Can I use this while recording in another app?
A: Yes, though for actual DAW recording you'll generally get better results from your DAW's own internal click track, since it can stay sample-locked to your recording timeline in a way a separate browser tab can't.

Translate this page

Machine translation provided by Google Translate, on Google’s servers. We do not check these translations and they will get technical terms wrong. The English page is the authoritative one. Following a link sends this page’s address to Google. Your browser may also offer to translate this page itself, which keeps the request on your device.