A real-time BPM detector that listens to your music and shows tempo, beat, and confidence live - no upload, no waiting.
Click start to begin
BeatBoy is a live BPM detector: it listens to whatever is playing (system audio or microphone) and tracks tempo, beats, and downbeats as they happen. There is no file to upload and no button to tap along with. The detection runs entirely in your browser, on your own device: no cloud server, no data center, nothing sent anywhere to be processed.
BeatBoy runs the BeatNet neural network (Heydari, Cwitkowitz, Duan; ISMIR 2021) directly in your browser. Incoming audio is converted into a spectrogram 50 times per second, a recurrent network scores each instant for beat and downbeat likelihood, and a particle filter turns that stream of scores into a steady tempo estimate. Six model variants run simultaneously and an auto-picker elects the best performer beat by beat, so one confused model cannot drag the reading. Open Advanced features above to watch the ensemble vote live: each model card shows its own raw BPM, confidence, and inlier count. Unlike a tap-tempo counter (which measures how fast you tap) or a BPM calculator (which converts numbers you already know, like note lengths or delay times), BeatBoy listens to the audio itself and reads the tempo directly.
System audio captures whatever your computer is playing: when you click it, your browser lets you choose a specific tab, an app window, or your whole screen, so you can point it at exactly the audio you want (Spotify, YouTube, a DAW, a set playing in another tab) without opening a microphone at all. It's the best choice whenever the source is on the same machine, and it's why the reading locks fast and stays put. Microphone works for live playing, with a caveat: the models are trained on mixed, mastered recordings, so a clean feed (a PA, an audio interface, a decent practice-room setup) works far better than a laptop mic pointed at a room.
On mixed recordings with a steady beat, BeatBoy typically reads within 1 to 2 BPM of the true tempo, validated against songs with known BPM. The confidence readout shows how tightly the last stretch of detected beats agrees with one tempo, so you can tell a locked reading from a guess. The classic failure mode of every beat detector is mistaking double-time for half-time (hearing 60 BPM as 120, or 140 as 70) since the ambiguity is real: half-time feels are a genre feature, not a bug. BeatBoy resolves it by consensus, with all active models voting on the fold instead of trusting any single one.
Everything runs locally: audio capture uses the Web Audio API, and the neural networks execute on your own device's processor, in your browser, not on a server. There's no data center on the other end of this: the compute is entirely yours, sound is analyzed in memory as it plays, and it's never recorded, stored, or uploaded. Close the tab and nothing persists.
An optional 3D character that dances locked to the detected beat. It's off by default (character "None") so the page loads as a plain BPM readout for anyone who just wants the number. Pick a character and a style from the Character/Style controls next to the readout to bring it to life. The dance's playhead is a direct function of the beat clock rather than a looping animation nudged into place, so it stays locked to the beat even as the tempo estimate is refined mid-song.
The pop-out button above the stage opens the live stage (dancer included) in a small always-on-top window, so it can float over whatever else you're doing: a little dancing character keeping the beat in the corner of your screen while you work, game, or just browse in other tabs. It's just as useful with no character picked, as a small always-visible tempo readout. Either way it moves the live view itself rather than a copy, so it keeps animating exactly as it was, with nothing to fall out of sync.
BeatNet mode runs the BeatNet model (Heydari, Cwitkowitz, Duan; ISMIR 2021), CC BY 4.0
3D characters: RobotExpressive by Tomas Laulhe (CC0)