How to find the BPM of your music, offline

· 6 min read · Also in Deutsch Español Français Русский 中文

You can find the BPM of a song in about fifteen seconds with nothing but a clock: tap along, count the beats, multiply by four. For a whole music library, let software analyse the files where they already are, on a computer or on the phone itself, with no upload and no connection.

Counting by hand

Play the song and tap on each beat, the pulse you would nod your head to. Once settled, watch a clock and count taps for fifteen seconds. Multiply by four and you have beats per minute. For a steadier number, count for thirty seconds and double it; the longer count is more forgiving of a stray tap at either end.

There is one trap. Most music has more than one steady pulse layer running at once, and it is easy to tap the wrong one. Tap the quarter notes and a rock song reads 120. Tap the hi-hat's eighth notes, which move twice as fast, and the same passage reads 240. Neither count is wrong about the rhythm, but they differ by exactly a factor of two.

To check yourself, count bars. Most popular music groups its beats in fours, with a heavier beat on the first of each group. Count "one two three four, two two three four" and see whether the emphasis lands on your "one". If it does, your tap is on the beat. If the heavy beats fall every eight taps, you are counting eighths; if they fall every two, you are counting half notes. Adjust, and count again.

The octave problem

That factor of two has a name in tempo work: the octave. A tempo of 85 and a tempo of 170 describe the same rhythm counted at two different levels, and there is often no fact of the matter about which one is right.

Software disagrees about this as much as people do. A tempo detector has to pick one level, and on many tracks two well-built analysers will pick differently. A number that looks wrong by a factor of two is not an error in the ordinary sense, just the other octave.

For matching music to a cadence, it does not matter. A runner at 170 steps per minute lands one foot per beat on a 170 BPM song and two feet per beat on an 85 BPM song; the stride fits either way. Matching that allows half-time and double-time compatibles absorbs the ambiguity by design, which is the whole argument of running cadence and song BPM.

Desktop software

If you have a computer with your music on it, the established route is a DJ program or a library manager. Most DJ software analyses tempo as part of importing a track, and many music library tools have a BPM analyser built in or available as a plug-in. Most can write the result back into the file's tags, so the number travels with the file.

This works well at a desk. But it means a computer, an export or sync to whatever plays the files, and tags that go stale: add a folder of new music on the phone and it has no numbers until the next round trip. For a collection that keeps changing, that round trip becomes a chore you keep putting off.

On the phone, offline, with BPM Companion

The alternative is to analyse the files on the device that plays them. BPM Companion does this on Android. You point it at your music folders and it works in two stages.

The quick pass gives every song a rough tempo within seconds, so a fresh library is usable almost at once. The slower pass is a neural beat tracker, the "Beat This!" transformer, which listens through the whole track and finds every beat and downbeat. It runs in the background, is kept battery-aware, and only ever needs to run once per song; the result is saved. This pass also settles the octave question the quick pass sometimes gets wrong, which is why a song's BPM can change on its own between the two.

It reads common local audio: MP3, AAC/M4A, FLAC, OGG/Opus, WAV, and the WebM/Opus files that YouTube downloads are often saved as under a misleading .mp3 name. Files with DRM cannot be read.

Every detected tempo comes with a confidence score, and a minimum-confidence setting lets you hide the results the tracker is unsure of rather than build a queue on them. The app has no internet permission at all, so nothing leaves the phone during any of this.

The numbers then feed a cadence-matched queue, for steps per minute on a run or pedal strokes on a ride; the cycling cadence guide covers the ride, and the cadence tables show which tempos fit a given cadence.

Why offline matters

Privacy is the obvious reason. Your music files say a great deal about you, and an analyser that uploads them to a server holds a copy of your library. One that never connects cannot.

The practical reasons are just as good. Analysis that needs a server stops on a plane, in a tunnel, and on the trail where you would most like a playlist. No account is needed either, because there is nothing on the other end to log into.

There is also a structural reason that settles the question before privacy comes up. Streaming services do not let third-party apps hear the audio at all. An app can see a streamed track's title, but it cannot touch the sound, and tempo detection needs the sound. That is why any tempo analyser, on a desk or on a phone, works on files you hold, and why the apps that match music to your pace either bring their own catalogue or work with yours.

If your music is already on your phone, BPM Companion finds the BPM of all of it there, offline, and builds the cadence-matched queue from the result.

← All guides