Water tank volume calculator
A 2 by 1 by 1.5 meter tank filled to 0.75 meters holds 1500 of its 3000 liters. Pick a box, upright cylinder or horizontal cylinder, enter inside dimensions and the water level, and see capacity and current volume in liters and US gallons. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Tank geometry: rectangular
- Rectangular m
- Tank length
- 2
- Width
- 1
- Height
- 1.5
- Fill depth
- 0.75
- Capacity m3
- 3 m
- Capacity liters
- 3,000
- Capacity gallons
- 792.5161570744
- Filled m3
- 1.5
A water tank volume calculator turns the geometry of a home, garden, or farm storage tank into usable capacity in liters and US gallons, plus the liquid volume sitting at any measured fill depth. Choose rectangular, vertical cylindrical, or horizontal cylindrical shape; enter the matching positive dimensions in metres, centimetres, millimetres, inches, or feet; and supply a non-negative water level from the bottom. The tool converts everything to cubic metres with fixed closed-form formulas, then scales to litres and US liquid gallons so you can size rainwater barrels, verify supplier nameplates, or convert a dipstick reading into remaining capacity.
Formulas for rectangular and cylindrical water tanks
Three shell geometries cover most domestic and light agricultural water tanks. A rectangular (box) tank has capacity equal to length times width times height when all three dimensions use the same length unit; the liquid volume at fill depth h is length times width times h, provided h does not exceed the tank height.
A vertical cylindrical tank—common for above-ground plastic garden tanks and many steel drums standing upright—has capacity π r squared times height, and filled volume π r squared times h, again with h at most the shell height.
A horizontal cylindrical tank, such as a buried cistern or a long farm bullet lying on its side, has the same total capacity π r squared times axial length, but the free surface is a chord of the circular cross-section, so filled volume is length times the classic circular segment area: r squared times arccos of ((r minus h) over r) minus (r minus h) times the square root of (two r h minus h squared).
At h equals zero the tank is empty; at h equals r a horizontal cylinder is half full; at h equals the diameter the shell is full. All dimensions are first converted to metres using the selected unit (one metre, one hundredth of a metre for centimetres, one thousandth for millimetres, zero point zero two five four metres per inch, or zero point three zero four eight metres per foot).
Cubic metres then scale by one thousand to litres and by division by three point seven eight five four one one seven eight four to US liquid gallons. The calculator does not model dished heads, conical bottoms, elliptical ends, or freeboard; those features need extra segment formulas outside this contract. Keep every linear field in one unit system so the cubic product remains physically meaningful before the litre and gallon conversion.
Practical tips, limits, and related searches
Measure internal dimensions when possible; external wall thickness inflates capacity if you feed nameplate outer sizes without correction. For vertical tanks keep fill depth at or below height; for horizontal cylinders keep fill depth at or below the diameter. Zero fill depth is valid and yields zero filled volume with full empty capacity, which is useful for empty-tank inventory scripts.
Prefer metres for engineering take-offs and centimetres or inches when reading a household dipstick; convert mixed unit notes before you call rather than mixing feet of length with inches of depth in one request. When teaching or writing tests, pair a simple rectangular tank at half height with a vertical cylinder full fill and a horizontal cylinder at half diameter so students see linear versus segment volume.
This landing targets people searching for a water tank volume calculator, rainwater tank capacity in liters and gallons, or garden tank fill-depth volume online; it is not an industrial fuel-bullet only tool without litre conversion, not a concrete footing volume estimator, and not a unit converter that ignores tank shape.
Prefer this capability when you already know the shell geometry and a water level and need capacity plus filled volume in consumer liquid units; if your source is an irregular bladder or a tank with conical base, decompose or measure calibrated volume separately. Round-trip checks are easy: a full rectangular or vertical fill should match capacity within floating tolerance, empty fill should yield zero filled liters, and a horizontal half-diameter fill should yield half of total capacity.
What you can do with it
Rainwater and garden tank sizing
Homeowners enter rectangular or vertical tank dimensions and a current water line to get capacity and filled volume in liters and US gallons before ordering or irrigating.
Farm cistern dipstick to inventory
Operators convert a measured fill depth in a horizontal or vertical cylindrical cistern into remaining liters and gallons for stock and delivery planning.
FAQ
What tank shapes does the water tank volume calculator support?
Provide the positive dimensions each shape requires plus a non-negative fill depth.
Are results in liters and US gallons?
Yes. After computing cubic metres from the chosen length unit, capacity and filled volume are returned in m³, liters (×1000), and US liquid gallons (÷3.785411784).
What happens if a dimension is zero or negative?
Length, width, height, diameter, and radius must all be strictly positive when required for the shape.
Can fill depth be zero?
Yes. Zero fill depth means an empty tank: filled volume is zero and empty volume equals full capacity. Negative fill depth is rejected.
Is the water tank volume calculator free?
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/home/water-tank-volume \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"shape":"rectangular","fill_depth":0.75}'const res = await fetch("https://api.kit.forhosting.com/home/water-tank-volume", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"shape": "rectangular",
"fill_depth": 0.75
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/water-tank-volume",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"shape": "rectangular",
"fill_depth": 0.75
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/water-tank-volume", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"shape":"rectangular","fill_depth":0.75}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"shape":"rectangular","fill_depth":0.75}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/water-tank-volume", 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": "rectangular",
"fill_depth": 0.75
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.water_tank_volume",
"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 |
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
Non-positive lengths, widths, heights, diameters, or radii are rejected with invalid_input instead of inventing a tank from impossible sizes.
How to call the API and what comes back
Rectangular tanks require positive length, width, and height. Vertical cylindrical tanks require positive height and either diameter or radius. Horizontal cylindrical tanks require positive length and either diameter or radius. If both diameter and radius are sent they must agree within a tight relative tolerance. Send a JSON body with required shape and fill_depth, plus the dimensions your geometry needs. Field shape is rectangular, cylindrical (vertical upright), or horizontal_cylindrical; aliases such as box, vertical, round, and horizontal are accepted. Field fill_depth is the non-negative liquid height from the bottom; aliases depth, fill, h, liquid_height, and water_level map to the same meaning. Optional unit is m, cm, mm, in, or ft and defaults to metres; aliases units, length_unit, and dim_unit are accepted. On success the response echoes shape, unit, fill_depth, and the dimensions used; returns capacity_m3, capacity_liters, and capacity_gallons for full shell capacity; returns filled_m3, filled_liters, and filled_gallons for the current water level; includes empty volumes in the same three units, fill_fraction and fill_percent, method, formula, message, and ordered steps. Failed validation—missing a required field for the chosen shape, a non-finite number, a non-positive dimension, a negative fill depth, fill depth above the physical max for that shell, a bad shape or unit string, or disagreeing diameter and radius—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and related searches
Keep dimensions inside the published positive range up to one trillion so intermediate products stay finite in IEEE double precision on the Worker and in the browser. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when operators type impossible gauge readings while learning the contract.
Integration use cases
Fixtures for home-calc apps and homework
Developers and teachers generate known-good capacity and partial-fill cases plus deliberate non-positive dimension rejections for unit tests and worksheets.