Maze Generation Algorithms
Discover the fascinating algorithms behind maze generation. Each algorithm creates unique patterns and characteristics.
Recursive Backtracker
Also known as: Depth-First Search (DFS)
Difficulty: Medium The classic maze generation algorithm that creates long, winding corridors with relatively few dead ends.
How It Works
- 1 Start at a random cell and mark it as visited
- 2 While there are unvisited cells, pick a random unvisited neighbor
- 3 Remove the wall between the current cell and chosen neighbor
- 4 Move to the neighbor and repeat
- 5 If no unvisited neighbors exist, backtrack to find one
Characteristics
- Creates mazes with long, twisting passages
- Relatively few dead ends compared to other algorithms
- Good for beginners due to predictable paths
- Memory efficient with iterative implementation
Best for: Traditional mazes with single solution paths
Prim's Algorithm
Also known as: Randomized Prim's
Difficulty: Hard A minimum spanning tree algorithm adapted for maze generation, creating mazes with many short dead ends.
How It Works
- 1 Start with a grid full of walls
- 2 Pick a random starting cell and add its walls to a list
- 3 While the wall list is not empty, pick a random wall
- 4 If the cell on the opposite side hasn't been visited, remove the wall
- 5 Add the neighboring walls of the new cell to the list
Characteristics
- Creates many short dead ends
- More branching than recursive backtracker
- Mazes appear more "bushy" and complex
- Harder to solve due to frequent decision points
Best for: Challenging mazes with many dead ends
Kruskal's Algorithm
Also known as: Randomized Kruskal's
Difficulty: Medium-Hard Another spanning tree algorithm that randomly removes walls while ensuring all cells remain connected.
How It Works
- 1 Create a list of all interior walls
- 2 Assign each cell to its own unique set
- 3 Randomly select a wall from the list
- 4 If the cells on either side belong to different sets, remove the wall
- 5 Merge the two sets and repeat until one set remains
Characteristics
- Creates uniform, unbiased mazes
- No visible patterns or directional bias
- Good distribution of dead ends
- Each maze is truly random
Best for: Unbiased mazes with uniform texture
Recursive Division
Also known as: Chamber Algorithm
Difficulty: Easy-Medium A wall-adding algorithm that recursively divides the space into smaller chambers with passages between them.
How It Works
- 1 Start with an empty room
- 2 Add a wall that divides the room in two
- 3 Add a passage through the wall at a random point
- 4 Recursively apply to both sub-rooms
- 5 Stop when rooms are too small to divide
Characteristics
- Creates rectangular, room-like chambers
- Long straight corridors are common
- Recognizable geometric pattern
- Fast generation even for large mazes
Best for: Mazes with distinct rectangular rooms
Binary Tree
Also known as: Binary Tree Algorithm
Difficulty: Easy The simplest maze algorithm with a distinctive diagonal bias in the resulting maze.
How It Works
- 1 Visit each cell in the grid
- 2 For each cell, randomly carve a passage either north or east
- 3 If on the north edge, always go east
- 4 If on the east edge, always go north
- 5 Results in a perfect maze with diagonal flow
Characteristics
- Very fast and simple to implement
- Strong diagonal bias (NE corner is always open)
- Two edges of the maze are always open corridors
- Easier to solve when going NE, harder going SW
Best for: Quick generation, educational purposes
Wilson's Algorithm
Also known as: Loop-Erased Random Walk
Difficulty: Medium Uses loop-erased random walks to generate unbiased mazes where every possible maze is equally likely.
How It Works
- 1 Mark one cell as part of the maze
- 2 Start a random walk from an unvisited cell
- 3 If the walk loops back on itself, erase the loop
- 4 When the walk reaches the maze, add the path to the maze
- 5 Repeat until all cells are in the maze
Characteristics
- Generates perfectly unbiased mazes
- Every possible maze has equal probability
- Can be slow for large mazes (random walks)
- Mathematically beautiful algorithm
Best for: Unbiased, mathematically perfect mazes
Cellular Automaton
Also known as: Cave Generation
Difficulty: Variable Uses cellular automaton rules to create organic, cave-like structures rather than traditional corridors.
How It Works
- 1 Start with random noise (cells randomly open or closed)
- 2 Apply smoothing rules based on neighbor count
- 3 If a cell has many wall neighbors, it becomes a wall
- 4 If a cell has many open neighbors, it becomes open
- 5 Repeat smoothing several times
Characteristics
- Creates organic, natural-looking caves
- May produce disconnected regions
- Non-traditional maze appearance
- Good for game level generation
Best for: Organic, cave-like structures
Sidewinder
Also known as: Sidewinder Algorithm
Difficulty: Easy A row-by-row algorithm similar to Binary Tree but with horizontal bias instead of diagonal.
How It Works
- 1 Process each row from left to right
- 2 For each cell, randomly decide to continue East or close the "run"
- 3 When closing a run, pick a random cell from the run and carve North
- 4 The first row is always a single corridor (all East)
- 5 Results in maze with horizontal passages and vertical connections
Characteristics
- Creates long horizontal corridors
- Top row is always completely open
- No diagonal bias (unlike Binary Tree)
- Very fast - processes row by row
Best for: Mazes with horizontal emphasis
Hunt and Kill
Also known as: Hunt-and-Kill Algorithm
Difficulty: Medium Similar to Recursive Backtracker but uses a "hunt" phase instead of backtracking when stuck.
How It Works
- 1 Start at a random cell, perform random walk (Kill phase)
- 2 When stuck (no unvisited neighbors), scan grid for unvisited cell next to visited cell (Hunt phase)
- 3 Connect the found cell to a visited neighbor
- 4 Continue random walk from there
- 5 Repeat until all cells are visited
Characteristics
- Creates long, winding passages like DFS
- No stack needed - memory efficient
- Slightly more uniform than Recursive Backtracker
- Hunt phase can be slow on large mazes
Best for: Long corridors without stack overhead
Growing Tree
Also known as: Configurable Growing Tree
Difficulty: Variable The most flexible algorithm - behavior changes based on how cells are selected from the active list.
How It Works
- 1 Start with a random cell in the active list
- 2 Select a cell from the list (newest, oldest, or random)
- 3 If it has unvisited neighbors, connect to one and add it to list
- 4 If no neighbors, remove cell from list
- 5 Selection method determines maze style
Characteristics
- Newest selection = Recursive Backtracker style
- Random selection = Prim's style
- Mixed selection = balanced passages and dead ends
- Most versatile algorithm
Best for: Customizable maze characteristics
Eller's Algorithm
Also known as: Row-by-row Generation
Difficulty: Medium A memory-efficient algorithm that generates mazes row by row, using set theory to track connected cells.
How It Works
- 1 Initialize first row with each cell in its own set
- 2 Randomly merge adjacent cells in the same row
- 3 For each set, create at least one vertical connection
- 4 Move to next row, carrying set information forward
- 5 In the last row, merge all remaining separate sets
Characteristics
- O(width) memory - can generate infinite mazes
- Row-by-row generation, no backtracking
- Creates well-balanced mazes
- Perfect for streaming maze generation
Best for: Memory-constrained environments
Aldous-Broder
Also known as: Random Walk Algorithm
Difficulty: Easy The simplest unbiased maze algorithm using a random walk that continues until every cell has been visited.
How It Works
- 1 Start at a random cell
- 2 Randomly move to any neighbor
- 3 If the neighbor is unvisited, carve a passage
- 4 Continue random walking regardless of visited state
- 5 Stop when all cells have been visited
Characteristics
- Perfectly unbiased - all mazes equally likely
- Very simple to implement
- Can be slow on large mazes (random walk)
- No visible patterns or directional bias
Best for: Uniform random maze selection
Braid Maze
Also known as: No Dead Ends Maze
Difficulty: Easy A maze with no dead ends - every path either leads somewhere or loops back, creating multiple routes.
How It Works
- 1 Generate a standard maze first
- 2 Find all dead ends (cells with 3 walls)
- 3 Remove walls from dead ends to create loops
- 4 Repeat until no dead ends remain
- 5 Result has multiple valid solution paths
Characteristics
- No dead ends anywhere
- Multiple valid solutions exist
- Less frustrating for beginners
- Good for chase/race games
Best for: Games and beginner-friendly puzzles
Fractal Maze
Also known as: Self-Similar Pattern Maze
Difficulty: Medium Creates mazes with fractal-like structure where similar patterns appear at different scales through recursive subdivision.
How It Works
- 1 Choose a fractal pattern (cross, spiral, tree, serpent)
- 2 Recursively divide space into regions
- 3 Create passages between divided regions
- 4 Apply same pattern at smaller scales
- 5 Ensure full connectivity across all regions
Characteristics
- Self-similar patterns at different scales
- Mathematical, organized appearance
- Multiple pattern variations available
- Unique aesthetic quality
Best for: Mathematical art and education
Ready to Create Your Maze?
Start generating unique mazes in seconds. Perfect for teachers, parents, puzzle enthusiasts, and anyone who loves a good challenge.
Try Generator