Tempo · beats · downbeats · meter

Find the BPM of a song

Drop a track. Get its tempo, beats, downbeats and time signature — analysed by a neural beat tracker right in your browser, nothing uploaded.

Analyse a track

No file handy? Try one of ours:

How the tempo is worked out

  1. A spectrogram, 50 frames a secondYour file is decoded by the browser, mixed to mono at 22,050 Hz and turned into a 128-band mel spectrogram — every 20 ms becomes one column.
  2. Beat This! marks beats and downbeatsA transformer from JKU Linz (ISMIR 2024) reads the track in 10-second sections and scores every frame twice: is this a beat, and is it the first beat of a bar?
  3. Counting, the way a drummer wouldTempo comes from the spacing of the beats, the time signature from how many beats fall between bar starts, and the curve from the same count per section.

Measured on a MacBook with Apple M2 Max: a 3-minute live recording took 1.1 seconds on WebGPU and 20 seconds on the CPU path. The first visit also downloads the 115 MB model.

90 or 180? About half and double tempo

Every tempo has a twin at half and at double speed. A drum-and-bass track can be felt at 174 or 87; a slow ballad written at 70 is often counted in eighths at 140. The tracker picks the pulse most listeners tap along to, but a live band can pull it between levels — in one of our test recordings it followed the eighth notes for the first 30 seconds (231 BPM) and quarter notes after (120 BPM).

If the big number feels wrong, press ÷2 or ×2. The beat grid, the bar count and all three exports follow the level you choose; press the same key again to return. The tempo curve shows sections where the tracker switched level on its own.

Questions

Is my song uploaded anywhere?

No. The page downloads the beat-tracking model once (115 MB, kept in your browser's cache) and runs it in this tab — on the graphics chip through WebGPU, or on the CPU through WebAssembly. Your audio is decoded by the browser and never sent to a server. Once the model has loaded you can go offline and keep analysing in the same tab.

Why is the BPM half or double what I expected?

Both numbers describe the same music: 87 and 174 are the same groove counted in different note values. The tracker reports the pulse it hears most clearly. Press ÷2 or ×2 to switch; the grid and exports switch with it. If only part of the track jumps, the tempo curve marks which sections.

Can it find the time signature? How reliable is that?

The model has a second output that marks the first beat of each bar. We count the beats between those marks and report 2/4, 3/4 or 4/4 when at least 60% of bars agree; otherwise it says Not sure. Downbeats are recognised from bar-level change — a new chord, a bass note, a fill — so a bare drum loop or a metronome can have every beat marked as a bar start. Compound meters like 6/8 are usually counted by their main pulse and show up as 2 beats per bar.

Why doesn't it tell me the key?

The only key-detection model small enough for a browser that we found is a port of Deezer's S-KEY, and whether its published weights may be used commercially is still an open question with its authors. This site only ships models whose licence clearly allows it, so key detection stays out until that is settled.

Can I paste a YouTube or Spotify link?

No. The page only reads files on your own device, and streaming services don't hand their audio to other web pages. Use a file you have: your own bounce or stem, a purchased download, or a recording. MP3, WAV, FLAC, M4A and OGG all work.

How do I use the exported beat grid?

The MIDI file is a click track: import it onto a drum or instrument track under your audio and every beat has a wood-block hit, higher on bar starts; its tempo is set to the detected BPM, so on a steady song the DAW's bar lines match. The CSV has one row per beat (time in seconds, bar, beat) for spreadsheets or marker-import scripts in video editors. The JSON adds steadiness and tempo per section.

Does it work on a phone, and how long does it take?

Yes, on the CPU path: the model is 115 MB, so the first visit is a sizeable download on mobile data. Our 20-second samples take about 2 seconds each on a desktop CPU and well under a second on WebGPU; phones are slower. The free limit is one track at a time, up to 10 minutes and 50 MB.

Beat and downbeat model: Beat This! by Francesco Foscarin, Jan Schlüter and Gerhard Widmer (JKU Linz, ISMIR 2024), MIT licence, used through the musetric/beat-this-onnx export. Licence text. The two sample tracks were synthesised for this page and are CC0.