Body surface area calculator
Multiply height in cm by weight in kg, divide by 3600 and take the square root: for 170 cm and 70 kg the product is 11900. That is Mosteller body surface area, shown step by step. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Height
- 170
- Weight
- 70
- Height unit: cm
- cm
- Weight unit: kg
- kg
- Height (cm)
- 170 m2
- Weight (kg)
- 70
- Bsa
- 1.8181186858
- Bsa m2
- 1.8181186858
A body surface area calculator turns standing height and body weight into the square-metre estimate clinicians use for dosing, burn assessment, and physiological scaling. Enter height and weight (centimetres and kilograms by default, or metres, inches, and pounds with unit labels); the tool converts inputs when needed, applies the Mosteller formula BSA equals the square root of height in centimetres times weight in kilograms divided by thirty-six hundred, and returns BSA in m² with normalized centimetres and kilograms, the formula name, and ordered substitution steps. Homework checks, pharmacy teaching examples, clinical education, and coding kata expected values all need that same deterministic geometric estimate without a spreadsheet.
What Mosteller body surface area means
Body surface area is a geometric estimate of the outer surface of the human body expressed in square metres. The Mosteller formula, published as a simplified square-root expression, is BSA in m² equals the square root of the product of height in centimetres and weight in kilograms divided by three thousand six hundred. Equivalently, many bedside cards write BSA equals the square root of height times weight over sixty after converting units the same way.
That single real number is widely used as a scaling factor for chemotherapy dose calculations, paediatric drug regimens, cardiac index denominators, and burn-area percentages when absolute body size matters more than body-mass index alone. Unlike BMI, which is mass over height squared and reports density-like risk bands, BSA grows with both height and weight under a geometric mean and is reported in square metres rather than kg per m².
Teachers and automated graders care about the non-positive rejection as much as the successful numeric path: a student who enters zero kilograms has left the domain of the formula, and a silent fallback to a default adult would hide that mistake. The check path recomputes the product and square root with the same fixed rounding used for published fields, so a successful response always ships with steps you can assert in tests or worksheets.
Classic reference values include about one point eight one eight m² for one hundred seventy centimetres and seventy kilograms, which matches hand calculators when intermediate values are kept at double precision before display rounding.
What you can do with it
Pharmacy and nursing education
Students enter height and weight from case vignettes and compare hand-written Mosteller BSA against a deterministic m² result before dose-scaling exercises.
Pre-flight before mg/m² workflows
Pipelines compute BSA first, then branch to drug-specific dosing only when height and weight pass positive validation and the published formula name is Mosteller.
FAQ
What is the Mosteller body surface area formula?
Height and weight must be positive; the result is reported in square metres.
Which units are accepted?
Height defaults to centimetres (also m or in). Weight defaults to kilograms (also lb). Values are converted to cm and kg before the formula.
Is this the same as Du Bois BSA?
No. This capability implements only the Mosteller square-root formula. Du Bois and other formulae use different expressions and coefficients.
Is the body surface area calculator free?
The browser tool is free and runs locally.
What is body surface area used for?
It is a scaling factor for chemotherapy doses, paediatric drug regimens, cardiac index and burn-area percentages, wherever absolute body size matters more than body-mass index alone.
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/health/bsa-mosteller \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"height":170,"weight":70}'const res = await fetch("https://api.kit.forhosting.com/health/bsa-mosteller", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"height": 170,
"weight": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/bsa-mosteller",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"height": 170,
"weight": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/bsa-mosteller", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"height":170,"weight":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"height":170,"weight":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/bsa-mosteller", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"height": 170,
"weight": 70
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.bsa_mosteller",
"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_height_cm | 300 |
max_weight_kg | 500 |
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 height or weight is rejected with invalid_input so zeroed forms never invent a surface area.
How to call the API and what comes back
Send a JSON body with two required finite positive numbers: height (aliases height_cm, h, stature, ht) and weight (aliases weight_kg, w, mass, wt). Optional height_unit defaults to cm and accepts cm, m, or in; optional weight_unit defaults to kg and accepts kg or lb. After conversion, height must stay within three hundred centimetres and weight within five hundred kilograms so intermediate products remain finite on the Worker and in the browser. On success the response echoes rounded height and weight as submitted, height_unit and weight_unit as normalized labels, height_cm and weight_kg after conversion, bsa and bsa_m2 as the same rounded square-metre value, unit as the string m2, formula as the Mosteller expression string, formula_name as Mosteller, message as a short English summary, and steps as an ordered array of substitution lines. Failed validation—missing fields, non-finite numbers, non-positive height or weight, unsupported unit labels, or values outside absolute limits after conversion—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 anthropometrics inside the published absolute range after conversion so the product under the square root cannot overflow into a non-finite BSA that the solver must reject. Prefer sending numbers rather than pre-formatted strings when you control the client; string numbers are accepted only when they match a strict finite numeric pattern. Prefer this capability when you already have height and weight and only need the Mosteller estimate; if your source is a word problem, extract the two anthropometrics and their units first. When teaching, pair examples: one hundred seventy centimetres and seventy kilograms yields approximately one point eight one eight m²; one hundred sixty centimetres and fifty-five kilograms yields a smaller adult value; deliberate zero weight or negative height demonstrates the hard invalid_input path; and a five-foot-seven adult entered as sixty-seven inches with one hundred fifty-four pounds shows unit conversion into the same centimetre-kilogram pipeline. This landing targets people searching for a body surface area calculator, Mosteller formula, or BSA from height and weight online; it is not a Du Bois or Haycock calculator, not a BMI tool, and not a clinical dosing system that applies mg per m² to a drug. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately set weight to zero. Round-trip checks are easy: recompute the square root of height_cm times weight_kg over thirty-six hundred by hand and confirm it equals the published bsa within the same twelve-decimal rounding, and confirm that changing only the sign of an input flips the response from success to invalid_input.
Integration use cases
Unit tests for clinical calculators
Generate known-good adult and paediatric BSA fixtures plus deliberate zero/negative rejections for coding kata expected values.
Technical questions
What happens if height or weight is zero or negative?
The geometric model is undefined. This tool returns invalid_input instead of inventing a surface area.