Grain bin calculator
Turn bin diameter and grain depth into storage capacity: an 18 ft bin filled to 16 ft is a cylinder with a 9 ft radius, and its cubic feet become bushels at 1.244456 bushels per cubic foot. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Diameter
- 18
- Height
- 16
- Radius
- 9
- Volume ft3
- 4,071.5040790524
- Bushels
- 3,271.7139203516
A cylindrical grain bin is the everyday storage tank on a farm: a round steel wall on a concrete pad, filled to the eave or to a measured grain height. Capacity is not a mystery of the crop. It is the volume of that cylinder, first in cubic feet and then in Winchester dry bushels, the unit United States elevators and USDA reports still use. This grain bin calculator takes the inside diameter and the grain height, both in feet, applies the closed cylinder identity that volume equals pi times radius squared times height, and converts cubic feet to bushels with the exact 2150.42-cubic-inch dry bushel.
What a cylindrical grain bin holds and how cubic feet become bushels
The struck capacity of an upright cylindrical grain bin is the volume of a right circular cylinder whose diameter is the inside bin diameter and whose height is the depth of grain, not the steel wall if the bin is only partly filled. The geometric identity is the same one used in every shop class: volume in cubic feet equals pi times the square of the radius times the height, or equivalently pi times diameter squared times height over four. Radius is half the diameter.
All three lengths must share one unit; this calculator requires feet, because United States farm bins, extension worksheets, and most published bin charts are dimensioned in feet. Once the volume is in cubic feet it is converted to dry bushels with the Winchester bushel of 2150.42 cubic inches. One cubic foot is 1728 cubic inches, so bushels equal cubic feet times 1728 divided by 2150.42, which is about 0.803564 bushels per cubic foot.
The inverse, about 1.244456 cubic feet per bushel, is the figure many printed tables invert by hand. The result is a struck, level-full cylinder: it does not add the cone of a hopper bottom, the peak of a grain pile against a roof, or a packing factor for test weight. Those extras belong to a different worksheet.
A dimension that is missing, zero, negative, or not a finite number is rejected, because a bin cannot have a non-positive diameter or height. The identity is deterministic: the same eighteen-foot diameter and sixteen-foot grain height always produce the same cubic feet and the same bushels.
Where a grain bin calculator earns its keep
Farmers, elevator operators, and extension educators look up a grain bin calculator because they need bushels, not a generic tank volume in litres. A water-tank page answers a different search: how many gallons a rain barrel or cistern holds. A concrete-column page answers cubic yards of mix.
A grain-bin page answers how many bushels of corn, wheat, or soybeans a standing steel cylinder will store. Harvest crews use it to decide whether the next wagon still fits before they open another bin. Landlords and tenants use it when a lease prices storage by the bushel.
Teachers use it so students can check the cylinder formula against a published bin chart without flipping a rounding error by hand. Automation scripts that plan trucking or that fill a scale ticket need a deterministic oracle, not a screenshot of a paper chart. This page is not a grain-weight converter: that search converts the avoirdupois grain to grams.
It is not a grass-seed calculator and it is not a humidity-ratio converter that happens to mention grains per pound. Invalid dimensions do not consume balance.
What you can do with it
Harvest overflow check
Enter the inside diameter and current grain height of a standing steel bin to see whether the next wagon still fits before you open another bin.
Lease and storage tickets
Convert a leased cylinder into struck cubic feet and Winchester bushels when a farm lease or elevator ticket prices storage by the bushel.
FAQ
How do I calculate grain bin capacity from diameter and height?
Send two positive finite numbers in feet: diameter (inside) and height (grain depth, or eave height when the bin is full).
Which bushel does the grain bin calculator use?
The US Winchester dry bushel of 2150.42 cubic inches (about 1.244456 cubic feet), the standard USDA and NIST dry bushel. It is not the rounded 1.25 ft³ card some printed charts use.
Are diameter and height in feet?
Yes. Both fields are inside dimensions in feet, matching United States farm bin charts. Convert metres or inches to feet before you call; mixed units are not inferred.
Does this include a hopper bottom, roof peak, or packing factor?
No. The result is the struck volume of an upright circular cylinder. Hopper cones, peaked piles, test-weight packing, and moisture shrink belong to a different worksheet.
How many cubic feet are in a bushel of grain?
One Winchester dry bushel is 2150.42 cubic inches, about 0.803564 cubic feet, so each cubic foot of bin holds about 1.244456 bushels. That is the bushel United States elevators and USDA reports use.
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/grain-bin \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"diameter":18,"height":16}'const res = await fetch("https://api.kit.forhosting.com/bio/grain-bin", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"diameter": 18,
"height": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/grain-bin",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"diameter": 18,
"height": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/grain-bin", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"diameter":18,"height":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"diameter":18,"height":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/grain-bin", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"diameter": 18,
"height": 16
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.grain_bin",
"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
Zero, negative, or non-numeric dimensions fail with invalid_input instead of inventing a volume.
Input contract, response shape, and error behaviour
Dimensions must stay inside the declared ceilings so a typo cannot explode the isolate. Example: diameter 18 and height 16 yields radius 9, volume equal to 1296 times pi cubic feet, and that volume times 1728 over 2150.42 bushels. Failed validation is not billed. Keep both dimensions in feet; sending metres or inches without converting them first would silently understate or overstate capacity, which is worse than a clear error. The same two-field contract is what the free browser form posts, so a check you type by hand matches an automation call on the same numbers. POST a JSON body with two required positive finite numbers: diameter, the inside diameter of the cylinder in feet, and height, the grain height or eave height in feet when the bin is filled to the eave. Each field may arrive as a JSON number or as a numeric string; empty strings, missing keys, non-finite values, zero, and negative values fail with invalid_input naming the field. Aliases diameter accepts include d, diam, and bin_diameter; height accepts h, bin_height, and grain_height. The formula field restates the cylinder identity and the Winchester conversion; formula_applied substitutes the numeric values so a worksheet can print the arithmetic next to the answer. Pair the numbers with your own drawing if you need a sketch of the bin; this endpoint computes capacity only and does not emit roof geometry, hopper cones, or crop-specific packing.
Where a grain bin calculator earns its keep
Pin volume_ft3 and bushels in tests, keep diameter and height positive and in feet, and you get the same capacity for an eighteen-by-sixteen-foot bin in a lecture notebook, an LMS plugin, and a harvest spreadsheet.
Integration use cases
Classroom cylinder check
Let students submit diameter and height in feet and verify volume_ft3 and bushels against the textbook identity π(D/2)²H and 2150.42 cubic inches per bushel.
Technical questions
What does the grain bin calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.