SnipAudioCut audio

How accurate is a live BPM detector listening through the microphone?

Published 2026-10-13 · by patrick-eu

Short answer: a live BPM detector is about as good as the same detector on a file, as long as the music is at least as loud as everything else the microphone hears. We played 35 test songs at tempos we set ourselves into the live microphone reading of this site's BPM finder, with noise, room echo and talking mixed in:

So: hold the device where the music is louder than the room, wait for three or four readings that agree, and check the half or double time line before you trust the big number.

What the live reading does

When you press Start listening on the BPM finder, the page keeps the last 10 seconds of microphone sound in memory and, every 2 seconds, runs the same tempo code it uses for dropped-in files on that stretch. It waits until it has at least 6.5 seconds, which is why nothing shows before the 8-second update. It asks the browser to switch off echo cancellation, noise suppression and automatic gain, because those are made for voices and can flatten drum hits. If the sound is very quiet (below 0.003 of full scale on average, about -50.5 dBFS) it shows Too quiet instead of a number. All of this is in the page's own code.

Because it only ever looks at 10 seconds, the live reading has the same habits as the file reading, which our guide to half and double BPM readings measured: a beat can be counted at more than one speed, so the right tempo is often the second line, not the big number. Noise and echo do not create a new kind of mistake so much as change how often each of those readings wins.

How we tested

What noise, echo and talking did to the reading

What else the microphone heardRight tempo on screenBig number exactly rightSongs right in all 12 readingsLabel on the readings
Nothing (clean)91.4%53.8%32 of 35all Strong beat
Noise 20 dB quieter than the music91.4%51.4%32all Strong beat
Noise 10 dB quieter94.3%54.3%32all Strong beat
Noise 5 dB quieter96.4%55.2%32410 Strong, 10 Moderate
Noise as loud as the music95.5%55.2%32208 Strong, 212 Moderate
Noise 5 dB louder than the music70.2%49.3%15142 Moderate, 278 Weak
Echo 0.5 s, as loud as the direct sound91.4%51.4%32all Strong beat
Echo 0.5 s, 6 dB louder92.4%51.2%32all Strong beat
Echo 0.5 s, 12 dB louder91.4%50.2%32all Strong beat
Echo 1.5 s, as loud as the direct sound92.1%49.3%32all Strong beat
Echo 1.5 s, 6 dB louder94.3%48.3%33408 Strong, 12 Moderate
Echo 1.5 s, 12 dB louder94.5%45.7%33373 Strong, 47 Moderate
One voice 10 dB quieter than the music91.0%53.8%31all Strong beat
One voice as loud as the music90.5%52.9%31386 Strong, 34 Moderate
One voice 10 dB louder than the music84.3%52.1%2328 Strong, 340 Moderate, 52 Weak
Two voices, as loud as the music90.0%51.2%29380 Strong, 40 Moderate
Echo + noise + voice (mixed)92.9%52.1%32405 Strong, 15 Moderate
420 live readings per row (35 songs, 12 readings each, at 8 to 30 s). "Right tempo on screen" = the big number or the half or double time line within 1.5% of the built tempo. Measured by snipaudio.com, 2026-10-13, with the BPM finder's own tempo code; 8 cases checked on the real page in Chromium 153.

Noise did almost nothing until it was louder than the music. Light noise even helped a little (91.4% clean, 96.4% with noise 5 dB quieter), and all of that gain came from the three songs that read 2/3 or 4/3 of the tempo when clean: with noise, some of their readings landed on the right tempo instead. With noise 5 dB louder than the music, the right tempo was on screen in 70.2% of readings and only 15 of the 35 songs read right every time. The label did its job here: no reading said Strong beat, and of the 125 wrong readings, 123 said Weak.

Echo barely changed whether the right tempo was on screen, but it changed which line it was on. The number of readings where the big number was half or double the tempo rose from 158 clean to 205 with 1.5 s of echo 12 dB louder than the direct sound. On the real page, the 120 BPM four-on-the-floor song read 60.0 that way in every update, with 120 on the line underneath.

Talking at the level of the music cost about one point. A voice 10 dB louder than the music, which is someone talking close to the phone, dropped it to 84.3% and left only 23 songs steady across all 12 readings. Most of those readings were labelled Moderate (340 of 420), and none of the wrong ones said Strong beat.

Strong beat is not proof. In the clean run, 36 readings were wrong and all 36 said Strong beat: three of our songs read 2/3 or 4/3 of the tempo, the same files that did it as dropped-in files. The label tells you the pattern repeats clearly, not that you count it that way.

How long it takes, and what happens when the song changes

On the real page the first number appeared between 8.17 and 8.34 seconds after pressing Start listening, in all 8 runs. In the replay, the first reading (8 seconds of sound) already had the right tempo on screen for 32 of 35 clean songs, the same 32 that were right later.

Song change (built tempos)Before2 s after4 s after6 s after8 s after10 s after
120 → 100120.2120.2120.2100.0100.0100.0
100 → 120100.0100.0100.0120.2120.2120.2
85 → 14085.0170.0169.8140.1140.0140.0
140 → 85140.0140.0140.1169.9170.085.0
120 → 100, same drum pattern120.2120.2120.2100.0100.0100.0
Big number at each 2-second update after a hard cut from one clean test song to another, replayed with the BPM finder's tempo code. Measured by snipaudio.com, 2026-10-13.

The reading followed the new song after 6 seconds in four of the five changes and after 10 seconds in the fifth. In between, two changes showed 170, a number neither song has: it is double the 85 BPM song, picked while the 10-second memory held part of each. A DJ mix that blends two tracks for longer will hold that in-between state for as long as both are audible.

How to get a reading you can trust

  1. Make the music the loudest thing the phone hears. In our test the reading held up until other sound was louder than the music. Point the microphone at the speaker and move closer, rather than turning the music up in a room full of echo.
  2. Wait for three or four updates that agree. The first number comes after about 8 seconds; give it until 14 to 16 seconds and see whether the number stays put. If it jumps between two values, one is usually half or double the other.
  3. Read the second line. If the big number feels like half or double what you tap your foot to, the half time or double time line under it is the one to use. In a room with echo this happened more often.
  4. Watch the label, but do not lean on Strong beat. Moderate or Weak under heavy noise or talking means the number may be off. Strong beat does not mean it is the count you want.
  5. Keep quiet near the phone. One voice as loud as the music cost about one point in our test; a voice 10 dB louder cost seven.
  6. Wait 10 seconds after the song changes before reading the new tempo, and ignore numbers in the middle of a long blend.
  7. Cross-check. Use Tap tempo on the same page, or, if you have the song as a file, drop it in for a reading of the whole track (see why readings come out half or double).

Questions

How close to the speaker do I need to be?

We cannot give metres: we did not test real rooms or real microphones. What we can say is that in our test the reading was fine with the echo up to 12 dB louder than the direct sound, but the big number then flipped to half or double time more often (205 of 420 readings, against 158 clean). Closer means more direct sound, so closer is better.

Does the live reading record or upload what it hears?

No file is made and nothing from the microphone is sent anywhere: the page keeps only the last 10 seconds in memory in the tab and drops them when you press Stop listening. The site does load Google Analytics, which counts page visits; it does not get the sound.

Why does it show nothing for the first 8 seconds?

The page needs at least 6.5 seconds of sound and only updates every 2 seconds, so the first update with enough sound is at 8 seconds. On the real page the first number appeared at 8.17 to 8.34 seconds in all 8 of our runs.

Continue with the next audio task