Stepping stone calculator
A 20 ft path with stones 2 ft apart, centre to centre, needs 11 stepping stones over 10 gaps, with one stone at each end. Know the count before you order flagstone, concrete pads or timber rounds. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Path length
- 20
- Spacing
- 2
- Intervals
- 10
- Stones
- 11
A stepping stone calculator turns a walkway path length and the spacing you want between consecutive stones into the integer stone count you need before you order flagstone, concrete pads, or timber rounds.
How stepping stones are counted from path length and spacing
A straight walkway of positive path length is divided into intervals whose target width is the stone spacing measured centre to centre. The number of intervals (gaps between consecutive stones) is the ceiling of path length divided by spacing, so a run that is not an exact multiple of the spacing still gets enough intervals to cover the full length with stones at both ends.
Stones equal intervals plus one because every interval has two ends and adjacent intervals share a stone: a single interval needs two stones, two intervals need three stones, and so on. Path length and spacing must use the same length unit—metres with metres, feet with feet—because the calculator never converts units and only needs the dimensionless ratio. Path length must also be positive; a zero-length path is not a walkway.
The response does not add waste pieces, curved branches, or landing pads beyond the two ends of this single straight segment—model branches and landings as separate calls or adjust counts after the geometric take-off. On success the tool echoes rounded path length and spacing, publishes intervals, stones, formula, message, and steps so you can audit the arithmetic by hand or in automated tests.
Think of the first stone at the start of the path and the last stone at the end; every intermediate stone sits one spacing farther along the centreline until the full length is covered under the ceiling rule.
Practical tips, limits, and related searches
Measure the clear run along the intended centreline of the walkway and choose a spacing that matches stride comfort and stone size—two feet and sixty centimetres are common targets, but the tool accepts any positive pair of path length and spacing in the same unit. If the last interval would be awkwardly short, either shorten the overall path, slightly reduce spacing so length divides more evenly, or accept the ceiling rule and leave a slightly shorter final step; this calculator always covers the full length with ceil.
Keep dimensions inside the published absolute range so counts cannot overflow into non-finite results the solver must reject. Prefer this capability when you already know the path length and target centre-to-centre spacing and only need an integer stone count; if your source is a closed loop or a branching path, call once per straight segment and sum stones carefully so shared junction stones are not double-counted. Round-trip checks are easy: recompute ceil of path length over spacing by hand, add one for stones, and confirm the published integers match.
What you can do with it
Garden path material list
Homeowners enter walkway length and desired stone spacing to get a stepping-stone count before shopping for flagstone or concrete pads.
FAQ
How many stepping stones do I need for a path?
Example: path length 20 and spacing 2 → 10 intervals and 11 stones.
What if spacing is zero or negative?
Stone spacing must be strictly positive; zero or negative spacing cannot define a walkway interval.
Does this handle curved paths or patio grids?
No. It models one straight segment. Call once per straight run and adjust shared junction stones; for full patio area coverage use a paver-area calculator instead.
Is the stepping stone calculator free?
The browser tool is free and runs locally.
What if the last gap comes out shorter than the others?
The count always covers the full length, so the final step may be a little shorter. If that feels awkward, shorten the path slightly or reduce the spacing a touch so the length divides more evenly.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/home/stepping-stones \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"path_length":20,"spacing":2}'const res = await fetch("https://api.kit.forhosting.com/home/stepping-stones", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"path_length": 20,
"spacing": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/stepping-stones",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"path_length": 20,
"spacing": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/stepping-stones", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"path_length":20,"spacing":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"path_length":20,"spacing":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/stepping-stones", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"path_length": 20,
"spacing": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.stepping_stones",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Zero or negative spacing is rejected with a clear invalid_input error instead of inventing infinite stones, and non-positive path length is rejected the same way.
How stepping stones are counted from path length and spacing
Spacing must be strictly positive: zero spacing would imply infinitely many stones, and negative spacing has no physical meaning on a line, so both cases return invalid_input.
How to call the API and what comes back
String forms of numbers are accepted when they match a strict finite numeric pattern, but unit suffixes, thousand separators, and empty strings are rejected. On success the response sets intervals to the gap count, stones to intervals plus one, formula to the stones and intervals expressions, message to a short English summary, and steps to an ordered substitution log. Prefer sending numbers rather than pre-formatted strings when you control the client; when you must send strings, avoid unit suffixes or thousand separators that would fail the finite-number pattern. Send a JSON body with two required fields: path_length (aliases length, path, L, run, run_length, walkway_length) and spacing (aliases stone_spacing, space, gap, S, interval, step). Path length and spacing must be finite positive numbers within the published absolute range so the ratio and counts remain finite in IEEE double precision on the Worker and in the browser. Failed validation—missing fields, non-finite numbers, zero or negative spacing, non-positive path length, or values outside absolute limits—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item. Example: path_length twenty and spacing two yields ten intervals and eleven stones because twenty divided by two is exact; path_length twenty and spacing three yields seven intervals and eight stones because the ceiling covers the remainder so both ends still receive a stone.
Practical tips, limits, and related searches
When teaching or writing tests, pair an exact multiple (path length twenty, spacing five → five intervals and six stones) with a non-exact case that exercises the ceiling, and include a deliberate zero or negative spacing to prove the invalid_input path. This landing targets people searching for a stepping stone calculator, how many stepping stones for a path, walkway stone spacing count, or garden path stone material list online; it is not a paver area coverage tool for full patio grids, not a bedding sand volume estimator, not a curved-path arc-length survey, and not a multi-branch landscape plan that places stones at GPS coordinates. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when you deliberately send zero spacing to verify error handling.
Integration use cases
Landscaper take-off for straight runs
Landscapers feed design path length and centre-to-centre spacing into the API and attach stones, intervals, and steps to a transparent quote.
Golden fixtures for hardscape apps
Developers generate known-good exact and ceiling cases plus deliberate zero-spacing rejections for unit tests and CI.
Technical questions
What is the spacing measurement?
Spacing is the centre-to-centre distance between consecutive stones along the path, in the same unit as path_length. The calculator does not convert units.