SkillSafe Completely free

Paint it, then watch it settle

Eight materials, one grid, and one rule each about where a cell would rather be; everything else is a consequence.

Try a ready-made scene · Paint, pause, and save your own creation.

Completely free: no model, no metering, no credits, no sign-in required.

The eight materials, and what each does to the others

They were chosen for how they interact, not for variety. Density decides every movement: a cell may sink into anything lighter and rise through anything heavier, so sand sinks through water, water sinks under oil, and smoke bubbles up through both. Stone and wood do not move at all until something else acts on them.

Fire spreads only to cells it touches - it burns wood slowly and oil fiercely, and water very likely puts it out each frame, which makes a water channel a working firebreak. Whatever it lights it also heats: water boiled by fire becomes steam, the fastest riser here, which cools, condenses back into water and comes raining down. Smoke rises and thins out.

You paint with an adjustable brush, can pause and single-step a frame at a time, and can adjust the simulation speed without changing the frame rate. Three grid sizes are offered, all running well inside a 60fps budget. Four bundled starter scenes each demonstrate one interaction. You can export the box as a PNG snapshot or as a portable scene file, and drop a scene file back in to load it, on any machine.

Under the hood the grid is updated bottom-up with an alternating horizontal sweep, skipping any block where nothing changed - the section below has the detail.

Start from a scene

Each one makes a single interaction unmissable. Free, no account.

What it is costing

What these numbers mean

There is no model here and nothing to bill, so what this app spends is your machine's frame budget and - only if you save a scene - a little storage. Both are shown rather than hidden. The grid is diced into 16x16 blocks and a block is only stepped if something changed in or beside it last frame, so a settled scene costs almost nothing and the cost tracks the moving area rather than the grid area.

Sign in to see how much storage your saved scenes use.

Take it with you

A snapshot is a PNG of the box as it stands. A scene file is the grid itself - drop one back onto the canvas to load it, on any machine, signed in or not.

Saved scenes

Optional and free. Saved scenes live on your account, not this browser, so they follow you.

How it works, in one page

Every cell holds one material. Sixty times a second the grid is swept from the bottom row upward and each cell is asked where it would rather be. That order is not cosmetic: sweep from the top instead and a falling column empties in a single frame, because each grain gets moved again as the sweep catches up with it.

One rule does most of the work. Every material has a density, and a cell may move down into anything lighter and up into anything heavier. Sand is 60, water 30, oil 20, smoke −30. Nothing in the code says "oil floats" — water sinking through oil is what puts the oil on top, and the same comparison drops sand through both and floats smoke up through them.

Fire is the only material that reads its neighbours and rewrites them. It spreads solely to cells it is touching, which is why a gap stops it and a water channel is a genuine firebreak. Water beside a flame very likely puts it out each frame — but not certainly, and that gap is deliberate: make it certain and fire and water can never be adjacent long enough for water to boil, and steam disappears from the simulation entirely.

Two details keep it honest. Each row's horizontal sweep direction flips every frame, because scanning left-to-right every time makes every diagonal slide resolve the same way and sand piles visibly lean. And a cell that has already moved this frame is marked with the frame number, so it cannot be picked up a second time by the same sweep.

Speed comes from not doing the work. The grid is diced into 16×16 blocks and a block is stepped only if something changed in or beside it last frame, so a settled scene costs almost nothing and the cost tracks the moving area rather than the grid area. Worst case — the entire grid in free fall, every block awake — measures about 1.3 ms per frame at 400×225, against the 16.7 ms a 60fps frame allows.

Questions people ask

What is a falling-sand game?

A grid where every cell holds one material and follows one short rule about where it would rather be. Sand tries to move down, then diagonally down. Water does the same and then runs sideways. Gases try to move up. Nothing in the program knows what a pile, a water level or a flame front is - those are what you get when you run a few simple rules over a hundred thousand cells, sixty times a second.

Why do sand piles form a cone instead of a tower?

Because a grain that cannot move straight down tries the two diagonals below it before giving up, and which diagonal it tries first is chosen at random. A grain landing on top of a pile therefore keeps stepping sideways-and-down until it finds a spot with support on both sides, which is exactly the angle of repose. This page also flips the direction it scans each row every frame; without that, every grain resolves its diagonal the same way and the pile visibly leans.

Why does oil float on water here?

Each material carries a density number, and one rule uses it: a cell may move down into a lighter fluid and up into a heavier one. Oil is 20, water is 30, sand is 60. Nothing says "oil floats" anywhere in the code - water sinking through oil produces the layers, and the same comparison makes sand drop through both and smoke bubble up through them.

Does a water channel really stop a fire?

Yes, and it is worth trying. Fire only spreads to cells it is directly touching, and a flame beside water is very likely to go out each frame, so it cannot cross a gap. Load the Forest fire scene and the stand on the far side of the channel survives untouched. Dig the channel away first and it does not. Watch the edge of the channel too: some of the water boils into steam as it does the work.

Does this cost credits or need an account?

No. There is no AI model behind this app, so there is no run to meter and nothing to charge for - it is completely free and works signed out. Signing in is optional and does exactly one thing: it lets you save named scenes to your account so they follow you to another browser, and search them by meaning later.

How big is the grid and how fast does it run?