What this calculator does
Two methods, one screen:
-
US Navy Method (default, more accurate) — uses a soft tape measure around your neck, waist (and hip for females) plus your height. Validated against hydrostatic weighing in the original Naval Health Research Center study. Accurate to ±3–4% body fat versus DEXA when measured correctly.
-
BMI-Derived — uses only height, weight, age, and sex via the Deurenberg 1991 equation. Quick fallback when you don’t have a tape, but shares BMI’s main weakness: it can’t tell muscle from fat. Less accurate (±5–7%) and biased upward for muscular people.
For both methods you get a body-fat percentage, an ACE category (Essential / Athletes / Fitness / Average / Obese), and — if you entered weight — a fat-mass / lean-mass breakdown.
Measuring correctly (US Navy)
Three soft-tape rules:
- Neck. Just under the larynx (Adam’s apple area). Tape level, not angled. Snug, not pulled tight.
- Waist. Males: just above the navel. Females: the narrowest point of your torso (not where your trousers sit). Breathe normally, then measure on the exhale.
- Hip (females only). The widest point around your buttocks, with feet together.
Same time of day, same conditions, every time. Morning before food/water is the most reproducible.
Why this matters more than BMI
BMI is weight ÷ height². It can’t distinguish 80 kg of muscle from 80 kg of fat — so a powerlifter and a sedentary person can hit the same BMI while having opposite metabolic health. Body-fat % closes the gap. Even a ±3% estimate from a $5 tape catches:
- Body recomposition — lose 5 kg fat, gain 3 kg muscle. Scale barely moves; body-fat % drops noticeably.
- Aging-related “skinny fat” — BMI looks fine; body-fat % flags rising fat-mass even at stable weight.
- Cuts vs bulks — track whether a deficit is preserving muscle (good) or burning through it (bad).
Privacy
The math runs entirely in your browser via the pure calculateBodyFat function (src/tools/calculators/body-fat.ts in our public repo). Editing any field produces zero network calls — verify this in your browser’s Network tab. The page doesn’t store inputs in localStorage, doesn’t include them in analytics, and never transmits anything about your body.