More than one flashing number
A BPM counter can be useful without pretending to hear the source. BPMCounter.click records the moments when you deliberately press its tap control, click, touch, or use Space or Enter. The browser measures the gaps between accepted taps and turns that temporary sequence into a visible session. You see how many taps were recorded, how long the session ran, what the last gap was, and how the complete sequence compares with a recent window.
That distinction matters. A single rate can conceal a missed event, a hesitant first press, or a switch from quarter notes to eighth notes. A session ledger makes those changes observable. It does not decide what the music “really” is. You choose the pulse and create the evidence.
What the counter records
The first accepted tap establishes a time origin. Each later tap creates one interval. Ten taps therefore contain nine measured intervals. The implementation uses the browser’s monotonic performance.now() clock so wall-clock adjustments do not rewrite an active sequence.
For every accepted interval, the page calculates an instantaneous rate as 60,000 divided by milliseconds. It then reports the arithmetic mean of those interval rates and their median. It also shows the mean and median interval duration, because milliseconds reveal the direct observation behind BPM.
A configurable recent window uses only the newest intervals. This lets a settled ending differ from a hesitant beginning without deleting either. Range and variation remain descriptive. They are not accuracy percentages, grades, or claims about musical skill.
A transparent example
Suppose five taps occur at 0, 500, 1,010, 1,505, and 2,005 milliseconds. The four intervals are 500, 510, 495, and 500 milliseconds. Their interval rates are 120, about 117.65, about 121.21, and 120 BPM.
The raw mean of those four rates is about 119.72 BPM. The median is 120 BPM. The interval range is 15 milliseconds, from 495 to 510. The session is small, but every number can be recomputed. If one gap had been 1,000 milliseconds, the range and mean would expose it rather than quietly removing it.
Choose one pulse before tapping
Follow a consistent event: every quarter-note beat, every dotted-quarter in compound meter, every bar boundary, or another repeatable landmark. Do not alternate levels inside one session. Tapping kick and snare indiscriminately may double the apparent rate; tapping only every second beat may halve it.
When the pulse is difficult, count aloud for a few cycles before beginning. The counter is not monitoring the source, so it cannot know whether your chosen event is musically appropriate.
Sessions stop on purpose
An adjustable reset timeout defines when a late next press starts a fresh sequence. This protects a forgotten tab from merging two unrelated attempts. The interface announces an automatic restart before treating the new tap as the first event. A manual Reset control clears timestamps and derived values immediately.
No tap history is saved to an account or database. Reloading, resetting, closing the tab, or an automatic timeout can erase the active state. Copy only a summary you genuinely need and store it using your own approved process.
How this differs from nearby tools
This homepage leads to a counter plus session statistics, not a minimalist giant button. The tap interval analyzer accepts an existing millisecond list. The outlier trimmer applies explicit deletion rules and preserves a before-and-after view. The bar pulse counter converts one tap per bar through a visible meter assumption.
If you already counted a fixed number of beats and measured total seconds, this product is not that workflow. Here, each live press creates a timestamp and each neighboring pair creates an interval.
Limits worth keeping visible
Browser scheduling, hardware, touch handling, motor response, and attention all affect a sequence. Background tabs may be throttled. Wireless peripherals can add variable delay. A short session can move sharply after one unusual gap. None of these facts makes the tool useless; they define what the result means.
BPMCounter.click does not use audio, a microphone, files, URLs, device listening, remote APIs, song metadata, accounts, a database, or persistent storage. It cannot identify a track, meter, beat level, or performance quality.
Frequently asked questions
How many taps do I need?
Two taps create one interval. More intervals usually make unusual gaps easier to see, but there is no universal sufficient count. Use a stable passage and repeat when the result matters.
Why are mean and median different?
The mean responds to every interval rate. The median follows the middle of the ordered rates and is less moved by one extreme gap. Inspect both and the raw interval list.
Does the page keep listening after I stop?
No. It never listens. Only an explicit supported press records a timestamp.
Is variation an accuracy score?
No. It describes the spread of entered timing events. It cannot verify the source pulse or judge the person tapping.
Open the counter, choose a pulse, make a few preparation movements away from the control, then record a deliberate session. Read the last interval, full summary, and recent window before deciding whether to repeat.