How Our Macro Calculator Works

This page explains how our macro calculator turns your inputs into calories and macro targets. It uses the Mifflin-St Jeor equation by default and the Katch-McArdle equation when you enter body fat. Every constant is published, so you can check the arithmetic yourself.

Calculator accuracy has limits, and this page states them. In the examples below, changing the activity factor moves the result more than switching equations. Results are estimates to adjust from, not medical advice.

macro calculator accurate

What the Macro Calculator Estimates (and for Whom)

The macro calculator estimates two things: a daily calorie target, and grams of protein, carbohydrate and fat that add up to it. It can start from your body measurements and activity level, or from a calorie figure you already know. Either way the output is an estimate to test against your own weight trend, not a prescription.

It is built for healthy adults aged 18 to 80. Before any numbers appear, you confirm that you are not pregnant or breastfeeding and have no condition that needs supervised nutrition; anyone outside that scope gets a stop message and no targets. The age range and the stop rules are product guardrails we set, not claims from a study, and the medical disclaimer explains who should seek individual guidance instead.

The Mifflin-St Jeor and Katch-McArdle Equations

Both equations estimate resting energy expenditure, which the calculator labels BMR as the common shorthand. Mifflin-St Jeor is 10 × weight (kg) + 6.25 × height (cm) − 5 × age, plus 5 for men or minus 161 for women. Katch-McArdle is 370 + 21.6 × lean mass (kg), where lean mass is weight × (1 − body fat percentage).

Mifflin-St Jeor is the default because it needs only inputs everyone has. Katch-McArdle is used when you enter body fat, because it works from body composition, but it is only as good as that measurement (see example 3). The original Mifflin-St Jeor study covered adults aged 19 to 78, so the equation alone does not support our 18-80 scope or our goal and macro rules. For the same steps worked by hand, see how to calculate macros and BMR and TDEE.

Equation

Inputs

Used here?

Reason

Mifflin-St Jeor (1990)

Weight, height, age, sex

Yes, default

Needs only common inputs; estimates resting energy expenditure

Katch-McArdle

Lean mass

Yes, when body fat is entered

Uses body composition when you supply it

Harris-Benedict (1919, revised 1984)

Weight, height, age, sex

No

Older equation; we compare it only with a checked source

The table documents this tool’s choices; it does not rank other calculators.

Activity Factors, Goal Adjustments and Floors

Total daily energy expenditure (TDEE) is BMR × an activity factor. The calculator offers six factors: 1.2 sedentary, 1.375 light, 1.465 moderate, 1.55 active, 1.725 very active and 1.9 extra active. The right one is the level of your average week, not your best one. The engine also accepts 1.0 (BMR only) for testing, but that value is not in the calculator menu because it is a resting figure, not a daily target.

The goal then adjusts TDEE. In the calculator you choose how to set targets. Goal and protein per kg uses a 20% deficit for fat loss, a 10% surplus for muscle gain, and maintenance calories for maintain and recomposition. Weekly pace and diet type uses a pace of maintain, 0.5, 1 or 1.5 lb of loss, or 0.5 lb of gain, which applies an approximate 250, 500 or 750 kcal per day change. That is a planning figure and not a forecast of weight change. A third option, your own calorie target, skips the estimate and splits the calories you enter.

Calculated targets are never lower than 1,200 kcal for women or 1,500 kcal for men: a lower result, including a calorie figure you enter yourself, is raised to the floor and flagged. The floors are product guardrails, not sourced claims.

Goal

Calorie adjustment

Protein default

Fat share of calories

Maintain

0%

1.6 g/kg

30%

Fat loss

−20%

2.0 g/kg

25%

Muscle gain

+10%

1.8 g/kg

25%

Recomposition

0%

2.0 g/kg

25%

How Protein, Fat and Carbohydrate Are Set

Protein is grams per kilogram of body weight, with defaults of 1.6 to maintain, 2.0 to lose fat, 1.8 to gain and 2.0 to recompose, capped at 35% of calories. Fat is a share of calories, 30% to maintain and 25% for the other goals, divided by 9, and never less than 0.6 g per kg. You can choose protein between 1.2 and 2.6 g/kg and fat between 20% and 40% of calories.

Carbohydrate is whatever calories remain, using 4 kcal per gram for protein and carbohydrate and 9 for fat. These are rounded approximations that ignore fibre, alcohol and digestion effects. If protein and the minimum fat need more calories than the target holds, the calculator returns an error instead of negative carbohydrate. The diet-type presets (Balanced 30/40/30, Low Carbohydrate 40/20/40, Ketogenic 25/5/70, High Protein Bodybuilding 35/45/20 and Endurance Athletic 20/60/20, each protein / carbs / fat) use percentages that total 100, so the cap and minimum are not enforced there. The same applies to the engine’s custom-percentages mode, which the calculator interface does not expose, but 40/40/20 at 2,000 kcal for an 80 kg man gives 200 g protein, 200 g carbohydrate and 44 g fat, and the result flags protein above 35% of calories and fat below 0.6 g/kg.

