Total body water calculator
Estimate how much water your body holds with the Watson equations from 1980: a 30-year-old man at 180 cm and 80 kg carries 45.9282 litres, which is 57.41025% of his weight. You get both litres and percentage. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Age
- 30
- Sex
- Male
- Height
- 180
- Weight
- 80
- Tbw
- 45.9282 L
- Tbw l
- 45.9282
- Body water pct
- 57.41025
- Body water percentage
- 57.41025
Total body water is the estimated volume of water contained in the human body, a central quantity in physiology education, hydration teaching, and anthropometric modelling. The Watson formulas, published by Watson, Watson and Batt in nineteen eighty, remain widely cited sex-specific linear equations that map age, standing height in centimetres, and body weight in kilograms onto total body water in litres. For males the equation includes an age term; for females the classic form uses only height and weight. This calculator applies those closed-form equations exactly, returns both volume in litres and body water as a percentage of body weight, and rejects non-positive height or weight so invalid anthropometrics never produce a false hydration figure.
How the Watson total body water formula works
The Watson equations are empirical linear models fitted to measured total body water in adult subjects and published in nineteen eighty. They map positive anthropometric inputs onto an estimated water volume in litres, with separate coefficients for males and females. Algebraically the male formula is total body water equals two point four four seven minus zero point zero nine one five six times age in years plus zero point one zero seven four times height in centimetres plus zero point three three six two times weight in kilograms.
The female formula is total body water equals negative two point zero nine seven plus zero point one zero six nine times height in centimetres plus zero point two four six six times weight in kilograms; the classic female form does not include age. Body water percentage is then total body water divided by weight in kilograms times one hundred, so the same call returns both absolute litres and a relative fraction of body mass.
The constants are fixed historical coefficients; this capability does not re-fit them, blend bioelectrical impedance tables, or apply pediatric corrections at runtime. Height and weight must be finite and strictly greater than zero: a zero or negative measure cannot represent a living adult body in this model and fails with invalid input rather than inventing an absolute-value workaround. Age must also be a finite positive number for a uniform request contract, even though only the male equation multiplies it.
Always frame outputs as educational estimates from the published Watson model, not as a substitute for clinical measurement, deuterium dilution, or professional judgment.
Where total body water calculators show up in real work
Medical and nursing schools still teach Watson-style anthropometric estimates when introducing body composition and fluid compartments, so a single trusted oracle that returns the classic litre figure speeds grading and demo setup. Product teams building educational health calculators need a documented Watson step that clients can audit by hand rather than a black-box estimate that mixes impedance and multiple equations without disclosure. Research assistants preparing synthetic datasets for anthropometric simulations need deterministic total body water labels from age, sex, height and weight without network calls or model drift.
If you later need Hume-Weyers TBW, Chumlea equations, bioelectrical impedance analysis, body mass index, basal metabolic rate, or body surface area, treat those as separate search intents and landings rather than overloading this total body water calculator page. Always present results as educational estimates from the nineteen eighty Watson model; clinical decisions require qualified professionals, local protocols, and context this tool does not collect.
What you can do with it
Classroom TBW answer keys
Generate Watson litre and percentage values from age, sex, height and weight so instructors and auto-graders share one transparent ground truth.
Hydration and physiology education demos
Show the classic 1980 sex-specific TBW equations in lectures without mixing impedance or Hume-Weyers on the same landing.
FAQ
What is the Watson total body water formula?
Body water percentage is (TBW/weight)×100. Published by Watson et al. in 1980.
What units should I use for height and weight?
Height in centimetres and weight in kilograms. Convert imperial measurements before calling; the published coefficients assume metric inputs.
What happens if height or weight is zero or negative?
Non-positive height or weight are rejected rather than producing a meaningless water volume.
Does the female equation use age?
The classic female Watson formula does not include age.
What does it cost?
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/health/body-water-percentage \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":30,"sex":"male","height":180,"weight":80}'const res = await fetch("https://api.kit.forhosting.com/health/body-water-percentage", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"age": 30,
"sex": "male",
"height": 180,
"weight": 80
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/body-water-percentage",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"age": 30,
"sex": "male",
"height": 180,
"weight": 80
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/body-water-percentage", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"age":30,"sex":"male","height":180,"weight":80}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"age":30,"sex":"male","height":180,"weight":80}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/body-water-percentage", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"age": 30,
"sex": "male",
"height": 180,
"weight": 80
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.body_water_percentage",
"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
How the Watson total body water formula works
The computation is pure floating-point arithmetic with no network calls, no random seeds, no wall-clock timestamps, and no machine-learning drift, so identical inputs always yield identical JSON.
What you send and what you get back
Send four fields. All four fields are required. Classic smoke checks include a thirty-year-old male at one hundred eighty centimetres and eighty kilograms, which yields roughly forty six litres and about fifty eight percent, and a twenty-eight-year-old female at one hundred sixty five centimetres and sixty five kilograms, which yields roughly thirty one litres and about forty eight percent; both produce stable positive volumes suitable for answer keys. Convert inches and pounds to centimetres and kilograms before calling if your forms collect imperial units, because the published Watson coefficients assume metric inputs only. Age is age in years and must be a finite number strictly greater than zero; aliases age_years and years are accepted. Sex selects the sex-specific Watson equation and must normalize to male or female; accepted strings include male, female, m, f, man, and woman, case-insensitive, with gender as an alias. Height is standing height in centimetres and must be finite and positive; aliases height_cm, cm, and h are accepted. Weight is body mass in kilograms and must also be finite and positive; aliases weight_kg, kg, mass, and w are accepted. Missing fields, non-numeric strings, NaN, Infinity, zero height or weight, non-positive age, and unrecognized sex fail with invalid_input and are not charged. On success the response returns tbw and tbw_l as the same cleaned litre value, unit L, body_water_pct and body_water_percentage as the same cleaned percentage of body weight, the cleaned age_years, sex, height_cm and weight_kg, equation watson, equation_year nineteen eighty, the sex-specific formula string, and method watson. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where total body water calculators show up in real work
Sports science and nutrition education modules often walk students through hydration percentages as a fraction of body weight; matching hand arithmetic to API output matters more than asymptotic cost even when research labs later use dilution methods. Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Deterministic anthropometric fixtures
Bulk-produce stable total body water labels for synthetic datasets and regression tests with hard invalid_input on non-positive height or weight.