A six-legged beach machine walks on Theo Jansen's eleven-bar linkage.
Every leg is the same planar linkage: a crank turns about the axle and eleven bars carry its rotation down to the foot. Each frame the joints are solved exactly, one circle intersection at a time, and with Jansen's 'holy numbers' the foot traces a teardrop with an almost perfectly flat bottom (drawn in green). Three crank throws 120 degrees apart drive six mirrored legs. Nothing about the gait is scripted: the lowest foot holds the body up, gravity drops it when no foot does, and the feet on the sand push it along without slipping, leaving footprints behind.
Try it. Drag a bar in the blueprint (or its row in the table) up or down to change its length and watch the gait improve, stagger or bind. Drag across the beach to turn the crank by hand. Arrow keys change speed and direction, Space stops the wind, M tries a random mutation and R restores the holy numbers. Left alone, it occasionally tests a mutation and then repairs it.
Paste this into Claude Code, Codex or any coding agent to get a simple version running, then take it wherever you like.
Build a walking Theo Jansen linkage (the leg of a Strandbeest) with JavaScript and the HTML canvas element. Put everything in a single index.html file with no libraries or build step, so I can open it directly in a browser.
Start simple:
- Make a full-window canvas that stays sharp on high-DPI screens (scale by devicePixelRatio).
- Store Jansen's 'holy numbers' as bar lengths: a 38, b 41.5, c 39.3, d 40.1, e 55.8, f 39.4, g 36.7, h 65.7, i 49, j 50, k 61.9, l 7.8, m 15.
- Put the crank axle O at the origin and the fixed pivot B at (-a, -l). The crank pin C is at m(cos t, sin t).
- Write a function that intersects two circles and returns one of the two solutions, chosen by which side of the line between the centers it lies on. Solve the joints in order: J1 from circles (C, j) and (B, b); J2 from (C, k) and (B, c); J3 from (J1, e) and (B, d); J4 from (J3, f) and (J2, g); the foot from (J4, h) and (J2, i). Pick the sides that put the foot below the axle on a path with a flat bottom.
- Animate t, draw bars as thick round-capped lines and joints as dots, and trace the foot's path.
Once that works, make it walk:
- Add a mirrored leg (negate x and use the crank angle pi - t) and two more pairs with the crank shifted by 120 and 240 degrees.
- Each frame, lift the body so the lowest foot touches the ground and shift it back by however far that foot moved, so feet never slide.
- Scroll the ground under it and leave footprints where feet touch down.
Explain the key ideas in short code comments. When you're done, tell me how to open it and suggest three directions I could take it next, such as sliders that let me mutate each bar length, a pseudo-3D view of several leg pairs along the axle, or a simple optimizer that searches for bar lengths with the flattest foot path.