Why most browser metronomes drift
JavaScript timers are not precise enough for musical timing, and browsers throttle them in background tabs. A metronome that schedules each click with setTimeout will audibly wander within a minute.
This one schedules clicks ahead of time on the Web Audio clock, which runs independently of the page and is sample-accurate. The result stays in time whether or not the tab is in front — which is the difference between something you can practise with and something you cannot.
Practising with it properly
Set it slower than feels necessary. The point is to play a passage accurately, and accuracy at a slow tempo transfers upwards while inaccuracy at speed only entrenches itself.
A useful drill is to silence alternate beats once a passage is solid — keeping time in the gaps is much harder than following a click, and it is closer to what playing with other people requires.
Frequently asked questions
Does it stay accurate in a background tab?
Yes. Clicks are scheduled on the Web Audio clock rather than with page timers, which browsers throttle. Timer-based metronomes drift audibly within a minute.
What tempo should I practise at?
Slower than feels necessary. Accuracy at a slow tempo transfers upward; speed without accuracy entrenches the mistake.
Can I accent the downbeat?
Yes — set the time signature and the first beat of each bar is accented, which is what makes it useful for anything other than four-four.
Something wrong with this tool, or an idea for it? Tell us