Raised bed soil calculator
An 8 by 4 ft raised bed filled 1 ft deep takes 32 cubic feet of soil, about 0.906 cubic metres. Enter the inside length, width and fill height in feet, inches, metres or centimetres and get cubic yards and litres too. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Length
- 8
- Width
- 4
- Height
- 1
- Length ft
- 8 ft
- Width ft
- 4
- Height ft
- 1
- Length m
- 2.4384
Filling a new raised garden bed is the classic place where gardeners over-order bulk soil or run short halfway through a weekend build. This raised bed soil calculator multiplies the bed’s inner length, width and fill height after converting all three into consistent units, then reports the soil volume in cubic feet and cubic yards for US landscape quotes, cubic metres for metric plans, and litres for bag and mix recipes. Defaults match common framing sizes: dimensions in feet, so an eight by four by one foot bed becomes thirty-two cubic feet without forcing unit fields on every DIY request. Optional unit values cover inches, metres and centimetres when your plan or kit is already metric or measured with a tape in inches. Use the result for bagged bag counts after converting to bag yield, bulk cubic-yard truck orders, and multi-bed schedules where every frame has its own footprint and wall height.
How raised-bed soil volume is computed from length, width and height
Start from the rectangular prism identity used on every lumber kit and garden-centre raised bed estimator: soil volume equals the product of the three interior dimensions of the box you are filling. Write volume in cubic metres as length in metres times width in metres times height in metres, and write volume in cubic yards as volume in cubic feet divided by twenty-seven, where cubic feet is length in feet times width in feet times height in feet.
When you leave the optional unit field blank, the calculator assumes feet for all three sides—the combination printed on most US cedar and composite kit labels—so an eight foot by four foot bed one foot deep is thirty-two cubic feet and about one point one nine cubic yards. Explicit unit values are feet, inches, metres or centimetres; every side uses the same unit so a single tape reading stays consistent. The pipeline is deterministic floating-point arithmetic with no random seeds, no wall-clock timestamps, and no network calls.
Unknown unit strings are rejected the same way so clients cannot silently mix systems.
What you can do with it
New kit bed bulk soil order
Measure the kit’s interior length, width and wall height in feet or metres, then order cubic yards or cubic metres of screened soil mix without shortfall or excess truck fees.
Multi-bed community garden take-off
Run each frame’s L×W×H through the same formula so purchase orders match the estimate and unit conversions stay auditable across beds.
Bag and mix recipe planning
Convert raised-bed volume to litres, then divide by bag yield or mix component percentages for compost, topsoil and aeration amendments.
FAQ
What happens if length, width or height is zero or negative?
All three dimensions must be strictly positive; a non-positive value would make volume non-physical or zero.
Which units should I use?
Default: feet for length, width and height. Override with unit in, m or cm. The response includes intermediates in both feet and metres plus litres.
What does it cost?
The browser tool is free and runs locally.
Should I measure the inside or the outside of the bed frame?
Measure the inside. Soil only fills the space between the boards, so use the inner length and width, and for height use the level you plan to fill to or the wall height.
How do I turn cubic feet of soil into cubic yards?
Divide by 27, since one cubic yard holds 27 cubic feet. A bed of 32 cubic feet comes to about 1.19 cubic yards, the unit used in US landscape quotes and bulk truck orders.
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/raised-bed-soil \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"length":8,"width":4,"height":1}'const res = await fetch("https://api.kit.forhosting.com/home/raised-bed-soil", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"length": 8,
"width": 4,
"height": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/raised-bed-soil",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"length": 8,
"width": 4,
"height": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/raised-bed-soil", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"length":8,"width":4,"height":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"length":8,"width":4,"height":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/raised-bed-soil", 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": 8,
"width": 4,
"height": 1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.raised_bed_soil",
"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
The same pure function powers the free browser tool and the paid API, so a phone estimate matches the line item a script posts later. Zero or negative length, width or height is rejected with a clear invalid_input message instead of a silent nonsense volume.
How raised-bed soil volume is computed from length, width and height
Conversion uses fixed international-foot constants so identical inputs always produce identical JSON: zero point three zero four eight metres per foot, zero point zero two five four metres per inch, one centimetre equals zero point zero one metre, and one cubic yard equals twenty-seven cubic feet. Intermediate fields length_ft, width_ft, height_ft, length_m, width_m and height_m are returned so you can audit the unit path against a supplier quote. Length, width and height must all be strictly positive: zero or negative values are rejected with invalid_input because a non-positive side makes volume non-physical or zero.
What you send and what you get back
Send three required finite numbers: length and width for the plan footprint of the bed interior, and height for the intended soil fill level or wall height. Optionally send unit as ft, in, m or cm; omitted unit defaults to feet. Classic checks include eight by four by one foot: thirty-two cubic feet, about one point one nine cubic yards, and about zero point nine zero six cubic metres. Missing required fields, non-numeric strings, NaN and Infinity fail with invalid_input and are not charged. When length, width or height 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 and the resolved unit, each side in both feet and metres, volume_native as the product in the caller’s unit cubed, volume_ft3 for cubic feet, volume_yd3 for cubic yards, volume_m3 for cubic metres, volume_l for litres, a unit_note reminder of the defaults and formulas, and a short formula string for documentation. Another useful check is two metres by one metre by zero point three metres with metric unit: volume is zero point six cubic metres and six hundred litres. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where raised bed soil calculators show up in real work
Homeowners building a first vegetable bed from a kit or scrap lumber need a trustworthy cubic-yard figure before calling a landscape supplier, especially when bulk delivery has a minimum load and bags are expensive once opened. Landscape crews and garden centres embed a raised-bed volume helper next to bulk soil and compost SKUs so shoppers convert kit sizes into the unit the product is sold in. If you later need bag counts from a specific bag yield, waste percent as a separate field, circular beds, lawn topsoil area-and-depth coverage, or mulch-only depth tables, treat those as separate search intents and landings rather than overloading this raised bed length-width-height soil calculator page. Community garden coordinators and school garden projects size multiple frames of different lengths and wall heights; a single deterministic endpoint that reports cubic yards, cubic metres and litres reduces spreadsheet drift between the volunteer who measures and the person who orders. Property managers renovating courtyard planters feed each length-width-height triple through the API and attach volumes to purchase orders so overstock stays intentional rather than guessed. 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 raised bed soil calculator work?
It multiplies length × width × height after converting into consistent units, then reports cubic feet (volume_ft3), cubic yards (volume_yd3), cubic metres (volume_m3) and litres (volume_l). Default unit is feet.
How do I convert cubic yards to bags?
Divide volume_yd3 (or volume_l) by the bag yield printed on the product. This calculator returns bulk volume only; bag size is supplier-specific.