Marbler
Marbler is paper marbling (ebru, suminagashi) in a browser tab. Drop ink on a virtual bath, drag a comb through it, pull a print onto simulated paper.

The tools you drag through the ink are spray, stripes, rakes, combs, a stylus, stir, jiggle, vortex, air, an eraser, a way to freeze some ink in place, and hearts.
Seven ways to move ink
There are seven simulators underneath, and every tool works with all of them. Classic is closed-form math after Aubrey Jaffer's pst-marble; each drop pushes everything else outward. Spreading, Thin film and Film all model ink spreading across the water. Wake is a bath that keeps moving, so ink coasts and curls after you let go; Wake (fast) is the same thing drawn in a background worker. Grid ink (beta) moves color on a grid with a full fluid solve on the GPU, and that's where the soft blends come from.

A tank can repeat as a seamless tile (straight, brick or half-drop), so a pattern can become wallpaper or a textile repeat. Every pattern can also be a short JavaScript script: twenty-three examples ship with it, a session you did by hand can be copied out as a script, and a script can play on top of ink that's already there. Exports are PNG, SVG, a 3000-pixel print, or the simulated paper pull. A "How it works" page explains the math, every tool and every script command.

How I built it
Plain browser JavaScript, no framework: Canvas 2D for most simulators, WebGL for Grid ink, Web Workers for background drawing. I wrote almost all of it with Claude, starting on November 1, 2026.
I often ran two Claude sessions at once, one on the interface and one on the engine math. Each had its own git worktree and port, so experiments never touched the copy I was serving, and one session would fast-forward the other's verified commits. Claude also surveyed the research on marbling and fluid simulation, benchmarked the simulators on cloud GPUs, and checked the physics by rendering engine output to images in Node instead of eyeballing the browser.

It works, and it does a lot; the interface is still a rough demo, though. A redesign is next, then a public demo and the source.
This post was written using Claude. I am working through a backlog of posts and topics, and I don't want to keep delaying. I hope to revise this post myself and remove this comment in the near future.