Katch-McArdle BMR calculator
At 80 kg and 20% body fat you carry 64 kg of lean mass, and the Katch-McArdle equation puts your resting burn at 1752.4 kcal a day, because it counts lean tissue instead of what the scale shows. Fat mass is shown too. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Weight
- 80
- Body-fat percentage
- 20
- Weight (kg)
- 80 kcal/day
- Body fat percent
- 20
- Lean mass kg
- 64
- Fat mass kg
- 16
The Katch-McArdle equation estimates basal metabolic rate from lean body mass rather than from total weight alone, so two people at the same scale weight but different body-fat percentages receive different resting calorie baselines. This capability takes body weight in kilograms and body-fat percentage, computes lean mass as weight times one minus fat fraction, then applies BMR equals three hundred seventy plus twenty-one point six times lean mass in kilograms. Body fat above one hundred percent is rejected as invalid input because lean mass cannot be negative.
Why lean mass drives the estimate
Basal metabolic rate is the energy your body would spend at complete rest over a whole day. Formulas such as Harris-Benedict or Mifflin-St Jeor work from total weight, age, height and sex, which is useful when body composition is unknown. Katch-McArdle starts instead from lean body mass, total weight minus fat mass, because metabolically active tissue drives most resting expenditure. Lean mass is weight times one minus the fat fraction, and the rate is 370 plus 21.6 times that lean mass. At 80 kg and 20% body fat, that means 64 kg lean, 16 kg fat and 1752.4 kcal a day.
Getting a result you can rely on
The answer is only as good as the body-fat figure you enter. Two people at the same scale weight but with different body fat receive different baselines, which is the point of the method and also its weak spot when the percentage is a guess. Body fat must sit between zero and 100%; anything above is rejected because lean mass cannot be negative, and weight must be a positive number in kilograms. Trainers often re-run it as composition changes, not only when total weight moves.
What Katch-McArdle measures and which inputs you need
Basal metabolic rate is the energy your body would spend at complete rest over twenty-four hours. Classic formulas such as Harris-Benedict or Mifflin-St Jeor use total body weight, age, height, and sex, which works when you do not know composition. Katch-McArdle instead starts from lean body mass, which is total weight minus fat mass, because metabolically active tissue drives most of resting expenditure.
Fat mass is reported as weight minus lean mass for transparency. Missing fields, non-finite numbers, non-positive weight, and negative body fat also fail validation.
What you can do with it
Coaching and physique tracking
Trainers enter scale weight and a measured body-fat percentage to get a lean-mass-based BMR that updates as composition changes, not only as total weight changes.
FAQ
What is the Katch-McArdle BMR formula?
Lean body mass is weight in kg times (1 − body fat percent / 100). Basal metabolic rate in kcal/day is 370 + 21.6 × lean body mass. This calculator applies that formula exactly.
What happens if body fat is above 100 percent?
Body-fat percentage cannot exceed 100 percent; values above that limit are rejected and not charged.
Which units should I use for weight?
Send body weight in kilograms. If your UI collects pounds, convert to kg before calling so the published constants (370 and 21.6) apply correctly.
Is the Katch-McArdle BMR calculator free?
The browser tool runs free on your device.
Where should my body-fat percentage come from?
From a measurement you already trust, such as a DEXA scan, hydrostatic weighing, a quality bioimpedance device or a skinfold protocol. The calculator does not estimate body fat from circumferences or photos.
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/bmr-katch-mcardle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"weight":80,"body_fat":20}'const res = await fetch("https://api.kit.forhosting.com/health/bmr-katch-mcardle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"weight": 80,
"body_fat": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/bmr-katch-mcardle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"weight": 80,
"body_fat": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/bmr-katch-mcardle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"weight":80,"body_fat":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"weight":80,"body_fat":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/bmr-katch-mcardle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"weight": 80,
"body_fat": 20
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.bmr_katch_mcardle",
"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 path is pure arithmetic with no network and no random seed, so homework checkers, coaching apps, and prepaid API clients get identical JSON every time.
What Katch-McArdle measures and which inputs you need
Send weight as a positive finite number in kilograms; aliases weight_kg, body_weight, and mass_kg are accepted. Send body_fat as a percentage from zero through one hundred inclusive; aliases body_fat_percent, bf, fat_percent, and bodyfat are accepted. The engine multiplies weight by one minus body fat over one hundred to obtain lean mass in kilograms, multiplies that lean mass by twenty-one point six, and adds three hundred seventy to produce bmr_kcal_day. If body fat exceeds one hundred percent the request fails with invalid_input and is not charged. Identical inputs always yield identical JSON because the algorithm never touches the network, a model, a clock, or a random generator.
Reading the response fields and common pitfalls
The unit field is always kcal/day so UIs can label the number without hard-coding strings. Remember that body-fat percentage must come from a measurement you already trust—DEXA, hydrostatic weighing, a quality BIA device, or a skinfold protocol—because this calculator does not estimate composition from circumference or photos. Extremely large weights above the published isolate safety cap are also rejected. On success the response echoes weight_kg and body_fat_percent, then lean_mass_kg, fat_mass_kg, and bmr_kcal_day in kilocalories per day. The formula field restates BMR equals three hundred seventy plus twenty-one point six times lean mass, and method is always katch_mcardle so downstream code can branch without sniffing shapes. Use lean_mass_kg when a coach wants to track composition changes separately from the calorie line; use bmr_kcal_day when a meal planner only needs the resting baseline before applying an activity multiplier outside this capability. Percentages above one hundred are impossible and raise a clear invalid_input message mentioning that body fat exceeds one hundred percent. Do not confuse this endpoint with total daily energy expenditure: activity factors, thermic effect of food, and training load are out of scope and should be applied by your product after you receive BMR.
API usage, pricing, coaching workflows, and practical limits
Call the free in-browser Katch-McArdle BMR calculator for quick checks, lecture demos, and client education without installing a nutrition spreadsheet. Prefer kilogram weight inputs that match the published constants; if your UI collects pounds, convert before calling. Keep expectations clinical: this is an educational and planning estimate, not a diagnostic medical device, and users with atypical body composition or medical conditions should follow professional advice rather than any single formula alone. Send a JSON body with required weight and body_fat (or their aliases). Use the prepaid API when a fitness SaaS, telehealth intake form, sports-science lab notebook, or calorie-planning pipeline needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with a body-fat measurement workflow on the client side, then store lean mass and BMR in your own database for longitudinal charts. Authors shipping SDKs can map bmr_kcal_day directly into dashboards and export CSV columns labeled lean mass and basal calories—the same numbers coaches write by hand when they apply Katch-McArdle on paper.
Integration use cases
Fitness and nutrition apps
Apps that already store body-fat readings call a stable prepaid endpoint for Katch-McArdle BMR instead of reimplementing the formula in every client language.
Sports science and classroom demos
Labs and courses compare Katch-McArdle against weight-only equations and pin expected JSON in automated tests with deterministic outputs.
Technical questions
Does this return TDEE or only BMR?
Only BMR (resting kcal/day). Activity multipliers and total daily energy expenditure are out of scope; apply them in your product after you receive bmr_kcal_day.