Cubic yards of a cylinder
Turn a round hole, column or tank measured in feet into cubic yards for ordering concrete, gravel or mulch: a radius of 2 ft and a height of 5 ft come to 2.327106 cubic yards. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Radius
- 2
- Height
- 5
- Volume cubic yards
- 2.327106
When a post hole, a column, a tank or a silo is measured in feet but the material that fills it is sold by the cubic yard — concrete, gravel, sand, mulch, topsoil — someone has to bridge the two units, and that bridge is exactly what this capability builds. You send the radius of the base and the height, both in feet, and you get back the volume in cubic yards in a single deterministic call: πr²h cubic feet, divided by 27, with no manual arithmetic and no unit guessing.
From feet in to cubic yards out
With the radius r and the height h both measured in feet, that formula yields cubic feet. But bulk materials in the United States are quoted in cubic yards, and one cubic yard — a cube three feet on each side — is exactly 27 cubic feet. Nothing is approximated except the constant π itself, carried to double precision, and the 27 is an exact definition, not a rounded factor, so the only rounding is the final display rounding you control.
If what you measured is the diameter rather than the radius, halve it before calling: sending the diameter as the radius would overstate the volume by a factor of four, because the radius enters squared — and four times the concrete is an expensive mistake. That squaring is also why a half-inch error in the radius of a wide hole matters far more than the same error in its depth.
Where cylinder yards show up
Cylindrical volume in cubic yards is a workhorse quantity in American construction and landscaping because the tape measure reads feet while the ready-mix truck, the gravel pit and the mulch yard all bill in yards. Concrete contractors compute the yards in cylindrical post holes, footings, piers and sonotube columns; a single 2-foot-diameter hole 5 feet deep takes about 0.58 cubic yards, and a dozen of them round up to a full truckload decision.
Well casings, water tanks, grain silos, sand and aggregate stockpiles, drainage sumps and decorative pond cylinders all reduce to πr²h÷27 once you have two measurements.
What you can do with it
Order concrete for post holes
Get the cubic yards of a cylindrical hole, footing or sonotube column directly from its radius and depth in feet — the exact unit the ready-mix plant bills in.
Size tanks and silos in yards
Compute the capacity in cubic yards of a cylindrical water tank, well casing or grain silo from two tape-measure readings, for fill and material planning.
Estimate fill for round excavations
Turn the radius and depth of a round excavation, sump or pond into the cubic yards of gravel, sand or backfill you need to order.
FAQ
I measured the diameter, not the radius. What do I send?
Divide the diameter by two first. The formula is πr²h÷27, and sending the diameter as the radius would give four times the true volume.
Can I control the precision?
Yes. The optional decimals field sets the decimal places of the volume, from 0 to 12, with six as the default. Rounding is half-up.
Is my input stored anywhere?
No. The computation is a pure function: the radius and height are processed in memory and discarded, and only the volume is returned.
Why is the volume divided by 27?
Because a cubic yard is a cube three feet on each side, which holds exactly 27 cubic feet. That 27 is an exact definition, not a rounded factor, so the only rounding is the final one you choose.
How much concrete does a 2-foot-wide post hole need?
A hole 2 feet across and 5 feet deep has a radius of 1 foot and takes about 0.58 cubic yards. Multiply by the number of holes to size the whole order.
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/math/cubic-yards-cylinder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"radius":2,"height":5}'const res = await fetch("https://api.kit.forhosting.com/math/cubic-yards-cylinder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"radius": 2,
"height": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/cubic-yards-cylinder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"radius": 2,
"height": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/cubic-yards-cylinder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"radius":2,"height":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"radius":2,"height":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/cubic-yards-cylinder", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"radius": 2,
"height": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.cubic_yards_cylinder",
"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
Both inputs are validated as positive finite numbers before any math happens, and anything else is rejected with a typed invalid_input error that names the offending field, so a bad tape reading never turns into a silently wrong order quantity.
From feet in to cubic yards out
A right circular cylinder is a circle extruded along a straight axis, so its volume is the area of the base times the height: V = πr²h. This endpoint therefore applies V_yd³ = πr²h ÷ 27 in one step, which is the calculation every concrete order form quietly assumes.
Validation, precision and rounding
The two inputs are checked before any arithmetic: both radius and height must be positive finite numbers. Once the inputs pass, the volume is computed in double precision, divided by 27, and rounded to the requested number of decimal places — six by default, anywhere from zero to twelve via the optional <em>decimals</em> field — using a half-up rule applied to the absolute value. Zero, a negative value, a missing field, an unparseable string, NaN or infinity are all rejected with a typed <em>invalid_input</em> error whose message names the field at fault — an error that is never billed, because it is the caller's data that failed, not the service. Numeric strings such as "2.5" are accepted and coerced, which makes the endpoint friendly to form data and query parameters straight off a jobsite tablet. The response echoes the exact radius and height that were used, so one payload is a complete, auditable record of what was computed.
Where cylinder yards show up
The capability runs as a pure function on our global edge: nothing is stored, nothing is sent to any third party, and the same code that answers paid API calls runs free in your browser on this page, so you can sanity-check a dimension interactively before wiring it into an estimating spreadsheet. At $0.002 per request with no per-unit component, sweeping thousands of candidate dimensions — for example sizing a tank or a hole depth against a strict material budget — costs exactly what the catalog says, with no surprises.
Technical questions
What does it cost?
$0.002 per request, with no per-unit component. It is also free to run in your browser on this page.
Which units does it use?
Radius and height are in feet; the result is in cubic yards, using the exact definition 1 cubic yard = 27 cubic feet.
What input is rejected?
Anything that is not a positive finite number: zero, negative values, non-numeric strings, NaN, infinity and missing fields all return a typed invalid_input error.