Skip to content
Once Books
Blog

What actually makes a maze hard (we measured it)

The Once Books team · 7 October 2026 · 7 min read

We built a maze generator, graded it from easy to evil, and then measured what we'd made. One of the three numbers we'd chosen to define difficulty turned out to run backwards down the ladder.

That's the useful part of this post, so here it is first: junctions per cell of route is higher on our easy mazes than on our hard ones. If you'd asked us before we measured, we'd have said the opposite with some confidence.

The problem nobody writing about maze books mentions

Take a 40 by 40 grid, carve it, and put the entrance and exit near each other. The route is twenty cells long. The other 1,580 cells are decoration. The page takes a minute, and the cover says it's a giant maze.

That's not a hypothetical. It's the most common way a generated maze book disappoints, and it's invisible to the person generating it, because the page looks enormous. Size is the thing you can see and difficulty is the thing you can't, which is exactly the setup for a product that ships something nobody enjoys.

So before picking numbers we wrote down what we thought difficulty was, and then checked.

What we measured

Three candidates, on every page, after carving:

  • Route length. How many cells the correct path runs through.
  • Wrong-turn depth. How many cells deep the deepest wrong branch goes, found by flooding outward from the route. This is what a mistake costs.
  • Junction density. How many cells on the route offer three or more ways on, divided by the route length. Decisions per step.

Then we generated across every shape and grade and took medians. These are the rectangular numbers, which are the cleanest to read:

GradeRoute lengthDeepest wrong turnJunctions per cell
Easy2780.46
Medium40150.50
Hard106230.45
Extreme290590.12
Evil737970.08

Route length and wrong-turn depth climb cleanly. Junction density sits around 0.45 to 0.50 for the first three grades and then falls off a cliff.

Why the junction number is inverted

It's a property of the carving algorithm, not of the difficulty.

Our hardest grades use a depth-first carver, which produces long winding corridors with occasional branch points. You walk a long way between decisions. Our easiest grades use a biased carver with most of the dead ends opened into loops, which produces a bush: short runs, constant branching, and almost nothing that punishes a wrong choice.

So a braided toddler maze is junctions all the way down, and a 40 by 40 depth-first maze is a river with a few tributaries. Counting decisions per step measures which carver ran, and tells you nothing about how long the page takes.

This is why we report junction density on every generated maze but don't grade on it. It's a genuinely useful diagnostic for "what does this page feel like", and a useless one for "how hard is it".

What we kept

Two signals, and we band them differently from how we expected to.

Wrong-turn depth is an absolute count and transfers cleanly between shapes. A wrong turn forty cells deep is forty cells deep whether the cells are squares, hexagons or polar wedges. Our evil grade asks for at least 38.

Route length we band as a fraction of the reachable cells rather than as a count, and that correction came out of a second surprise.

A size has to mean a cell count

We shipped six size presets, named by their grid: medium is 16 by 16, giant is 40 by 40. Then we built the same sizes on a circular grid and a heart-shaped one and measured again.

Seven polar rings hold 139 cells where a 16 by 16 rectangle holds 256. A heart fills a little under half its bounding box. Taking the preset's numbers literally meant a "hard" circular maze measured as a medium one, and a "giant" heart measured two grades below its label. Same setting, different product.

The fix is that a size means about this many cells, whatever the shape. A circular grid picks the ring count that comes nearest the target, and a masked grid grows its box until the silhouette holds enough. A reader who switches from a square maze to a heart keeps the difficulty they picked, which is the only behaviour that isn't a lie.

And a circular maze is a different journey

One more correction, and it's geometric rather than a bug.

A polar maze is solved rim to hub. That's a radial trip: its length grows with the ring count, while the cell count grows with the square of it. Measured against the same path-ratio floor as a rectangle, good circular mazes failed and bad square ones passed. So the floor is scaled by shape, which is a slightly embarrassing-looking special case that happens to be the honest one.

What the grade actually does now

Two jobs, kept apart, because conflating them was the original mistake.

The band is a quality gate on a seed. The grade's identity comes from its size and its carver; the band just catches the dud page, and the generator keeps the best of six seeds against it. Across all five shapes, five grades and four entrance placements, 300 out of 300 pages clear their own band and 300 out of 300 are structurally valid.

The classifier is separate and answers a different question: whatever this maze was asked to be, how hard is it really? It reads route length and wrong-turn depth off two ladders and takes the lower of the two, so a giant braided maze with a long route past shallow loops is reported as easy rather than evil. The free generator shows you that number, and it will contradict the setting you picked if you pick an odd combination. That's the point.

If you want to try the difference

Generate a maze at medium, then switch the shape to hexagonal and leave everything else alone. Six sides per cell instead of four means a junction can offer five ways on instead of three, and the page takes visibly longer at the same cell count. Then set Passages to "no dead ends" on an easy maze and watch the wrong-turn depth collapse while the route barely moves.

Both are free in the printable maze generator, and if you're building a whole book, the KDP maze maker applies the same measurement to every page before it prints. The rest of that job, from picking an age band to the gutter width, is in how to make and sell maze books on KDP.

Try the tool

Free, in your browser, no sign-up. Make one, then build the whole book in the studio.

Questions parents ask

What makes a maze hard?
Two things, and neither is the size of the grid. How far the route travels across the maze, and how deep the deepest wrong turn goes. A big maze whose solution runs down one edge past shallow branches is an easy page, however many cells it has.
Does a bigger maze take longer to solve?
Only if the route is longer, and that is not guaranteed. Doubling the grid quadruples the cells but can leave the entrance and exit close together, so the solving time barely moves. Measure the route, not the grid.
Are more junctions what makes a maze difficult?
Not per cell of route. We measured the opposite: the carvings that produce the hardest mazes make long corridors with few decisions per cell, while the gentlest mazes are junctions all the way down. Junction density is a texture, not a difficulty.

Related reading

Keep reading

← All posts