Ryan McCarty. Back to the Lab
EXP-039 tool Live Vanilla JS · SVG · Client-side only

Irrigation Lab.

A sprinkler plan for your yard, not mine. Draw the lot, say what your spigot actually delivers, and get the heads, the nozzles, the zones, the trenches and a dig plan you can take to the store — all in your browser, with nothing sent anywhere.

Example · Blank lot · Your own image

Start with a yard.

Open the example to see what the auto-layout does before you draw anything, or bring your own: the size of the lot, or a picture you can put a scale on.

Nothing you draw or trace leaves this machine. There is no server: the plan lives in this browser's own storage, and an image is read straight off your disk and never uploaded.

Open the example yard An invented 70 × 120 ft lot with a house, a drive, beds, a patio and a shed. Nothing real is modelled.
Start from a blank lot Enter the lot size and draw the yard on top of it.
Trace your own image A screenshot of a satellite view, a survey, a plot plan, a sketch on graph paper. You set the scale by clicking two points you know the distance between.

Bench notes

Size the nozzle to the shape
The tool measures the largest circle that fits inside each piece of ground — the real "how wide is this" — rather than its area. A 2,000 sq ft lawn and a 2,000 sq ft side strip want completely different heads, and area alone cannot tell them apart. Wide open ground gets gear rotors, ordinary lawns get rotary nozzles, narrow strips get fixed sprays. Then the throw is stepped down until at least three heads fit one zone's flow budget — on a small meter you run more, smaller heads per valve, not one big rotor at a time.
Ring the edge, fill the middle
Heads go on the corners first, with the arc matched to the interior angle and aimed down the bisector, then along the edges as half circles facing in, then on a triangular lattice wherever the perimeter ring cannot reach. Spacing is head-to-head: every head throws far enough to hit its neighbour. That looks like absurd overlap on paper and it is the entire trick — a single head puts down most of its water close in, so anything less leaves dry rings you cannot fix by turning the water up.
Prune what earns nothing
The corner and edge passes double up, so a greedy pass tries removing each head cheapest-first and keeps the removal only if coverage holds and the head-to-head overlap barely moves. Set cover is NP-hard; a yard does not deserve a branch-and-bound. This typically drops a third of the placements.
Pack zones under the flow budget
Your spigot is the constraint that decides everything. Heads are walked in a nearest-neighbour chain from the water source and packed into zones at 85 % of measured flow, so a zone is a contiguous place in the yard rather than a scattering, and no valve is sized at 100 % of a bucket test. The supply fixes how many valves; the chain is then re-cut into that many runs so the busiest zone draws as little as possible and no head is stranded on a valve of its own.
Trench as a spanning tree
Each zone gets a minimum spanning tree from its nearest source out to every head, and every edge of it is a routed run: straight where the line stays clear of every building, and otherwise bent around the corners by the shortest path, so the trench on the plan is a trench you can dig. Paving is a price rather than a wall — a walk can be sleeved.
What it is not
Not a hydraulic design. Nozzle flow and throw are catalogue approximations, friction loss in the pipe is not modelled, and nothing here knows your local code, your backflow requirements or where your utilities are buried. It is close enough to size zones and argue with a parts list. It is not close enough to skip a pressure gauge, a bucket, or a call before you dig.
It stays on this machine
The plan is saved in this browser's own storage as you work and can be exported as JSON. A traced image is read with the browser's file reader and never uploaded. There is no server and no analytics, which is also why clearing site data deletes everything.

Set the scale

Click two points on the image that you know the real distance between — a driveway width, a house wall, the long side of the lot — then type that distance.

Click the first point.