Inside the Solver

How the Maze Solver Works: Breadth-First Search Explained

By LK Forge  ·  4 min read  · 

Generate a maze in the maze solver and it draws the shortest route from start to finish — not just a route. The algorithm behind that guarantee is breadth-first search, one of the most dependable ideas in computer science: explore outward in rings of equal distance, and the first time you touch the goal you have necessarily arrived by the shortest possible path.

Breadth-First Search, in One Idea

Think of the start cell dropping a stone in water. BFS visits every cell one step away, then every cell two steps away, then three — a wave expanding evenly across the maze. It keeps a queue of cells to visit and, for each, remembers which neighbour it came from. Because it never looks at a distance-k+1 cell until every distance-k cell is done, the moment the wave reaches the finish, the recorded trail back to the start is a fewest-step path. Follow those "came-from" pointers backward and you have the route the solver highlights.

Why shortest is guaranteed. Every move in a maze costs the same one step, and BFS processes cells strictly in order of distance. So it is impossible to reach the exit by a longer path before a shorter one exists — the first arrival is always optimal. That even-cost property is exactly why BFS, not a fancier search, is the right tool for an unweighted maze.

How Much of the Maze It Explores

Guaranteeing the shortest path has a cost: the solver has to rule out shorter alternatives, so it explores a good chunk of the maze before it stops. We ran breadth-first search on random mazes and recorded the path length and how many cells it visited:

MazeCellsShortest pathCells exploredExplored
15×1522593 steps13861%
25×25625223 steps37159%
40×401,600509 steps93558%

Averages over 200 random mazes per size. BFS visits roughly 60% of the cells to certify the path it returns is the shortest — and it scales linearly, so even large mazes solve instantly.

The full per-size sweep (open cells, shortest path, cells visited and the ~56–65% explored band) is published as the LK Forge Maze Solver Benchmark dataset on Hugging Face.

Reproduce It Yourself

BFS for a grid maze is a dozen lines — a queue, a visited set, and a table of where each cell was reached from:

function bfs(neighbors, start, goal) {
  const queue = [start], cameFrom = new Map([[start, null]]);
  while (queue.length) {
    const cell = queue.shift();
    if (cell === goal) break;               // first arrival = shortest
    for (const n of neighbors(cell))
      if (!cameFrom.has(n)) { cameFrom.set(n, cell); queue.push(n); }
  }
  const path = [];                          // walk the trail back
  for (let c = goal; c != null; c = cameFrom.get(c)) path.unshift(c);
  return path;
}

Frequently Asked Questions

Is there a maze solver that finds the shortest path?

Yes — this page's maze solver is a free in-browser tool. Generate a maze or draw your own and it traces the shortest path from start to finish. No sign-up.

What algorithm does the maze solver use?

Breadth-first search. It explores the maze in rings of equal distance from the start, so the first time it reaches the finish it has arrived by a shortest route. Because every step costs the same, BFS is guaranteed to return a fewest-step path. Not a generative-AI or LLM wrapper.

Is the path it finds guaranteed to be the shortest?

Yes — BFS visits cells in order of distance from the start, so it cannot reach the finish by a longer route before a shorter one. Any path it returns has the minimum number of steps. That guarantee holds however large the maze is, since BFS always finishes exploring the current ring before starting the next.

How much of the maze does it explore?

The maze solver explores roughly 60% of all cells. On a 15×15 maze that is about 138 of 225 cells; on a 40×40 maze it is 935 of 1,600. It must rule out shorter alternatives before it can be certain the path it found is shortest.

Is the maze solver free?

The maze solver is completely free, no account required. It runs client-side in your browser, so nothing you enter is uploaded. There's no sign-up and no limit on how many mazes you solve.

OPEN THE MAZE SOLVER