Paver sand calculator
A 200 square foot patio on a 1 inch bed of sand needs a little more than half a cubic yard of bedding sand. Enter the paved area and the sand depth from the paver maker before calling the landscape yard. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Area
- 200
- Depth
- 1
- Depth ft
- 0.0833333333
- Cubic feet
- 16.6666666667
- Cubic yards
- 0.6172839506
- Unit area
- ft2
A paver sand calculator turns two job-site measurements into the cubic yards of bedding sand you should order under a patio, walkway, or driveway. Enter the paved plan area in square feet and the sand-layer depth in inches; the tool returns cubic yards using the landscaping identity that area times depth divided by three hundred twenty-four equals cubic yards, plus cubic feet for a cross-check and the echoed inputs.
How cubic yards of paver sand are computed
A paver sand layer is modelled as a right prism of paved plan area times sand thickness. In United States landscaping practice the area is measured in square feet and the sand depth is specified in inches, while suppliers sell concrete sand by the cubic yard. Converting inches of depth to feet divides by twelve; multiplying by the plan area gives cubic feet; dividing by twenty-seven (the number of cubic feet in one cubic yard) yields cubic yards.
Those three steps collapse into one stable identity: cubic yards equals area in square feet times depth in inches divided by three hundred twenty-four, because twenty-seven times twelve is three hundred twenty-four. The product is the geometric volume of the sand course only. Typical bedding sand for interlocking concrete pavers is about one inch of coarse concrete sand meeting a concrete-sand grading; some installers use one to one and a half inches over a screeded bed.
Pedestrian patios often sit on that thin setting bed above four to six inches of compacted aggregate; the sand calculator does not add those gravel inches. Both area and depth must be strictly positive: a zero or negative footprint cannot cover ground, and a non-positive depth is not a sand course.
What you can do with it
Order bedding sand for a paver patio
Homeowners enter patio square footage and the manufacturer’s sand-bed depth in inches to get cubic yards before calling a landscape yard or bagging a bulk sand ticket.
FAQ
How is paver sand volume calculated?
Cubic yards = (paved area in square feet × sand depth in inches) / 324. That equals converting inches to feet, multiplying by area for cubic feet, then dividing by 27.
What units does the paver sand calculator use?
Plan area in square feet (ft²), sand depth in inches, and volume in cubic yards (with cubic feet also returned). Convert metric measurements before calling.
What happens if area or depth is zero or negative?
Non-positive area or depth cannot define a physical sand course, so the tool never invents a cubic-yard ticket.
Is this the gravel base or the bedding sand?
Bedding / base sand only. Compacted gravel under the sand is a separate take-off, and polymeric joint sand is a bag product, not a layer volume.
What does the paver sand calculator cost?
The browser tool is free and runs locally.
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/build/paver-sand \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"area":200,"depth":1}'const res = await fetch("https://api.kit.forhosting.com/build/paver-sand", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"area": 200,
"depth": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/build/paver-sand",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"area": 200,
"depth": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/build/paver-sand", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"area":200,"depth":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"area":200,"depth":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/build/paver-sand", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"area": 200,
"depth": 1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "build.paver_sand",
"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 area or depth are rejected with a clear invalid_input error instead of inventing a delivery ticket from impossible sizes. Successful API calls use the published base of $0.002 per item.
How cubic yards of paver sand are computed
It is not the compacted gravel or crushed-stone base under that sand, not polymeric joint sand sold in bags to fill the gaps between pavers, and not a density-based tonnage unless you apply a supplier conversion after the call. On success the response echoes the rounded inputs, publishes depth in feet, cubic_feet and cubic_yards, unit labels, and formula as the string yd3 equals area times depth over three hundred twenty-four.
How to call the API and what comes back
All numeric fields must be finite; string forms of numbers are accepted when they match a strict finite numeric pattern. 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. A two-hundred-square-foot patio at one inch of bedding sand is two hundred over three hundred twenty-four cubic yards, a little more than six-tenths of a yard; a four-hundred-square-foot walkway at one and a half inches is six hundred over three hundred twenty-four cubic yards. Measure length times width of the rectangle you will pave, or sum rectangles for an L-shaped patio, then pass the total square footage and the specified sand depth. Send a JSON body with two required fields: area in square feet (aliases plan_area, paved_area, patio_area, surface, sq_ft, square_feet, A) and depth in inches of sand (aliases sand_depth, bedding_depth, thickness, depth_inches, D). On success the response sets area, depth, depth_ft as depth divided by twelve, cubic_feet, cubic_yards, unit labels for area depth and volume, and formula as described above. Failed validation—missing fields, non-finite numbers, zero or negative area or depth, or values outside absolute limits—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item.
Practical tips, typical depths, and related searches
Measure plan area from drawings or by length times width of the rectangle you will pave, and depth as the finished sand thickness the paver manufacturer specifies, using square feet and inches as this calculator expects. Most interlocking-paver sheets call for about one inch of coarse concrete sand as the setting bed, screeded level over a compacted aggregate base; do not confuse that thin course with the four-to-eight-inch gravel base, and do not treat polymeric joint sand as a layer volume. Keep inputs inside the published absolute range so products cannot overflow into non-finite results the solver must reject. Prefer this capability when you already know the square footage and the sand depth in inches and only need yards to order. If the yard quotes sand by the ton, multiply cubic_yards by the bulk density they publish after the call; this tool intentionally returns yards so quotes stay transparent in the unit suppliers use for bulk sand tickets. When teaching or writing tests, pair a two-hundred-square-foot patio at one inch with a second case at one and a half inches, and include a deliberate zero depth to prove the invalid_input path. This landing targets people searching for a paver sand calculator, cubic yards of bedding sand for a patio, paver base sand from area and depth, or how much sand under pavers; it is not a general sand-weight tool with free-form density, not a count of individual paver stones, not a gravel-base estimator, and not a joint-sand bag count. Failed tasks that return invalid_input do not consume prepaid balance. Round-trip checks are easy: recompute area times depth over three hundred twenty-four by hand and confirm cubic_yards matches within the same twelve-decimal rounding used for all numeric fields.
Integration use cases
Landscape quote for walkway and driveway setting beds
Landscapers feed paved area and sand depth into the API and attach cubic yards plus cubic feet to a transparent material quote that stays separate from the gravel-base line.
Golden fixtures for construction apps
Developers generate known-good yardage cases plus deliberate non-positive input rejections for unit tests and CI against the same formula the free widget uses.