The BPM Detector estimates tempo from a local audio file by analyzing energy changes and rhythmic peaks. It is
useful for organizing loops, preparing DJ libraries, checking song tempos, and finding a starting tempo for
editing or remixing.
Load an audio file, review the decoded track information, run local BPM detection, then interpret the result
together with confidence and musical context.
1Upload audio
2Preview waveform
3Detect BPM
4Interpret tempo
Quick start
How to detect BPM
Open the BPM Detector tool.
Click Choose an audio file and select a browser-supported audio file.
Wait for the waveform and track information to load.
Click Detect BPM.
Read the Estimated BPM value.
Check the message below the waveform for confidence and detected energy peak count.
If the result feels too slow or too fast, test half or double the displayed BPM.
Snapshot: upload widget
upload_fileChoose an audio file MP3, WAV, OGG, M4A, FLAC, and other browser-supported audio formats. Browse Files
Result cards
Review BPM, duration, and sample rate
The workspace summarizes the detected tempo and decoded audio metadata. Duration helps identify whether the
full song or a short clip was analyzed. Sample rate confirms the browser decoded the file correctly.
Snapshot: tempo summary cards
Estimated BPM128
Duration3:42
Sample Rate44,100 Hz
Beat analysis preview
Use the waveform to judge rhythmic clarity
The waveform preview helps you see whether the file has strong transients. Tracks with clear drums or repeated
accents usually produce better BPM estimates. Smooth ambient audio, vocals-only files, or tempo-changing songs
are harder to analyze.
BPM detection is an estimate. Musical tempo can be ambiguous because algorithms may lock onto quarter notes,
half-time pulses, double-time hats, or repeated percussion patterns.
Snapshot: waveform and energy peaks
Waveform • detected energy peaks
Detection button
Run local tempo analysis
The Detect BPM button starts analysis after a file has been decoded. The current implementation analyzes local
energy changes, finds onset peaks, scores candidate BPM values, and reports the strongest tempo estimate.
Snapshot: action and result message
Estimated 128 BPM with 78% confidence from 146 detected energy peaks.
How to interpret BPM results
Tempo detection can be musically ambiguous. Use the result as a strong estimate, then compare it with how the
beat feels.
Half-time resultIf a fast track returns a slow BPM, try doubling the number. Example: 72 BPM may represent 144 BPM.
Double-time resultIf a slow groove returns a fast BPM, try halving it. Example: 174 BPM may represent 87 BPM.
Low confidenceTracks without clear transients, drums, or repeated rhythmic accents can produce unstable estimates.
Tempo changesSongs with live tempo drift or multiple tempo sections may not have one reliable BPM value.
Supported input formats
The upload control accepts audio files, but browser decoding determines what can actually be analyzed.
MP3Commonly supported and suitable for most tempo checks.
WAVBest-supported uncompressed format for browser analysis.
OGGSupported by many modern browsers.
M4AUsually supported in Chrome, Edge, and Safari.
FLACBrowser support varies; Chrome and Edge are generally stronger here.
Technical notes
How local BPM estimation works
The BPM detector builds an energy envelope from the decoded audio, smooths that envelope, calculates positive
energy changes, picks local peaks, then scores tempo candidates from intervals between detected peaks.
Decode: audio is decoded in the browser with the Web Audio API.
Envelope: short analysis frames estimate average absolute energy.
Flux: positive changes between frames emphasize attacks and rhythmic events.
Peak picking: local peaks above an adaptive threshold become onset candidates.
Candidate scoring: intervals between peaks are folded into a BPM range and ranked.
Confidence: the best candidate is compared with the runner-up candidate.
Recommended source material
BPM detection works best on tracks with steady rhythm and clear transients: drums, percussion, dance music,
loops, metronome-backed recordings, or songs with consistent tempo. It is less reliable for rubato piano,
ambient pads, speech, acapella vocals, and songs with major tempo changes.
Troubleshooting
The Detect BPM button is disabledLoad a browser-supported audio file first. The button enables after decoding finishes.
The result seems double or halfUse the half/double interpretation rule. BPM detection often locks onto a subdivision or every other beat.
No stable BPM is detectedTry a file with clearer drums, stronger attacks, or a more consistent tempo.
The file does not loadThe browser could not decode that format. Try WAV or MP3, or use another modern browser.
Analysis takes timeLong files require more local processing. Try a shorter section if you only need an approximate tempo.