ByteScope

BPM & Key Finder

Drop a batch of songs and read the tempo, key, Camelot and Open Key code and the runner-up key off one table. Each track is analysed in a Web Worker in your browser — nothing is uploaded. Correct a tempo by tapping along, then export CSV or copy JSON for your set list or spreadsheet.

Your files never leave your browser — all processing is local.

Drop songs here or click to choose

Audio or video files, several at once. Nothing is uploaded.

Analyse

The middle 60 seconds skips intros and outros. Switching re-analyses finished songs, which decodes each file again.

Add songs to see their BPM and key.

Tap tempo

Tap along with the beat: click the button, or press Space while this panel has focus. Four taps set the BPM for the chosen song; the last eight count, and a pause over 2 seconds starts again.

Add a song first.

What this cannot tell you

  • Tempo is often ambiguous between half and double time (87 or 174), so both are listed when the analysis sees both.
  • Songs that speed up and slow down (live recordings, classical, rubato) get one average BPM with low confidence.
  • Key detection is unreliable for modal, atonal or modulating music. Relative major and minor (C major vs A minor) are the most common mix-up, which is why the second guess is shown.
  • Files are decoded and analysed in this tab. Nothing is uploaded.

Song inside a video? Extract its audio track first →

About this tool

A DJ planning a set wants the tempo and the Camelot code of every track; a singer or a cover band wants to know what key the original is in before choosing where to transpose; someone building a running playlist wants songs that hold a steady 170 BPM. This page answers those questions for many files at once. Drop MP3, M4A, WAV, OGG or FLAC files — many at once — and a table fills in with file name, length, BPM to a tenth, a confidence figure, the key (for example A minor), its Camelot code (8A) and Open Key code (1m), and the runner-up key. Files are analysed one at a time in a Web Worker inside your browser; none of them is uploaded, so the first result appears as soon as the first file is decoded rather than after a transfer.

How the tempo is found

By default the middle 60 seconds of each track are analysed, skipping the intro and outro where the beat is often absent or ambiguous; you can switch to the whole track. The audio is turned into a spectral-flux onset envelope — a curve that peaks whenever something new happens in the sound — and the envelope's autocorrelation shows which spacing between onsets repeats most strongly. A prior that prefers tempos near 120 BPM settles the choice between candidates, and a fine search then pins the value to 0.1 BPM within a range of 60–200 BPM. Half-time and double-time are genuinely ambiguous — a drum-and-bass track at 174 BPM has a perfectly real pulse at 87 — so when both readings are strong the table shows both numbers (87 / 174) instead of pretending there is one answer.

How the key is found

The analysed section is reduced to a 12-bin chroma: how much energy falls on each of the twelve pitch classes, averaged over time. That profile is correlated with the 24 Krumhansl–Kessler key profiles (1982), one for each major and minor key, and the best match is the key shown. The second-best is shown too, because the most common confusion is between a key and its relative — C major and A minor share the same seven notes, and a chroma average alone often cannot tell them apart. If the runner-up is the relative key with a score close to the first, listen to where the song comes to rest before trusting either. The Camelot code follows the convention used by Mixed In Key: tracks with adjacent numbers, or the same number in A and B, mix harmonically; Open Key is the equivalent notation used by other software.

Fixing a tempo by hand

When the detector picks the wrong value, tap the tap button or the space bar in time with the music at least four times; the average of the last eight taps replaces that row's BPM. This is the quickest way to resolve a half/double-time reading or to set the tempo of a track with a very soft beat. Once the table looks right, export it as CSV for a spreadsheet or copy it as JSON — both include the file name, length, BPM, confidence, key, Camelot and Open Key codes and the runner-up key.

Where the numbers get unreliable

The detector assumes one tempo and one key per track. A song with a tempo change, a live recording that speeds up, or classical music played rubato gets a single average with a low confidence figure, and that figure is the signal to listen yourself. Modal, atonal or heavily modulating music does not fit the 24 major and minor profiles well, and a track that changes key halfway through gets one key for the whole thing — modulation tracking is not attempted. Treat the confidence column as honest: a high value means the beat and the tonal centre were clear, a low value means the song did not have a single clear answer to give.

Frequently asked questions

Are my songs uploaded?

No. Each file is decoded and analysed by a Web Worker inside your browser; nothing is sent to a server, and the page has none. That is also why there is no waiting for a transfer — a batch of tracks is analysed one after another on your own machine. Nothing about the files or the results is recorded.

The BPM is exactly half or double what I expect. Why?

Because both are real. Onset detection finds a repeating pulse, and a pulse at 87 BPM repeats just as well at 174; which one a listener calls the tempo depends on genre and feel, which an algorithm cannot know. The page prefers values near 120 BPM when it has to choose and shows both numbers when the two readings are close in strength. If the one you want is not shown, tap the tempo yourself — four taps or more on the button or the space bar replace that row's value.

It says C major but the song is in A minor. Is it wrong?

Possibly not, and that is exactly why the runner-up key is shown. C major and A minor share the same seven notes, so a chroma profile averaged over a minute looks nearly identical for both; the Krumhansl–Kessler profiles weight the tonic and the fifth, which separates them in most cases but not all. When the second guess is the relative major or minor with a close score, listen to the note the song settles on at the end of a phrase. For DJ mixing it barely matters: 8B and 8A are adjacent on the Camelot wheel and mix together.

What do the Camelot and Open Key codes mean?

They are two notations for the same idea — placing the 24 keys on a wheel so that compatible keys sit next to each other. In the Camelot system popularised by Mixed In Key, keys are numbered 1 to 12 with A for minor and B for major; tracks one number apart, or with the same number in A and B, share most of their notes and mix without clashing. Open Key, used by Traktor and other software, uses 1 to 12 with m for minor and d for major on a differently rotated wheel. A minor is 8A in Camelot and 1m in Open Key.

Why does it analyse only the middle 60 seconds?

Because intros and outros are the parts most likely to mislead: a beatless intro, a fade-out, applause on a live recording or a spoken outro all weaken the onset pattern and the chroma without representing the song. The middle minute is usually the chorus or the main groove. Switch to whole-track analysis when a song is shorter than a minute or two, when you suspect a tempo change, or when the middle happens to be a breakdown.

What does the confidence number mean?

How clearly the track gave one answer. A high value means the beat and the tonal centre stood out plainly; a low value means the song had a soft or shifting beat, a tempo change, or a tonality that does not fit the 24 major and minor profiles — classical, rubato, modal or atonal music often lands here. It is not a measure of the song, only of how sure the detector is, and a low value is the cue to listen for yourself.

Can it follow a song that changes tempo or key?

Not yet. The page reports one tempo and one key per track. A tempo that changes gets averaged, a key change gets whichever tonal centre dominated the analysed section, and both show a lower confidence. For a song you know modulates, analyse it with the whole-track setting to see which key wins overall, and treat the runner-up as a hint about the other section rather than a mistake.