Music utility

Metronome

A steady, accurate click — for practice, recording, or anything that needs a tempo.

Current tempo

120 BPM

Moderato

Transport

Tip: press Space to start or stop.

Options

40 Default 120 240

Tap at least twice to set BPM.

Beats per measure
80%

About this tool

A metronome that runs in the browser, stays in time, and never asks for an account. Set a tempo between 40 and 240 BPM, pick how many beats are in a measure, and press Start. The first beat of each measure is accented so you always know where you are inside the bar.

The interface is deliberately small. A big tempo readout, a beat indicator that lights up in sync with the click, a Start/Stop button, a slider plus a numeric input for fine tempo control, a tap-tempo button, and a beats-per-measure selector. That is all most practice sessions need.

Your last tempo and beats-per-measure setting are remembered in localStorage so the next visit starts where the last one left off. Nothing is sent to a server — the click is synthesized in your browser using the Web Audio API.

How it works — and why it does not drift

Naïve browser metronomes use setInterval or setTimeout to fire a sound on every beat. That works at slow tempos and a quiet browser, but as soon as the main thread gets busy — a scroll, a layout, a tab switch — timers slip by a handful of milliseconds. Across a few minutes of practice that adds up to an audibly drunk click.

This metronome uses the well-known lookahead scheduler pattern. A short JavaScript timer runs every 25 milliseconds and looks roughly a tenth of a second into the future. While the next beat falls inside that window, the scheduler queues an oscillator to fire at its exact AudioContext.currentTime, then advances the next-beat time by 60 / BPM seconds and moves on. The audio thread plays the click at the precise scheduled sample.

The visual beat indicator reads the same audio clock, not a separate JavaScript timer. A requestAnimationFrame loop watches the queue of scheduled beats and lights the matching dot when the audio clock reaches each scheduled time. The dot and the click stay locked together, even if the rest of the page is busy.

Because the scheduler reads the current tempo every time it queues the next beat, dragging the slider while the metronome is running takes effect smoothly on the next beat — no restart, no glitch.

Practical practice notes

A metronome is a measuring instrument before it is a music instrument. It tells you whether your time is steady, not whether your playing sounds good. Treat it that way:

  • Practice slow enough to be clean. If you cannot play the passage perfectly at a tempo, you are not "almost there" — you are practicing mistakes. Drop the BPM until the passage is effortless, then climb in small steps.
  • Listen for the click between your notes. If you can hear it disappear behind a note that lands exactly on the beat, you are placing the note right. If the click "moves," you are.
  • Subdivide. Set Beats per measure to a small number that matches the pulse you feel, not the bar line. For 16th-note feel at a slow tempo, a 4-beat click with you counting "1-e-and-a" between them is more useful than cranking the tempo up.
  • Use accented downbeats. The accent on beat 1 tells your hands where the measure begins. This matters for any passage with syncopation or rests near the bar line. If the music has no metric anchor, drop to 1 beat per measure for an unaccented pulse.
  • Tap tempo to match a recording. If you are learning by ear and want to know what BPM you are working with, tap along with the recording for four to eight beats. The number that appears is the closest steady tempo for those taps — useful for setting a practice target.

Frequently asked questions

What BPM should I practice at?

Start at the slowest tempo where you can play the passage cleanly with no missed notes, no rushed transitions, and no tension. That is often 40–60% of the target tempo. Once a few clean repetitions in a row feel easy, raise the BPM by about 4–8 and repeat. Trying to play at performance tempo while still making mistakes mostly trains the mistakes.

How does tap tempo work?

Tap the Tap button along with the music for at least two taps. The tool measures the time between recent taps, averages them, and converts that to beats per minute. The longer you tap, the more it averages out small inaccuracies. If you stop for more than about two seconds, the rolling window resets so the next session starts fresh.

Is this metronome accurate? Does it drift?

It should not drift audibly even over long practice sessions. The scheduler uses the Web Audio clock — a high-precision audio-thread timeline — and schedules each beat at an exact sample time rather than firing a setTimeout per beat. Timer-driven metronomes can stutter when the page is busy; the audio clock is unaffected by main-thread jitter.

Does the metronome work offline?

Yes. After the page loads once, the HTML, CSS, JavaScript, and the audio are all client-side, so it will keep working if you go offline. There is no server call to start the metronome and no streamed audio sample — clicks are synthesized in the browser.

Does this metronome send any data?

No. There are no analytics, no tracking pixels, and no network calls during use. Your tempo and beats-per-measure preferences are stored in your browser's localStorage so they survive a reload, and nothing else is recorded. You can verify this in your browser's network tab.

Why does an accented downbeat help?

Most music is organized in measures of 2, 3, 4, or 6 beats, with the first beat carrying the strongest pulse. Hearing that downbeat keeps you oriented inside the measure, especially during long phrases or syncopated passages. If the music has no fixed meter, set Beats per measure to 1 for an unaccented click on every beat.

Why is there no sound when I first press Start?

Browsers block audio from playing until the page receives a user gesture. The metronome creates its AudioContext on the first click of Start or Tap, which counts as that gesture. If audio still does not play, check that the tab is not muted and that the volume slider is above zero.

What do the Italian tempo names mean?

The label under the BPM (Largo, Andante, Allegro, and the others) is the traditional Italian name for that tempo range. Composers used them as a rough guide before metronome marks were common, and modern editions still print them. The boundaries are not exact — different sources disagree by 5–10 BPM — so treat the label as a hint, not a definition.