Skip to content

Body fat

Tool id: body-fat · Methods: navy, jackson-pollock-3, deurenberg

Estimate body-fat percentage from body measurements; reach for it to track composition or to unlock LBM-based TDEE methods.

FieldTypeNotes
sex"male" | "female"required
agenumber | nullyears, 0–120 — needed for jackson-pollock-3 and deurenberg
height{ value, unit } | nullcm or in — needed for navy and deurenberg
weight{ value, unit } | nullkg or lb — needed for deurenberg
neck{ value, unit } | nullcircumference — needed for navy
waist{ value, unit } | nullcircumference — needed for navy
hip{ value, unit } | nullcircumference — required for navy when sex is "female"
skinfold_sumnumber | nullmm, sum of 3 sites — needed for jackson-pollock-3
methodsstring[] | "all"defaults to "all"
  • navy — US Navy circumference method (Hodgdon & Beckett). Uses neck/waist (plus hip for women).
  • jackson-pollock-3 — Jackson & Pollock (1978), 3-site skinfold.
  • deurenberg — Deurenberg (1991), a BMI-based estimate.

Each method needs different inputs (circumferences vs skinfolds vs weight+height+age). Any method whose required inputs are absent appears in skipped.

import { REGISTRY } from "@almostjacked/fitness-tools";
const bodyFat = REGISTRY.get("body-fat")!;
bodyFat.compute(bodyFat.input.parse({
sex: "male",
neck: { value: 40, unit: "cm" },
waist: { value: 90, unit: "cm" },
height: { value: 180, unit: "cm" },
}));
{
results: [
{ method: "navy", value: 18.37, unit: "%", detail: null },
],
consensus: { mean: 18.37, median: 18.37, min: 18.37, max: 18.37, n: 1 },
skipped: [
{ method: "jackson-pollock-3", reason: "jackson-pollock-3: requires skinfold_sum and age" },
{ method: "deurenberg", reason: "deurenberg: requires weight, height, age" },
],
}

Full docs for the other protocols: HTTP API · MCP server.