Home / BPM finder

Free tool

BPM finder

Runs in your browser · nothing is uploaded · no account

Pick an audio file and this page tells you its tempo. The file is read on your own device and analysed here - it is never sent anywhere, which is why there is no progress bar and no queue.

Analyse a file

Drop an audio file here

or · MP3, WAV, M4A, OGG, FLAC

Or tap the tempo by hand

Play the track anywhere and tap in time with the beat. Eight taps is usually enough.

--

Why no upload?

Every other BPM tool asks you to upload the track to their server, wait for it to process, and trust them with a file you may not own the rights to. None of that is necessary. Tempo detection is arithmetic on a loudness curve, and your browser can do arithmetic.

You can check this yourself: open your browser's network tab, run a file through, and watch nothing leave. That is also why it works offline once the page has loaded.

How it works

For MP3s, the tempo is read without decoding the audio at all. Every MP3 frame carries an 8-bit number per granule called global_gain - the logarithmic scale the encoder picked for that slice of sound. It tracks loudness closely enough to find note attacks, and it sits in the frame header area, so the file can simply be walked through. One granule is 576 samples, which at 44.1 kHz gives a loudness curve sampled about 76 times a second.

That curve goes through two stages. A tempogram scores every candidate tempo by how much of the curve's energy lines up with it and its harmonics. Then an accent test fixes the octave, which is the part most detectors get wrong: 90 BPM with hi-hats on the eighth notes produces exactly the same onsets as 180 BPM. Onset positions cannot separate those two readings. What separates them is loudness - at 180 the pulses alternate strong, weak, strong, weak, because half of them are hats and half are the kick. If alternate pulses are clearly weaker, the candidate is running at double speed and gets halved.

Other formats get decoded with the Web Audio API first, then follow the same two stages.

If the producer wrote a BPM into the file's ID3 tag, that is read too and shown alongside - a declared tempo beats a detected one.

How accurate is it?

Measured over 102 beats whose real tempo is known: 63.7% land within 3 BPM of the true value, and 93.1% are either correct or one tap away from correct on the suggested alternatives. It never failed to produce an answer.

That is the honest number, and it is why the alternatives are shown rather than hidden. Almost every miss is an octave error - the tool says 180 when the answer is 90, or 70 when the answer is 140. Both readings describe the same music; they just count it differently. If the number looks wrong, the right one is usually sitting right next to it.

This is the same engine that runs inside the Rhymeable app when you import a beat, so the number here is the number you would get there.

What tempo should I rap at?

If you are picking a tempo to practice over rather than measuring one you already have: start between 90 and 100 BPM. That range gives you roughly half a second per syllable, which is enough time to think of the next line while you are still saying this one. 120 and 140 BPM are usually rapped half-time, so they feel slower than the number suggests.

We have 102 beats tagged with their BPM, 32 of them free in the app, if you want something to work over.

Knowing the tempo is step one

A number on its own does not make you better. What it gets you is the right practice: the beat running at a tempo you chose on purpose, and something to say landing on it.

That is the part this page cannot do. In Rhymeable you import the same file, the app reads the tempo with this exact engine, and then rhyming words arrive on a grid in time with the beat - a beat ahead of when you need them, so you are handed the next word while you are still finishing the last one.

Take the tempo into a practice session

Import any MP3, let the app read its BPM, and rap over it with rhyme words landing on the grid.

Get it on Google Play