Beat Runner: a browser rhythm game that charts the music itself
Beat Runner is a free rhythm game that runs entirely in your browser. Notes fall down a neon highway and you hit them as they cross the judgement line — D, F, J and K on a keyboard, or four tap zones on a phone, with S and L added when Inferno widens the road to six lanes. Nothing here is hand-charted. The game decodes the audio with the Web Audio API, runs a spectral-flux onset pass over it, and places every note on a beat it actually detected, so the two bundled synthwave tracks and any MP3 you drop in are charted by the same code. Five difficulty tiers across two bundled tracks is ten charts before you load anything of your own. The whole page weighs about 36 KB, runs offline after the first load, and needs no account.
Score0
Combo0
Accuracy100.00%
Notes0 / 0
Track—
TierStandard
No-fail tier — this run always finishes
Start a run
Drag a file here or pick one. It is decoded and charted in this browser and never leaves your device.
Best scores on this device
| Track | Tier | Score | Accuracy | Combo |
|---|
Best score and accuracy are recorded separately for every track and every tier, in this browser only.
Building the chart
Waking the audio engine
Beat Runner renders the track, runs an FFT over it, finds the onsets and lays out the lanes. This happens once per track and then it is cached for the session.
Paused
Press Escape or P to resume. The song clock is the audio clock, so pausing never drifts the chart.
Changing tier here rebuilds the chart, so the run restarts from the top.
Run complete
— on Standard
- Score
- 0
- Accuracy
- 0%
- Max combo
- 0
- Perfect
- 0
- Great
- 0
- Good
- 0
- Miss
- 0
Calibrate your audio-visual offset
Press Start, then tap SPACE (or the pad below) on every click. Sixteen taps is enough. Beat Runner takes the median gap between your taps and the metronome and applies it to every hit from then on.
Press Start, then tap along with the click.
Taps recorded: 0 · current offset: 0 ms
How to play
- Pick a track. Neon Overdrive and Midnight Coastline are built in. You can also load your own MP3, M4A, OGG or WAV file; it is analyzed in your browser and never uploaded.
- Pick a difficulty tier before your first run. Standard is preselected. Every tier is described in plain English below and you can change it later from the pause menu.
- Wait for the chart. Beat Runner renders or decodes the audio, runs a spectral-flux onset pass over it, and lays the detected beats out across the lanes.
- Hit the notes on the line. Use D, F, J and K for four lanes; F and J on Sprout's two lanes; S, D, F, J, K and L on Inferno's six. On a touchscreen, tap the coloured key row under the highway or the lane itself.
- Watch the judgement. A hit inside the Perfect window scores 300, Great scores 200 and Good scores 100, all multiplied by your combo and by the tier multiplier. Anything outside the Good window is a miss and resets the combo.
- Hold the long notes. On Brutal and Inferno, sustained tones become hold notes: press on the head and keep the key down until the tail passes the line.
- Calibrate once per device. If your hits feel consistently early or late, run the calibration screen. The measured offset is saved and applied to every later run.
- Press Escape or P to pause. Pausing suspends the audio clock, so the chart picks up exactly where it stopped.
The five difficulty tiers
- Sprout — Two wide lanes, never more than one note per beat, and timing windows three times as forgiving. There is no health bar and no way to fail, so the song always plays to the end.
- Casual — Four lanes with about half the detected beats charted and timing windows half again as wide. Health drains gently on a miss and creeps back as you recover.
- Standard — Four lanes, three quarters of the detected beats, and the reference windows: 40 ms for Perfect, 80 ms for Great, 130 ms for Good.
- Brutal — Four lanes with every detected onset charted, a 28 ms Perfect window, hold notes on sustained tones, and health that drains fast.
- Inferno — Six lanes, every onset plus off-beat sixteenth fills, an 18 ms Perfect window, and notes that fade out 300 ms before the line. One miss ends the run.
Sprout exists so that a five-year-old can finish a song. It has no fail state, no time pressure and no way to get stranded: a press that finds nothing in its own lane will take a note from a neighbouring lane rather than punish you, and the run always reaches the end of the track.
Prefer a real file? Download the studio mixes - Neon Overdrive (MP3) or Midnight Coastline (MP3) - then drop either one into the loader above and watch the same analyzer chart it from scratch.
Features
- Charts generated in the browser from real audio analysis: 1024-point FFT, half-wave-rectified spectral flux in three bands, adaptive-threshold peak picking, sub-frame interpolation.
- Lanes assigned by frequency content, so kick drums, snares and hats reliably land in different lanes instead of at random.
- Five difficulty tiers — Sprout, Casual, Standard, Brutal and Inferno — switchable from the pause menu and remembered between visits.
- Two original instrumental synthwave tracks, synthesized note by note in your browser rather than downloaded.
- Load your own MP3, M4A, OGG or WAV file and get a chart from the same analyzer.
- Every timing decision is taken from
AudioContext.currentTime, never from frame deltas, so a stutter moves the picture and not the judgement. - Calibration screen that measures your audio-visual offset from sixteen taps and stores it.
- Perfect, Great, Good and Miss judgements with combo multiplier, live accuracy and a health bar that the no-fail tier switches off entirely.
- Hold notes on sustained tones, and off-beat sixteenth fills, on the two hardest tiers.
- The whole scene reacts to low-band energy: the highway pulses, the horizon glows on the kick, hit notes explode into particles, and the sky drifts in hue.
- Best score and accuracy stored per track and per tier in
localStorage, with every score labelled by the tier that produced it. - Keyboard-operable throughout, with visible focus rings, and a reduced-motion mode that removes the pulsing, the hue drift and the particles.
- Installable and fully playable offline after the first load.
Frequently asked questions
Is Beat Runner free, and do I need an account?
Beat Runner is completely free and there is no account, no sign-up, and no payment of any kind. Open the page and the difficulty picker is already there, with Standard preselected. There are no ads, no locked tracks, and no daily energy meter. Both bundled tracks are playable on all five tiers from the first visit, and after that first visit the game keeps working with the network switched off.
Can I play Beat Runner with my own music?
Yes. The start screen has a file picker that accepts MP3, M4A, OGG and WAV files, and you can drag a file onto it instead. Your file is decoded and analyzed by your own browser and is never uploaded anywhere: there is no server that could receive it, because the whole game is client-side. The chart you get is produced by exactly the same onset detector that charts the two bundled tracks, so a song you bring plays the same way a built-in one does.
What do the five difficulty tiers actually change?
Sprout gives you two wide lanes, never more than one note per beat, and timing windows three times as forgiving, with no health bar and no way to fail. Casual uses four lanes, charts about half the detected beats, widens the windows by half, and drains health gently. Standard is the reference: four lanes, three quarters of the detected beats, and windows of 40 ms for Perfect, 80 ms for Great and 130 ms for Good. Brutal charts every detected onset on four lanes, cuts Perfect to 28 ms, turns sustained tones into hold notes, and drains health fast. Inferno adds two more lanes and off-beat sixteenth fills, cuts Perfect to 18 ms and Great to 35 ms, fades notes out 300 ms before the judgement line, and ends the run on a single miss.
Why do my hits feel early or late, and how do I fix it?
Every combination of browser, operating system, monitor and headphones adds its own delay between the sound leaving the audio device and the picture reaching your eyes, and Bluetooth headphones can add well over 100 ms on their own. Beat Runner has a calibration screen for this: press Calibrate on the start screen, tap along with the metronome sixteen times, and it measures the median gap between your taps and the clicks. That offset is applied to every hit you make afterwards and is saved in your browser, so you only have to do it once per device. You can also drag the offset slider by hand if you already know your number.
How was this game made?
Beat Runner was generated from a single prompt on Quodara, an AI agent platform that turns one written description into a deployed web app. The prompt described the judgement windows, the spectral-flux charting, the five difficulty tiers and the SEO requirements, and Quodara wrote the audio engine, the analyzer, the game, the page and the server, then deployed it to this domain. You can read the case study, including the prompt that produced it, at https://quodara-ai.com/showcase/beat-runner/.
About this build
Beat Runner was generated from a single prompt on Quodara and deployed on August 22, 2026. The page ships at roughly 36 KB in total, of which the audio engine, the FFT analyzer and the game account for about 23 KB of compressed JavaScript — no framework, no bundler, and no third-party script on the critical path. The two bundled tracks add nothing to that number, because they are synthesized in your browser from a few kilobytes of arrangement data rather than downloaded as audio files. The full case study, including the prompt itself, is at quodara-ai.com/showcase/beat-runner.