gekro
GitHub LinkedIn

Crate Pusher

Play a free crate-pushing puzzle: walk a round helper around a room and push wooden crates onto the green targets. Four room sizes, one to five crates, undo and a hint.

Moves 0

Pushes 0

Crates home 0

Fewest possible -

Your best -

  • You: the round blue helper with eyes
  • A wooden crate: push it, you can not pull it
  • A target: a green ring on the floor
  • A crate on a target gets a tick
  • A crate that is stuck for good gets a dashed edge and a cross
  • A wall of stone blocks

Walk with the arrow buttons, the arrow keys or W, A, S and D, or tap a square next to you. Walk into a crate to push it one square, if the square behind it is free. You can not pull, so a crate pushed into a corner is stuck, and the game tells you. Put every crate on a target. Z or U undoes, H gives a hint. A best score only counts if you did not use the hint.

How the levels and the fewest-moves number work

A level starts with every crate already on a target. The page then pulls crates away from the targets, one pull at a time, walking the helper around between pulls. Playing those pulls the other way round always solves the level, so a level can never be impossible at the start.

The fewest possible moves comes from an exact search that works crate push by crate push, walking by the shortest route between pushes, and ignores positions that can never be finished. Big levels with many crates are too large to search to the end, so the number is left out for them. The hint comes from the same search from where you are now. The page also spots crates that can never move again, such as one in a corner or two side by side against a wall.

As-is, no warranty. These apps are free under their listed license and run entirely in your browser. Use at your own risk — don't blame me if your PC catches fire, your dog runs away, or the math turns out wrong. Verify anything that actually matters. None of this is professional financial, medical, legal, or engineering advice.

© 2026 Rohit Burani · MIT · Built at gekro.com · View source ↗

Guide

How to play

You are the round blue helper with eyes. The room has stone walls, wooden crates, and green rings on the floor that are the targets. Push every crate onto a target. There are as many targets as crates.

Walk with the arrow buttons under the board, with the arrow keys or W, A, S and D, or by tapping a square next to you. Walking into a crate pushes it one square, but only if the square behind the crate is free floor. You cannot push a crate into a wall or into another crate. And you can only push: there is no way to pull a crate back, so a crate pushed into a corner is stuck.

The page tells you when that happens. A crate that can never move again gets a dashed edge and a cross, and the status line says the level cannot be finished from here, so you can undo or restart. A crate on a target gets a tick.

Choose the room size (5 x 5 to 8 x 8) and the number of crates (1 to 5). New level deals a fresh one, Restart puts everything back, Undo takes back your last move and Hint shows the direction of the next step of a shortest solution. Where is everything? reads out where the helper, the crates and the empty targets are. The page address holds the room size, crate count and level number, so you can send someone the same puzzle.

Keyboard. The arrow keys or W, A, S and D walk, and holding a key keeps walking. U or Z undoes and H gives a hint. These keys work while the focus is on the board or the arrow buttons.

Shapes as well as colour. Crates have a plank pattern, targets are rings, a crate on a target shows a tick, and a stuck crate shows a cross. Screen readers get a sentence after each step.

Your best is the fewest moves you used to finish a room of that size and crate count. One move is one step, pushes included. It only counts if you did not use the hint. Undo takes a move off the count.

How it works

The generator pulls crates backwards. A level begins with every crate already on a target, a few stone blocks dropped in without cutting the floor into pieces, and the helper somewhere on the floor. The generator then pulls crates away from the targets, one pull at a time: the helper walks to the square beside a crate, steps back, and the crate follows. Playing the pulls the other way round always finishes the level, so a level is solvable by construction. The generator keeps trying until enough pulls were made and enough crates are off their targets, and it turns down a level that needs too few moves: at least 6 for one crate, 8 for two, and so on up to 14 for five (4 plus 2 per crate). New levels are built after a short “Building a new level” message, because the biggest rooms can take a moment on a slow phone.

Stuck crates are found with two sound rules. A dead square is a floor square from which a lone crate could never be pushed to any target, because nobody could stand where they need to. A frozen crate is held still on both directions by walls, dead squares and other frozen crates, such as two crates side by side against a wall. A crate that is not on a target and is on a dead square or frozen can never be finished. Both rules are cautious: they never called a finishable position stuck in the tests, but they miss some hopeless ones.

The fewest moves is exact where the search can finish. The search works push by push: from each position it walks by the shortest route to the square behind a crate and pushes once. It uses A*, with an estimate that adds up the pushes each crate still needs on its own, which never overestimates, so the first finished position it reaches is a shortest one. Positions with a stuck crate are dropped. The search is capped so a level appears quickly. For bigger rooms with more crates it often runs out (see Limits), in which case the fewest-moves number is shown as a dash (the stored solution must then be at least as long as the minimum above), and the hint uses a quicker, looser search that may not be shortest.

What the tests check

  • Walking and pushing match a second implementation that works with row and column pairs, step by step over random play on generated levels of every size.
  • For every room size and crate count, three generated levels each have connected floor, distinct targets, a start that is not finished and not stuck, and a stored solution that replays to a finished level with the stated number of pushes.
  • On 160 generated levels across every room size and crate count, the fewest moves (or the stored solution, when the search could not finish) is never below the minimum above.
  • On 32 small levels the stated fewest moves equals the answer of an independent breadth-first search over every position of the helper and the crates.
  • On 50 positions taken from the middle of play, the search finds a finishing walk exactly when the independent search does, with the same length, and reports no way out exactly when the independent search finds none. Some of those positions are hopeless.
  • The stuck-crate rules never flag a position that the independent search can finish. They do flag many that it cannot.
  • A saved best is accepted only as a whole number from 1 to 9999 for a known room and crate count. Anything else is ignored.

Limits

  • Levels are random and moderate in length, not as tangled as the hardest hand-made puzzles.
  • The fewest-moves number is often missing, because the search is too big to finish. In a check of 20 levels for every room size and crate count, it was never missing for 5 x 5, for one or two crates in any room, or for 7 x 7 with three crates or fewer. It was missing for 3 of 20 levels at 6 x 6 with four crates and 11 of 20 with five. At 7 x 7 it was missing for 6 of 20 with four crates and 17 of 20 with five. At 8 x 8 it was missing for 5 of 20 with three crates, 12 of 20 with four and 19 of 20 with five. The level is still solvable; only the number is left out.
  • There are no swipes: you move with the buttons, the keys, or by tapping a square next to you.

Everything runs locally in your browser. There is no account, nothing is uploaded, and your best scores stay on your device.

All Fun tools →

For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.