The published configuration

The tool and this page read the same constants, so they cannot drift apart. Any change to a value is recorded in the change log below.

const MACRO_CONFIG = {
  version: '1.3.0',
  equations: { default: 'mifflin-st-jeor', withBodyFat: 'katch-mcardle' },
  activity: [1.0, 1.2, 1.375, 1.465, 1.55, 1.725, 1.9],
  goals: {
    maintain: { adjustPct: 0,   proteinPerKg: 1.6, fatPct: 30 },
    fatloss:  { adjustPct: -20, range: [-25, -5], proteinPerKg: 2.0, fatPct: 25 },
    gain:     { adjustPct: 10,  range: [5, 15],   proteinPerKg: 1.8, fatPct: 25 },
    recomp:   { adjustPct: 0,   proteinPerKg: 2.0, fatPct: 25 }
  },
  weeklyRateLb: [0.5, 1, 1.5, 2],   // about 500 kcal per lb per week
  floorKcal: { female: 1200, male: 1500 },
  proteinCapPctOfKcal: 35,
  fatMinPerKg: 0.6,
  kcalPerGram: { protein: 4, carbs: 4, fat: 9 },
  limits: { age: [18, 80], heightCm: [120, 230], weightKg: [30, 300], bodyFatPct: [3, 60], knownKcal: [1, 8000], proteinPerKg: [1.2, 2.6], fatPct: [20, 40] }
};

Why Macro Calculators Give Different Answers

Two calculators can disagree about the same person without either being wrong: they may use different equations, activity multipliers, goal adjustments and rounding rules. The examples below show how much each input moves our result, so you can judge for yourself which inputs deserve care.

We do not rank calculators. Without measuring an individual’s energy use, for example by indirect calorimetry, there is no verified benchmark to rank them against, so we explain the uncertainty instead of claiming a winner.

Example 1: Activity level

Case A is a woman, 35, 165 cm, 70 kg, losing fat at a 20% deficit. Moving from light to moderate raises TDEE by 12.8% and from moderate to high by 11.3%, which shifts the target by 195 kcal each way. At the light level, 2.0 g/kg protein would exceed 35% of calories, so the engine caps protein at 134 g instead of 140 g and flags it.

Activity level chosen

TDEE (kcal)

Fat-loss target (kcal)

Shift vs moderate

Light (1.375)

1,918

1,535

−195

Moderate (1.55)

2,163

1,730

0

High (1.725)

2,407

1,925

+195

Example 2: Equation

Case B is a man, 28, 180 cm, 82 kg, 15% body fat, gaining muscle. Mifflin-St Jeor gives a BMR of 1,810 kcal and Katch-McArdle gives 1,876 kcal, a gap of 66 kcal (Katch-McArdle reads 3.6% higher). The targets are 3,086 kcal without body fat and 3,198 kcal with it.

Example 3: Body fat error

For the same man, entering 12%, 15% or 18% body fat gives a BMR of 1,929, 1,876 or 1,822 kcal and targets of 3,288, 3,198 or 3,107 kcal. Three points of error moves the target by about 90 kcal, or 2.8%.

Example 4: Deficit size

For case A, a 10%, 20% or 25% deficit gives 1,946, 1,730 or 1,622 kcal. Carbohydrate falls from 225 g to 184 g to 164 g while protein stays at 140 g, because protein is fixed per kilogram.

Example 5: The calorie floor

A woman, 30, 155 cm, 48 kg and sedentary, losing fat, gets 1,092 kcal from the equation. The floor lifts it to 1,200 kcal, about 10% higher, and the result shows a below-floor flag with 96 g protein, 33 g fat and 129 g carbohydrate.

In these cases the activity level moves the result by 11% to 13%, against 3.6% for the choice of equation. That is an illustration, not a universal ranking of error sources, and it is the reason the result is a starting point to adjust after two to three weeks.

Macro Calculator Accuracy: Limits and Uncertainty

How accurate are macro calculators? They estimate; they do not measure. Predictive equations can miss an individual’s true energy use, and a misjudged activity level adds more error than the choice of equation. Treat the result as a starting point and adjust it after two to three weeks of trend data.

The table lists the main sources of uncertainty and how the calculator handles each. We do not publish error percentages beyond the example cases above, because we have no cited source for them.

Source of error

Effect on the estimate

