← All Tools

Ready

0

Reps

What is a tempo counter?

Tempo Counter is a workout metronome that plays precisely timed beep tones at whatever BPM (beats per minute) you set. It uses the browser's audio scheduling capabilities directly, so the beat stays accurate from start to finish without gradually drifting out of time the way a simple timer would. Each rep's down phase and up phase play a different tone, so you can keep the beat by ear without watching the screen, and the rep counter automatically increases every time a pair of beats completes. Not every exercise suits the same speed, so picking an exercise like push-up, sit-up, or squat — anything with a clear down/up motion — automatically fills in a sensible default BPM for that movement. Many free metronome and beat-counter apps play their beat using setInterval, which visibly drifts after just a few minutes — this tool was built from the ground up on audio scheduling (AudioContext), so it never drifts.

How to use it

Pick the exercise you're doing from the list and a sensible default BPM fills in automatically. You can still edit the BPM by hand if you like, or pick "Custom" if your exercise isn't listed and set whatever speed you want. Press "Start" and the beat begins playing at that speed right away. The down phase plays a lower tone and the up phase plays a higher tone, and the rep counter increases by one every time a down-up pair completes. When you're done, press "Stop" to end the session.

When it comes in handy

Why AudioContext scheduling beats setInterval for timing

Generating a beat with a plain setInterval() call means each tick can get delayed by a few milliseconds whenever the JavaScript engine is busy with something else (rendering, garbage collection, etc.), and those small delays accumulate into noticeable drift after just a few minutes. This tool instead uses look-ahead scheduling based on the browser's audio clock (AudioContext's currentTime), queuing up several upcoming beats in advance. Because the audio clock runs on its own precise timer separate from other JavaScript work, the beat never drifts no matter how long it plays.

Ways to use exercise tempo

Frequently Asked Questions

Does the beat drift out of time over a long session?
No. Upcoming beats are scheduled in advance at precise times using the browser's audio scheduling engine (AudioContext), which keeps the beat far more accurate than a regular timer would.
How are reps counted?
The rep count goes up by one every time a down beat and an up beat — two beats total — complete.
What BPM range is supported?
You can set anywhere from 20 to 240 BPM.
Does picking an exercise lock the BPM?
No. Picking an exercise just fills in a sensible default BPM for it — you can still edit the BPM field freely afterward.
Is the beat still accurate with earbuds or a Bluetooth speaker?
Yes — Bluetooth devices can add a bit of output latency, but that's a delay in the sound's travel path, not a change in the interval between beats. If the Bluetooth delay bothers you, wired earbuds give a more immediate feel.
Can I start without picking an exercise type?
Yes — choose "Custom," or pick any category and simply change the BPM value to whatever you want.
Does the sound stop if the browser tab is in the background?
No, the Web Audio API is designed to keep playing in the background, so you can keep hearing the beat while doing something else.