Potting soil calculator
Buy the right bag of potting mix: a round pot 20 cm across and 18 cm deep holds a little over five and a half litres. Window boxes and tapered flower pots work too, for one pot or many. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Shape
- Cylinder cm
- Diameter
- 20
- Height
- 18
- Quantity
- 1 cm
- Volume m3
- 0.0056548668
- Volume l
- 5.6548667765
- Volume ft3
- 0.1996997356
Buying potting mix by guesswork is how a balcony ends up with an extra unopened bag or a last pot sitting on bare plastic. This potting soil calculator turns the inside shape and dimensions of a container into the soil volume you actually need, reported in liters and in cubic feet, so a nursery quote, a classroom worksheet, and a row of identical planters all share one number. Choose a cylinder for a round pot of constant diameter, a rectangle for a window box or square planter, or a tapered frustum for the everyday flower pot that is wider at the rim than at the base.
How cylinder, box, and tapered pots become liters and cubic feet
Potting soil volume is the inside geometric volume of the container you are about to fill, not the area of a garden bed and not the dry bulk of a mulch layer. Three everyday shapes cover almost every nursery pot. A cylinder — a round pot whose rim and base share one diameter — uses the right-circular identity volume equals pi times radius squared times height, with radius equal to half the inside diameter.
A rectangular planter or window box uses length times width times inside height; a square pot is the same formula with equal sides. A tapered flower pot is a truncated cone: volume equals pi times height over three, times the sum of the square of the top radius, the product of the two radii, and the square of the bottom radius. That frustum identity collapses to the cylinder when the rim and base match, which is a useful check on a worksheet.
All three lengths of a given call share one unit — centimetres by default, or millimetres, metres, inches, or feet — and are converted to metres with exact SI factors before the product is taken. One cubic metre is one thousand liters. Cubic feet follow from dividing cubic metres by the cube of the international foot, 0.3048 metres.
Optional count multiplies the single-container volume when you are filling a run of identical pots. The result is a struck, brim-level fill: it does not subtract a root ball, a drainage layer of gravel, or a freeboard below the rim. Those are planting choices, not geometry.
A dimension that is missing for the chosen shape, zero, negative, or not a finite number is rejected, because a pot cannot have a non-positive diameter or height.
Where a potting soil calculator earns its keep
Home gardeners look up a potting soil calculator because they are filling containers, not spreading a layer over a lawn. A topsoil page answers cubic yards from area times depth. A mulch page answers bags for a bed.
A water-tank page answers litres of liquid in a cistern. This page answers how much potting mix a pot, a window box, or a run of hanging baskets will take, in the two retail units bagged mix is sold in: liters and cubic feet. Nursery counters use it so a quote names both the container count and the mix volume instead of a private spreadsheet that rounds pi differently on each laptop.
Classroom horticulture labs use it so students can check the cylinder and frustum identities against a labelled pot without flipping a rounding error by hand. Balcony and indoor-plant shops batch many identical terracotta cylinders before a delivery, multiplying one pot by count rather than re-measuring each. Landscape designers specifying patio planters need a contract they can pin in tests: the same twenty-centimetre by eighteen-centimetre cylinder always returns the same litres.
This is not a soil-weight converter and it is not a compost-tea recipe; density and moisture vary by mix, so mass is out of scope. Keep every dimension as an inside measurement — wall thickness is not soil — and measure height to the intended fill line, not to a decorative rim above the soil. For an odd urn or a bowl, pick the closest of the three shapes or split the vessel into a cylinder plus a frustum and add the two calls.
What you can do with it
Nursery and garden-centre quotes
Turn a pot's inside shape and tape measurements into liters or cubic feet of mix so a quote names both the container count and the bagged soil to send with it.
Balcony and indoor-plant batch fills
Multiply one measured cylinder, box, or tapered pot by count to size a single purchase for a run of identical planters before a delivery or a classroom lab.
FAQ
Which pot shapes does the potting soil calculator support?
Three: cylinder (round pot of constant diameter), rectangular (window box or square planter), and tapered (truncated cone, the usual flower pot that is wider at the rim than at the base). Square pots are rectangular with equal sides.
What happens if a dimension is zero or negative?
Every linear dimension must be a positive finite number; a pot cannot have a zero or negative diameter, side, or height, and that path is not billed.
How is this different from a topsoil or mulch calculator?
Topsoil and mulch compute a layer over an area (cubic yards from coverage times depth). This tool fills a container from its shape and inside dimensions, and reports the two units bagged potting mix is sold in: liters and cubic feet.
Does the volume leave room for the root ball or drainage gravel?
No. The result is a level fill up to the rim of an empty container. Subtract the root ball, any gravel layer and the gap you like to leave below the rim yourself, since those are planting choices, not geometry.
How do I measure a tapered flower pot?
Measure the inside diameter at the rim, the inside diameter at the base and the inside soil depth, all in the same unit. The pot is treated as a truncated cone, which matches the usual shape that widens toward the top.
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/bio/potting-soil-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"shape":"cylinder","height":18,"diameter":20}'const res = await fetch("https://api.kit.forhosting.com/bio/potting-soil-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"shape": "cylinder",
"height": 18,
"diameter": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/potting-soil-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"shape": "cylinder",
"height": 18,
"diameter": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/potting-soil-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"shape":"cylinder","height":18,"diameter":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"shape":"cylinder","height":18,"diameter":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/potting-soil-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"shape": "cylinder",
"height": 18,
"diameter": 20
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.potting_soil_calculator",
"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.
Limits
max_dim | 1000000000000 |
min_dim | 1e-15 |
max_count | 1000000 |
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
Every linear dimension must be a positive finite number; zero, negative, and non-numeric sizes fail with invalid_input instead of inventing a volume.
Input contract, units, and what invalid_input means
A cylinder also needs a positive diameter. A rectangular planter needs positive length and width. Optional unit defaults to centimetres, the unit most nursery labels use; send mm, m, in, or ft when the tape is marked that way. Dimensions must stay inside the analytic bounds of 1e-15 to 1e12 so a typo cannot explode the isolate. POST a JSON body with a required shape — cylinder, rectangular, or tapered — and a required positive height, which is the inside soil depth of the container. A tapered pot needs positive top_diameter at the rim and positive bottom_diameter at the base. Optional count defaults to one and must be a positive integer when present; the returned volume_l and volume_ft3 are totals across that many identical containers. Each linear field may arrive as a JSON number or as a numeric string; empty strings, missing keys required by the shape, non-finite values, zero, and negative values fail with invalid_input naming the field and are not billed. Aliases exist so a script can send d or diam for diameter, L and W for the box sides, top and bottom for the frustum, and pots or n for count. When count is greater than one, volume_per_container_l and volume_per_container_ft3 are included so a packing list can show both the bag total and the fill of a single pot. Pair volume_l with a twenty-liter bag or volume_ft3 with a one-and-a-half-cubic-foot bag to turn the geometric result into a shopping count.
Where a potting soil calculator earns its keep
Invalid dimensions do not consume balance; pin volume_l and volume_ft3 in tests and you get the same fill in a lecture notebook, an LMS plugin, and a purchasing spreadsheet.
Integration use cases
Horticulture worksheets
Let students submit diameter and height, or rim, base and height, and verify volume_l and volume_ft3 against the cylinder and truncated-cone identities.
Technical questions
How do I calculate how much potting soil a container needs?
Choose the inside shape, send the matching positive dimensions and an optional unit (default cm), and read volume_l and volume_ft3. A cylinder uses diameter and height; a rectangular planter uses length, width, and height; a tapered flower pot uses top_diameter, bottom_diameter, and height.
What does the potting soil calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.