Concrete slab calculator
A 4 × 3 m shed pad, 10 cm thick, needs 1.2 m³ of concrete, exactly 80 bags at the default bag size. Enter length, width and thickness to get the volume, the plan area and how many whole bags to buy. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Length
- 4
- Width
- 3
- Slab thickness
- 0.1
- Area
- 12
- Volume
- 1.2
- Bag volume
- 0.015
- Bags exact
- 80
Ordering the right amount of ready-mix or bagged concrete for a patio, shed pad, or garage floor starts with a reliable volume, not a rough guess from a sketch. This concrete slab calculator multiplies slab length by width by thickness to produce the rectangular pour volume, then divides by the yield of one bag to estimate how many whole bags to buy. Use the result for bagged DIY pours, truck-order checks against a supplier cubic-yard quote, and room-by-room schedules where every pad has its own footprint and depth.
How slab volume and bag count are computed
Start from the rectangular prism identity used on every retail concrete slab estimator: volume equals length times width times thickness, with all three edges in the same linear unit so the product is a consistent cubic unit. Write volume equals L times W times T. If you measured a ten-centimetre pad, enter thickness as zero point one metres when length and width are in metres; if you measured four inches, convert to feet before multiplying when the other edges are in feet.
The plan area is length times width and is returned as area so you can cross-check against a floor plan.
What you can do with it
DIY patio or shed pad shopping list
Measure length, width, and thickness, enter your bag yield if it differs from the default, and buy whole bags without shortfall or bulk overstock.
Contractor multi-pad estimates
Feed each pad’s dimensions into the same formula so purchase orders match the estimate and every ceil step is auditable.
Ready-mix quote cross-check
Compute slab volume from the plan first, then compare bags or convert volume to the unit your ready-mix supplier quotes.
FAQ
What happens if a dimension is zero or negative?
Length, width, and thickness must all be strictly positive; a non-positive edge would make volume non-physical or zero.
What does it cost?
The browser tool is free and runs locally.
Does the slab calculator add a waste allowance?
No, it gives the bare slab volume. The bag count is rounded up to whole bags, and the spare volume shows how much extra that rounding buys you; add your own margin on top if your site needs it.
My slab is 4 inches thick and the other sizes are in feet. What do I type?
Type about 0.333, since 4 inches is a third of a foot. In metric, a 10 cm pad goes in as 0.1 when length and width are in metres. All three edges have to share one unit.
Can I check a ready-mix quote with this?
Yes. Work out the slab volume from your plan first, then convert it to the unit your supplier quotes, usually cubic yards, and compare. That way bags and a truck are judged on the same volume.
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/concrete-slab \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"length":4,"width":3,"thickness":0.1}'const res = await fetch("https://api.kit.forhosting.com/home/concrete-slab", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"length": 4,
"width": 3,
"thickness": 0.1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/concrete-slab",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"length": 4,
"width": 3,
"thickness": 0.1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/concrete-slab", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"length":4,"width":3,"thickness":0.1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"length":4,"width":3,"thickness":0.1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/concrete-slab", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"length": 4,
"width": 3,
"thickness": 0.1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.concrete_slab",
"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
You keep one unit system end to end—metres with cubic metres, or feet with cubic feet—and optionally override bag_volume when your supplier lists a different coverage than the default. The same pure function powers the free browser tool and the paid API, so a phone quote matches the line item a script posts later. Zero or negative length, width, or thickness is rejected with a clear invalid_input message instead of a silent nonsense volume.
How slab volume and bag count are computed
Bag estimate divides that volume by bag_volume, the cubic yield printed or implied on the product (for example about zero point zero one five cubic metres for a typical twenty-five kilogram bag, or about zero point six cubic feet for a common eighty-pound bag). bags_exact is the real quotient; bags is the ceiling of that quotient because shops sell whole bags, not fractional sacks. spare_volume is how much extra yield the rounded bag count covers beyond the bare slab volume, which is useful when you want a small overage buffer without inventing a separate waste percent field. When bag_volume is omitted the calculator uses the documented default of zero point zero one five cubic units and sets bag_volume_defaulted to true so API clients can see that the bag size was assumed. The pipeline is deterministic floating-point arithmetic with no random seeds, no wall-clock timestamps, and no network calls, so identical inputs always produce identical JSON. Length, width, and thickness must all be strictly positive: zero or negative dimensions are rejected with invalid_input because a non-positive edge makes volume non-physical or zero. bag_volume, when provided, must also be strictly positive so the ratio is defined.
What you send and what you get back
Send three required finite numbers: length, width, and thickness for the rectangular slab edges in matching linear units. Optionally send bag_volume as the cubic yield of one bag in matching cubic units; if you omit it the default zero point zero one five applies. Missing required fields, non-numeric strings, NaN, and Infinity fail with invalid_input and are not charged. When any of length, width, or thickness is zero or negative the request fails with a message that the dimension must be positive, so clients can correct the measurement before retrying instead of receiving a zero or negative volume. On success the response echoes cleaned inputs, plan area, volume, the bag_volume used and whether it was defaulted, bags_exact, integer bags, spare_volume, a unit_note reminder to keep one unit system, and a short formula string for documentation. Classic checks include a four by three by zero point one metre pad with the default bag volume: volume is one point two cubic metres, bags_exact is eighty, and bags is eighty. Another useful check is a twelve by ten by zero point three three three foot slab with bag_volume zero point six: volume is about thirty-nine point nine six cubic feet and bags ceilings to the next whole sack. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where concrete slab calculators show up in real work
Homeowners pouring a patio, walkway, or equipment pad need a trustworthy bag count before a hardware-store run, especially when large bags are heavy and hard to return once opened. Ready-mix customers often convert a bagged estimate into cubic yards or cubic metres to compare against a truck quote, and having volume explicit next to bags makes that conversion a transparent second step rather than a black-box guess. If you later need circular pads, stepped footings with different depths, rebar spacing grids, or mix design by compressive strength, treat those as separate search intents and landings rather than overloading this rectangular concrete slab volume and bag calculator page. Landscape and hardscape crews build pad schedules from measured footprints and design thicknesses; a single deterministic endpoint that ceilings bags reduces spreadsheet drift between the estimator and the purchasing clerk. Property managers planning multiple shed bases or HVAC pads feed each length-width-thickness triple through the API and attach bags to purchase orders so overstock stays intentional. Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Technical questions
How does this concrete slab calculator work?
It multiplies length × width × thickness for volume, divides by bag_volume for an exact bag count, then ceilings to whole bags. Optional bag_volume defaults to 0.015 cubic units.
Which units should I use?
Any consistent set: metres with bag_volume in m³, or feet with bag_volume in ft³. Do not mix systems. The response includes a unit_note; it does not convert units for you.
What is the default bag volume?
0.015 cubic units when bag_volume is omitted—roughly a typical 25 kg bag in m³. Override bag_volume for 40/60/80 lb bags or supplier-specific yields (e.g. 0.6 ft³ for an 80 lb bag).