Single-file canvas toy · 2026
Wax
A digital drip candle you light, pour, and watch cool into a growing wax sculpture.

Wax
A digital drip candle. Press and hold to pour molten wax; let go and watch it cool into a permanent, ever-growing sculpture.
Play free: Open Wax in your browser
Built with: HTML5 Canvas · Web Audio API · Vanilla JavaScript, no build step, no dependencies.
Overview
Wax is a small, atmospheric toy: a single lit candle standing on a table. Press and hold anywhere to pour wax down the candle’s body. Each drip cools as it falls, and once it stops moving it bakes permanently into the growing wax formation beneath the flame. Leave it alone and the candle keeps dripping on its own, so the sculpture never stays still for long.
Highlights
- Pour and bake. Held drips ooze, cool, and lock into the wax layer, building up layered, asymmetric drip formations over time.
- A living flame. The flame flickers and leans away from fresh pours, with drifting embers, curling smoke, and cheap heat-haze shimmer above it.
- Six wax colors. Amber, oxblood, honey, sage, bone, and plum, each with its own molten “hot” glow, chosen from a swatch bar that fades when idle.
- Procedural sound. Drip and sizzle sounds are synthesized live with the Web Audio API rather than sampled, pitched by drip size and proximity to the flame.
- Idle evolution. The candle self-drips in its natural wax color while untouched, so the sculpture keeps growing even when nobody’s pouring.
Tech and Architecture
The whole toy lives in one HTML file with an inline <canvas>, no framework, no bundler, no external assets. A 2D canvas context handles the live scene each frame; a second offscreen canvas bakes cooled drips into a permanent wax layer so the growing sculpture doesn’t need to be re-simulated every frame. Flame, embers, smoke, and shimmer are each small self-contained particle systems layered over the baked wax. All audio is synthesized directly through the Web Audio API, with drip pitch and tone derived from drip size and how close the pour lands to the flame.
Process
Wax went through three passes tracked as standalone commits: an initial single-file drip-candle sketch, an engagement pass to make the scene feel more alive, and an art-direction pass that added the table plane, an ignite ramp for the flame, and the ambient atmosphere (embers, smoke, shimmer) that ties the scene together.
Gallery
Gallery coming soon
More visuals from this project are on the way.