.mn{max-width:52rem;margin:0 auto;padding:1.5rem} .mn .big{font-size:clamp(3rem,12vw,6rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums} .mn .dot{width:1.5rem;height:1.5rem;border-radius:50%;display:inline-block;background:currentColor;opacity:.2;transition:opacity 60ms} .mn .dot.on{opacity:1} .mn table{width:100%;border-collapse:collapse;margin:1rem 0} .mn th,.mn td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid rgba(128,128,128,.3);vertical-align:top} .mn th{white-space:nowrap;width:9rem} .mn .row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin:.75rem 0} .mn button{padding:.6rem 1.1rem;font-size:1rem;cursor:pointer} .mn .note{opacity:.75;font-size:.9rem}

Metronome

This is not a medical device and this is not medical advice. Nothing here diagnoses, treats, cures or prevents any disease, and nothing here is offered as capable of improving anyone’s health or bodily functions. What is offered is the published research, including the studies that found no effect, so you can weigh it yourself.

100 BPM

How this is built, and what it can and cannot measure

SchedulingLook-ahead against AudioContext.currentTime, 25 ms timer / 100 ms horizon. Never setInterval for a note.
ClickSharp attack by default. A slow attack moves the perceptual centre and shifts every measurement.
Tap tempoMedian of a rolling window, first interval dropped, window reset on a 2x outlier.
Visual beatA guide, not a reference. Per-bar above 130 BPM, off above 180 BPM, never full-field.
LatencyIrrelevant to practising. Fatal to measuring. The panel below shows what your device admits.

Your device

(press Start — the audio clock only exists after a gesture)

A metronome is a fine practice tool on any device: if the click is late, everything you hear is late together. It is not a measuring instrument for how early or late you play, because the delay between your finger and the browser is larger than the thing being measured and no browser API reports it. That is a fact about the platform, not a limitation we chose.