Calculators

BMR, TDEE, a calorie target and the macros to hit it

Maintenance calories, and the target for losing or gaining.

"What are my maintenance calories" and "what deficit do I need" are the same calculation from either end, which is why they are one endpoint rather than two that would return identical numbers.

The formulas disagree, and the response says by how much. Mifflin-St Jeor and the revised Harris-Benedict differ by 5 to 10% for the same person, which is often more than the entire deficit someone is trying to run. formula_spread_kcal is that gap and bmr_formula_used names the one the answer took: Mifflin-St Jeor normally, Katch-McArdle when body fat is given, because that works from lean mass and is the better estimate. Quoting a single number without saying which formula produced it is the failure mode here.

Projections use 7,700 kcal per kilogram of body fat, so a 500 kcal daily deficit is about half a kilogram a week. weeks_to_target applies that to a target weight, and the caveats say plainly that a long projection runs optimistic, because metabolic rate falls as weight does.

These are population formulas, not a measurement of anyone's metabolism. The honest instruction, which is in caveats, is to eat at the number for two to three weeks and adjust from what the scale does.

post/v1/energy-expenditure

Request

  • Base URL: https://api.calculate.co.nz
  • URL: https://api.calculate.co.nz/v1/energy-expenditure
  • Auth: API key in header X-API-Key

Request body

sexstring required

"male" or "female". It changes the formula constant.

ageinteger required

Age in years. The formulas are validated roughly 18 to 75.

weight_kgnumber required

Body weight in kilograms.

height_cmnumber required

Height in centimetres.

activity_levelstring

sedentary, light, moderate, very_active or extra_active. Most people overestimate this; one level lower than it feels is usually closer.

goalstring

lose, maintain or gain.

body_fat_pctnumber

Optional. When known, Katch-McArdle is computed and used as the primary, because it works from lean mass.

target_weight_kgnumber

Optional. Produces a timeline at the chosen offset.

Example request

{
  "activity_level": "moderate",
  "age": 35,
  "body_fat_pct": 0,
  "goal": "lose",
  "height_cm": 180,
  "sex": "male",
  "target_weight_kg": 78,
  "weight_kg": 85
}

Response

All three BMR formulas with their spread, the maintenance figure, and a target for the goal.

disclaimerstring required

Scope and limits of this calculation.

Example response

{
  "disclaimer": "Estimates from population formulas, not a measurement of your metabolism. The formulas disagree by 5 to 10%, so the one used is named. Adjust from what your weight actually does over two to three weeks. Not medical advice.",
  "result": {
    "activity_description": "exercise 3 to 5 days a week",
    "activity_level": "moderate",
    "activity_multiplier": 1.55,
    "age": 35,
    "bmr": 1805,
    "bmr_formula_used": "Mifflin-St Jeor, the better validated of the two that need no body fat figure",
    "bmr_harris_benedict": 1892,
    "bmr_katch_mcardle": 0,
    "bmr_mifflin_st_jeor": 1805,
    "carbs_g": 244,
    "carbs_kcal": 974,
    "caveats": [
      "These are population formulas, not a measurement of your metabolism. Eat at the number for two to three weeks and adjust from what the scale actually does.",
      "The three formulas disagree by 87.0 kcal for this person. That gap is larger than many deficits, which is why the one used is named.",
      "The timeline assumes a constant rate. Metabolic rate falls as weight does, so a long projection runs optimistic."
    ],
    "daily_calorie_target": 2298,
    "daily_offset": -500,
    "fat_g": 71,
    "fat_kcal": 643,
    "formula_spread_kcal": 87,
    "goal": "lose",
    "height_cm": 180,
    "minimum_fat_applied": false,
    "projected_weekly_change_kg": -0.45,
    "protein_g": 170,
    "protein_kcal": 680,
    "sex": "male",
    "tdee": 2798,
    "weeks_to_target": 15.4,
    "weight_kg": 85
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.