Game, Built for phones, Free in your browser
Voxel Runner
A 3D endless runner I built for phones.
Three lanes, five biomes that roll in over the horizon, and a track that never deals you an unwinnable hand. The world you run in is decided by the date, so tomorrow is a different game. There are no art or sound files: every voxel, the sky, the soundtrack and every sound effect is made in code.
Best on a phone, and it works with a keyboard. No download, no account.


- biomes
- 5
- daily worlds
- 10
- art or audio files
- 0
- first download
- 249 kB
From real runs
Five frames, straight out of the game.
Captured by the game’s own screenshot tool on a phone-sized screen. Nothing painted over.
How to play
Swipe on a phone. Arrow keys on a computer.
The tutorial waits for each move before it teaches the next, and words it for what you are actually using: swipe, drag or press.
- Change lane
- Touch: Swipe left or right
- Keyboard: ←→or A, D
- Jump
- Touch: Swipe up, or tap anywhere
- Keyboard: ↑or W, Space
- Roll, or dive mid-air
- Touch: Swipe down
- Keyboard: ↓or S
- Extended jump
- Touch: Double-tap anywhere
- Keyboard: Q
- Burst
- Touch: Tap the ⚡ meter
- Keyboard: Bor Shift
- Pause
- Touch: The pause button
- Keyboard: Escor P
- A tap always does something.A tap anywhere jumps, even at the edge of the track.
- An early press still counts.A jump or roll pressed a little too soon fires the moment it can.
- Assist never steers.It rescues a jump or roll you left too late. Which lane to be in is still yours.
A new world every day
Tomorrow is a different game.
Ten worlds, dealt one a day, each with its own physics, light and road. The date is the seed: every phone gets the same world on the same day, with no server in between.
- The Long DuskThe fog closes to ninety metres and the sun never clears the horizon.
- High WaterThree times as much of the road is a swim.
- IronfallGravity pulls harder and launches throw harder.
- Gold RushEvery coin pays triple.

Under the hood
Fair, because the generator is built that way.
An endless runner is only fun if every hazard can be beaten. These rules are written into the track generator, and the game’s automated play tests check them.
- 1A crate row always leaves one lane open, and that lane only ever moves one lane between rows.
- 2Rows that ask for a jump or a roll are at least six cells apart, so one can never land inside the last one’s arc.
- 3A pit is exactly one cell, inside the jump arc at the slowest speed.
- 4Water only gets hazards a swimmer can actually meet, and a tunnel never hides a pit in the dark.
- 5The first eight cells of every run are calm.
How it is made
- three.js and TypeScript, built with Vite.
- Nothing to download but code: 249 kB on a first visit, fonts included.
- Installable. Add it to your home screen and it opens like an app: full screen, and it works offline.
- No tracking, no ads, no network calls. It saves your best runs on your own device.
Built by one person
Want something made with this much care?
Voxel Runner is my own project, down to the physics of a front crawl. The same attention goes into the apps I build for clients.
Reply within one business day. No pitch deck, no sequence.






