Find the way out.
A fast, procedurally generated maze game in your browser. Every maze is unique, always solvable, and built to be beaten - race the clock, climb the leaderboard, and unlock achievements.
How to play
Press Play
The maze stays frozen behind the Play overlay. Pressing Play reshuffles it and starts the clock - no peeking ahead.
Move the player
Guide the coral square from the top-left to the lime exit at the bottom-right.
Stuck? Get a hint
Press H for a short A* nudge — only the next few cells light up, not the full path. Each hint costs points and you get a limited number per run (more on harder difficulties). You'll confirm before one is spent.
Beat your best
Finish fast with few moves for a high score, then submit to the global leaderboard.
What's inside
Procedural mazes
A fresh, perfect maze every round - exactly one path between any two cells, always solvable.
Four difficulties
From Easy (11×15) to Expert (25×35), with scoring multipliers that reward the hard ones.
A* hints
Partial-path guidance when you're lost — a few steps ahead via A*, with a per-run cap and point cost.
Achievements
Eight to unlock - Speed Demon, Perfectionist, Streak Master, Night Owl, and more.
Accounts & stats
Sign in to track level & XP, win rate, streaks, and a per-difficulty breakdown.
10 themes
Daylight, Midnight, Neon, Dracula, Sunset, Ocean… the whole board re-themes instantly.
Plays anywhere
Swipe on the maze (or use the on-screen D-pad) on phones, keyboard on desktop. Installable as a PWA.
Global leaderboard
Compete worldwide with daily, weekly, monthly, and all-time rankings.
Under the hood
Mazes are carved with a randomized depth-first search (recursive backtracker), producing long, winding corridors. Because the carve visits every cell exactly once, the result is a perfect maze - guaranteed to have a solution. Hints and the optional auto-solver use A* with a Manhattan heuristic to find the shortest path.
The frontend is dependency-free vanilla JavaScript on an HTML5 Canvas. Scores, accounts, and leaderboards are served by an Express API backed by MongoDB (with PostgreSQL and in-memory drivers behind the same interface), documented in Swagger and deployed serverless on Vercel.
Want the algorithms on their own? mazeforge, the Python library powering the maze logic, ships separately with 11 generators, 7 solvers, and ASCII/PNG rendering.
Difficulty & scoring
| Level | Grid | Multiplier | Hint cost | Max hints | Steps shown |
|---|---|---|---|---|---|
| Easy | 11 × 15 | 1.0× | 5 pts | 3 | 3 |
| Medium | 15 × 21 | 1.5× | 10 pts | 5 | 4 |
| Hard | 21 × 31 | 2.0× | 15 pts | 7 | 5 |
| Expert | 25 × 35 | 3.0× | 20 pts | 9 | 6 |
Finish fast, move efficiently, and skip the hints to top the board.
Achievements to unlock
FAQ
Is every maze actually solvable?
Yes. Mazes are carved with a recursive backtracker that visits every cell exactly once, producing a perfect maze - exactly one path between any two cells, so a solution always exists.
Do I need an account to play?
No. Pick a leaderboard name and play as a guest - stats are saved locally. Create an account any time to sync your level, win rate, streaks, and per-difficulty stats across devices.
Does it work on mobile?
Fully. Swipe on the maze to move (or use the on-screen D-pad), the layout stacks for small screens, and you can install it as a PWA for an app-like, offline-capable experience.
Is there a multiplayer mode?
The realtime backend (Socket.IO rooms, position broadcast, finish events) is in place on the long-lived server. A multiplayer frontend is on the roadmap.
Can I use the maze algorithms in my own project?
Yes - mazeforge is a standalone, MIT-licensed Python library with 11 generators, 7 solvers, and ASCII/PNG rendering. The REST API is also openly documented.