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.

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.
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.
