Frustum cone area
With radii of 3 and 4 and a slant height of 5, a truncated cone has a side area of 109.9557428756 and a total surface of 188.4955592154. Enter the two radii and the length you measure along the sloped side. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Radius1
- 3
- Radius2
- 4
- Slant height
- 5
- Lateral area
- 109.9557428756
- Surface area
- 188.4955592154
You supply the two base radii and the slant height measured along the side surface, and you get back the lateral area plus both circular bases in a single deterministic call. It is the calculation behind sheet-metal cones, lamp shades, buckets, silo roofs, and cake tiers, done exactly, in one request, with no spreadsheet and no trigonometry on your side.
The formula, computed exactly
A conical frustum unrolls into a flat annular sector whose area is pi times the sum of the radii times the slant height: A_lat = pi·(R + r)·L. The two circular bases contribute pi·(R² + r²), and the total surface area is simply their sum. The implementation evaluates these expressions in double-precision floating point, rejects any negative radius — a negative radius is a data error, not a shape — and rounds the result to ten decimals so the same input always produces byte-identical output on any machine.
Zero radii are legitimate: one zero radius describes a full cone, and equal radii describe the side of a cylinder. Everything is deterministic; there is no randomness, no clock, and no external service in the path. Edge cases are handled deliberately: a slant height of zero collapses the lateral band and returns only the two base areas, and equal radii reduce the formula to the familiar cylinder side area of 2·pi·R·L plus the two caps.
Where it fits in real workflows
Cost estimation is the obvious one: multiply the returned area by your material price per square unit and you have a defensible quote for metal, fabric, paint, or insulation in seconds. It is equally useful in validation pipelines — checking that a CAD export's stated area matches the dimensions before an order is released — and in education, where a student can verify hand work against an exact answer.
Teams in HVAC, agriculture, and food equipment manufacturing wire it directly into their quoting tools, so a salesperson gets the same number an engineer would compute by hand — instantly, and with an audit trail of exact inputs.
What you can do with it
Quote sheet-metal reducers
Feed the two diameters and slant length of a duct reducer and multiply the lateral area by your steel price per square metre for an instant material quote.
Estimate fabric for lamp shades
A tapered shade is a frustum; the lateral area tells you exactly how much fabric or parchment to order, including both rims' worth of waste allowance.
Verify CAD surface data
Cross-check the area reported by a CAD export against the analytic answer before releasing a part to manufacturing, catching unit mistakes early.
FAQ
What inputs does it need?
The two base radii and the slant height of the frustum, as numbers. Numeric strings are accepted too.
What if I only know the perpendicular height?
Convert it first with L = sqrt(h^2 + (R − r)^2), or use a frustum solver that accepts perpendicular height directly.
Which inputs are rejected?
Zero radii are allowed — a zero radius is a full cone.
What is the formula for the surface area of a frustum?
The side is π × (R + r) × L, where R and r are the two radii and L is the slant height. Add the two circular ends, π × (R² + r²), and you have the total surface area.
How do I estimate material for a lamp shade or a duct reducer?
Use the side area on its own, because those parts are open at both ends. Multiply it by what your sheet or fabric costs per square unit; the total area is for a closed solid with both ends covered.
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/math/frustum-cone-area \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"radius1":3,"radius2":4,"slant_height":5}'const res = await fetch("https://api.kit.forhosting.com/math/frustum-cone-area", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"radius1": 3,
"radius2": 4,
"slant_height": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/frustum-cone-area",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"radius1": 3,
"radius2": 4,
"slant_height": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/frustum-cone-area", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"radius1":3,"radius2":4,"slant_height":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"radius1":3,"radius2":4,"slant_height":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/frustum-cone-area", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"radius1": 3,
"radius2": 4,
"slant_height": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.frustum_cone_area",
"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 frustum cone area API computes the total surface area of a truncated cone — the shape you get when the tip of a cone is sliced off by a plane parallel to its base.
Why slant height is the input that matters
Most geometry textbooks define a frustum by its perpendicular height, but almost nobody who actually builds one measures that. A fabricator cutting a reducer from flat sheet, an upholsterer covering a lamp shade, or a roofer flashing a vent pipe works from the slant height: the distance along the sloped side between the two rims. This endpoint takes the slant height directly, so there is no Pythagorean conversion step, no rounding error introduced before the real calculation, and no chance of confusing h with L. You send radius1, radius2, and slant_height as plain numbers, and you receive the total surface area with the lateral component broken out separately, so you can quote material for the side alone or for the complete closed solid. Because the shape is fully described by three lengths, the call is idempotent and cache-friendly: identical dimensions always yield identical areas, which makes it safe to embed in pricing engines, configurators, and batch jobs that run thousands of parts overnight without drifting results.
Technical questions
What does it cost?
$0.002 per request. It is also free to run in your browser on this page.
Is the lateral area returned separately?
Yes. The response includes lateral_area (the side surface) and surface_area (side plus both circular bases), so you can price the part open or closed.
Is anything stored after the call?
No. The numbers are computed in memory and discarded; only the result object is returned.