How the calculator handles it

Equation fitted to a study population

Individuals can sit well above or below the prediction

Labelled an estimate; adjust after 2-3 weeks

Self-reported activity level

Largest swing in our examples (11-13%)

Plain-language level descriptions; sensitivity shown

Body fat measurement error

Shifts the Katch-McArdle BMR (about 90 kcal for 3 points)

Optional input; Mifflin-St Jeor when unknown

Energy adaptation and water weight

Weight does not track calories day to day

Judge trends over weeks

Food label and tracking tolerance

Logged intake differs from true intake

Range-based guidance; weighing tips in the how to count macros guide

Fixed 4 / 4 / 9 factors

Ignore fibre, alcohol and digestion effects

Stated as an approximation

Populations outside scope

Results not valid

Hard stop, no numbers

Sources, Testing and Change Log

Each formula and rule on this page traces to a published source or is marked as a product guardrail. The status column states how far each source has been checked, and we only mark a source as checked once the supporting passage has been read.

Every number on this page comes from the same engine as the calculator, and the cases below run against it. A test fails if the engine and the published figures disagree.

Source

Used for

Status

Mifflin MD, St Jeor ST, et al. A new predictive equation for resting energy expenditure in healthy individuals. Am J Clin Nutr, 1990

Default BMR equation

Cited; full text not yet checked

Katch FI, McArdle WD. Lean-mass equation (original citation to be confirmed)

BMR when body fat is entered

Cited; full text not yet checked

Institute of Medicine. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids, 2005

Energy, protein and fat context

Cited; full text not yet checked

Jäger R, et al. ISSN position stand: protein and exercise. J Int Soc Sports Nutr, 2017

Protein range for people who train

Cited; full text not yet checked

Test cases

The table lists the cases the engine must reproduce, including the rejections that return no targets.

Case

Input summary

Result (kcal; protein / fat / carbs)

A

Woman, 35, 165 cm, 70 kg, moderate, fat loss

1,730 kcal; 140 / 48 / 184 g

B

Man, 28, 180 cm, 82 kg, 15% body fat, moderate, gain

3,198 kcal; 148 / 89 / 452 g

B without body fat

Same man, no body fat entered

3,086 kcal; 148 / 86 / 431 g

C

Man, 40, 75 kg, known 2,400 kcal, maintain

2,400 kcal; 120 / 80 / 300 g

D

Woman, 30, 155 cm, 48 kg, sedentary, fat loss

1,200 kcal (raised from 1,092, flagged); 96 / 33 / 129 g

Recomposition

Man, 32, 178 cm, 80 kg, moderate

2,724 kcal; 160 / 76 / 351 g

Imperial

Woman, 29, 162.56 cm, 68.04 kg, light, maintain

1,912 kcal; 109 / 64 / 226 g

40/40/20

2,000 kcal, 80 kg man, custom percentages

200 / 44 / 200 g, two flags

Age 12 or 81

Any other valid input

Error: unsupported age, no targets

Known 1,000 kcal, woman

Below the 1,200 kcal floor

Raised to 1,200 kcal and flagged

Percent total 110

40 / 40 / 30

Error: percent total, no targets

Change log

Every edit to the constants is recorded here with the date and the reason. The date at the top of the page changes only for substantive edits.

Date

Version

Change

October 6, 2026

1.3.0

Goal with protein per kg and own-calorie modes added to the calculator; weekly-pace presets, calorie floors applied to entered calories, published configuration and test cases

Frequently Asked Questions

Short answers to the questions people ask most about how the calculator works.

It gives an estimate, not a measurement. The main sources of error are the equation’s fit to a study population, your self-reported activity level and any body fat measurement; the examples above show the size of each, and you should adjust after two to three weeks.

Mifflin-St Jeor by default, or Katch-McArdle when you enter body fat. Both are written out in full above.

They may use different equations, activity multipliers and goal rules. Example 2 puts the equation gap at 3.6% for one case.

No. The calculator is built for healthy adults and gives general estimates. If you are pregnant, breastfeeding, under 18, over 80 or managing a medical condition, seek individual guidance; the medical disclaimer has details.

It is written by James Smith and updated when a constant or a source changes. The change log shows every edit.

Yes. The published configuration above lists the constants the calculator uses.

Conclusion: Published Constants, Stated Limits

Our macro calculator uses published equations, stated activity factors and a short list of guardrails, and every constant is on this page. The output is an estimate, and in our examples the activity level moves it more than the choice between the two equations.

Use the results as a starting point, log your weight trend for two to three weeks, then adjust. The change log records every edit to the constants, so you can see when and why a number changed. Run your own numbers in the macro calculator or follow the steps in how to calculate macros.