Calorie Calculator
Daily energy expenditure and the maintenance, weight-loss, and weight-gain targets built from it, using the Mifflin-St Jeor equation and the standard activity multipliers. The companion guide — calorie needs: BMR, TDEE, and why targets drift — walks the same chain at length, with the uncertainty at each link given the room it deserves. Pair this page with the Macro Calculator to turn a calorie target into protein, carb, and fat grams.
Daily calorie targets
Example: male, 70 kg, 175 cm, 25, moderately active → maintenance ≈ 2,594 kcal/day.
From BMR to daily target, one step at a time
Three steps separate the handful of measurements you enter from the number you are handed. The Mifflin-St Jeor equation converts weight, height, age, and a sex constant into an estimate of energy used at rest: for the pinned example — a man of 70 kg and 175 cm, aged 25 — that is 1,674 kcal/day. An activity factor multiplies that estimate to cover the rest of the day, so at the moderately active factor of 1.55 maintenance comes to 2,594 kcal/day. Fixed offsets either side of maintenance then produce the goal rows — 250 and 500 kcal in each direction, giving 2,344 and 2,094 kcal/day for loss, 2,844 and 3,094 for gain. Every figure in this paragraph was produced at build time by the same engine the form above calls.
The coefficients say what the first step can and cannot see. Each kilogram of body weight carries 10 kcal, each centimetre of height 6.25, each year of age subtracts 5, and the difference between the male and female forms is a single flat constant: the same 70 kg, 175 cm, 25-year-old entered as female returns 1,508 kcal/day, 166 kcal below the figure above, and nothing else in the equation changes. The age term is equally literal — 10 years added to the same entry gives 1,624, a difference of 50 kcal. There is no term for body composition and none for training history, so two people identical in weight, height, age, and sex receive identical resting estimates. That is the shape of the published formula rather than a fault in this implementation, and it is the first thing to check when an output looks wrong.
The third step is the plainest of all: the loss and gain rows are not separately modelled — the engine computes no rate of weight change, it applies one subtraction and one addition to the maintenance figure. Because those offsets are fixed rather than proportional, the same 500 kcal leaves a very different distance above one person's resting estimate than another's — which is the reason the engine inspects each loss row before printing it, as the flagged examples further down show.
The multiplier is the one link you choose
The first step is computed from measurements; the second is a dropdown. These are the five conventional factors, each applied to the same unchanged resting estimate of 1,674 kcal/day:
- ×1.2 — Sedentary (little or no exercise): 2,009 kcal/day
- ×1.375 — Lightly active (1–3 days/week): 2,301 kcal/day
- ×1.55 — Moderately active (3–5 days/week): 2,594 kcal/day
- ×1.725 — Very active (6–7 days/week): 2,887 kcal/day
- ×1.9 — Extra active (hard exercise + physical job): 3,180 kcal/day
One body, one resting estimate, and a span from 2,009 to 3,180 kcal/day depending on which line the reader picks. These multipliers are conventional rather than precise, and choosing between "lightly" and "moderately" active is a self-assessment that most people get wrong in the optimistic direction. The labels compound the difficulty because they are written almost entirely in exercise days per week: two people who both train three days a week can spend the remaining hours of those weeks very differently, and the ladder has no rung for that difference.
The cost of a one-rung misjudgement is arithmetic rather than opinion. The factor multiplies the whole resting estimate instead of adding to it, and the rungs are evenly spaced, so the gap between two neighbours is a fixed fraction of the BMR — and the larger the BMR, the larger the absolute gap. On this example, moving from moderately active down to lightly active (1.375) changes maintenance from 2,594 to 2,301 kcal/day. That is 293 kcal/day from one dropdown, larger than the milder goal offset and short of the larger one: a single self-assessment outweighing the difference between the two weight-loss rows the calculator prints. The TDEE Calculator stops at this step and lists all five levels at once, which is a useful way to see the width of the band before committing to a line in it.
How much precision the chain actually has
The published expectation for Mifflin-St Jeor is roughly a ±10% band around measured resting expenditure for most people. That is not a rounding detail: on the worked example it is about 167 kcal/day of uncertainty in the resting figure alone. Because the next step multiplies rather than adds, the band is scaled with everything else and arrives at maintenance at roughly 259 kcal/day — comparable to a whole step on the activity ladder, and larger than the milder goal offset the calculator applies on top.
Two consequences follow. Calories are displayed as whole numbers because that is the precision these estimates deserve; the arithmetic keeps full precision internally and rounds only at display. And comparing two targets a few kcal apart carries no information at all, because the band around each of them is wider than the difference between them. The number to read is the one that sits at the centre of a range at least that wide, not a figure accurate to the last digit printed.
Why low targets are flagged instead of hidden
Subtraction does not know when to stop, so the engine checks each loss row twice before showing it: against the person's own estimated BMR, and against the commonly cited minimum intakes of about 1,200 kcal/day for women and 1,500 for men. The two checks are independent, and either can fire without the other.
Take the same pinned example at the sedentary rung instead of the moderate one. Maintenance falls to 2,009 kcal/day, so the larger loss row lands at 1,509 — below his own resting estimate of 1,674, but still above the 1,500 kcal floor. One flag, not two. The milder row, at 1,759 kcal/day, raises neither. Nothing about the body changed between this paragraph and the one at the top of the page; only the dropdown did.
A second case raises everything at once: a woman of 55 kg and 160 cm, aged 55, at the sedentary factor. Her resting estimate is 1,114 kcal/day and maintenance 1,337, so the two loss rows land at 1,087 and 837 kcal/day — both below the resting estimate and both below the 1,200 kcal floor. This page's build asserts that all four flags are raised for exactly this input; if the engine ever stopped raising them, the page would fail to compile rather than quietly become false.
Why flag rather than clamp? Silently raising a target to the floor would hide the fact that the arithmetic ran out of room, and silently dropping the row would look like a bug. Printing the number with a warning attached is the only option that leaves the reader better informed than before. A flag means the chain has left the range a calculator can responsibly speak to, and targets in that territory call for qualified medical supervision — a statement about what a calculator is for, not about any particular situation, which this page knows nothing about.
Who the equation fits least well
Mifflin-St Jeor was derived by indirect calorimetry in 498 healthy adults aged roughly 19–78, including both normal-weight and obese participants, and published in 1990 in the American Journal of Clinical Nutrition. That study population is the boundary of what it can speak to: the equation is least reliable for teenagers, for athletes at body-composition extremes, and for people with conditions that alter metabolism. The engine encodes part of that boundary directly, accepting ages of 15–100 for BMR and calories, weights of 10–500 kg, and heights of 50–280 cm, and returning an explicit message rather than a wrong answer outside them.
For the body-composition case there is no correction available inside this chain, because the equation has no composition term to correct. What is available instead is a second, independent estimate to hold alongside it: the Body Fat Calculator works from height and circumference measurements by a different published method, and the BMI Calculator reports a screening ratio that is explicitly not a body-fat measure. Neither answers the calorie question, which is exactly why they are worth reading next to it.
The target is a hypothesis, not a prescription
Everything above compounds into a single practical point: the output is the starting point of a two-to-three-week comparison against the actual weight trend, not a fixed prescription. The estimate is a population formula's guess at a stranger; the trend is data about the person in front of it. When the two disagree, the honest move is to re-run the chain with the rung that matches the trend rather than the one that returns a more agreeable number. It has to be a trend rather than a single reading, because one reading cannot separate a mis-set multiplier from ordinary variation.
The target also has a date on it. Weight is an input to the first step, where it carries a coefficient of 10 kcal per kilogram, which the moderate factor scales to 15.5 kcal in the maintenance figure. Re-running the chain after a real change in weight is part of using it, not a sign that the first answer was wrong. For the resting figure on its own, see the BMR Calculator; for the maintenance step, the TDEE Calculator; for the full argument with every link's uncertainty worked through, the companion guide. Turning any of these figures into protein, carbohydrate, and fat grams is a separate convention again, applied by the Macro Calculator.
Frequently asked questions
How are the maintenance calories estimated?
Your basal metabolic rate (Mifflin-St Jeor) is multiplied by an activity factor from 1.2 (sedentary) to 1.9 (extra active). The result — often called TDEE — is the maintenance row, and it is the figure the loss and gain offsets are then applied to.
Where do the loss and gain rows come from?
They are not separately modelled. The engine applies two fixed offsets to the maintenance figure — 250 kcal for the milder step and 500 for the larger one, in each direction — and prints what comes out. Because the offsets are fixed rather than proportional, the same subtraction leaves a different distance above one person's resting estimate than another's, which is why each loss row is checked against the BMR and the intake floors and flagged rather than quietly adjusted.
How accurate is this for me?
Mifflin-St Jeor carries roughly a ±10% band around measured resting expenditure for most people — about 167 kcal/day on the worked example, which the activity factor scales to roughly 259 kcal/day at maintenance. The multiplier adds its own uncertainty on top, since it is a convention you choose rather than something measured. The target is the starting point of a two-to-three-week comparison against the actual weight trend, not a fixed prescription.
Why does the target move so much when I change one dropdown?
Because the activity factor multiplies the whole resting estimate rather than adding to it. The rungs are evenly spaced, so the gap between two adjacent ones is a fixed fraction of your BMR — on the worked example, moving between lightly and moderately active changes maintenance by 293 kcal/day, more than the milder goal offset and short of the larger one.
Does the estimate already cover my training?
Covering the whole day, training included, is what the activity factor is for. Adding a watch’s estimate of a session on top of a maintenance figure counts the same exercise twice. To work from a base and add sessions separately, start from the resting estimate on the BMR Calculator rather than from maintenance.
Is there a minimum intake the calculator warns about?
The engine checks each loss target twice: against your own estimated BMR, and against the commonly cited minimum intakes of about 1,200 kcal/day for women and 1,500 for men. It raises a flag for each check that fails and still shows the number rather than hiding or silently raising it. A flag means the arithmetic has left the range a calculator can responsibly speak to — targets that low call for qualified medical supervision.
Why is the BMR printed alongside the targets?
Because the distance between a loss target and the resting estimate is what the flags are about, and that distance is invisible if only the target is shown. Listing both puts the comparison on the page instead of leaving it to be inferred.
Are my inputs sent anywhere?
No. Every calculation on this site runs in your browser, and inputs are never sent to a server. The worked examples in the text above are computed by that same engine at build time, so the copy and the code cannot drift apart — if they disagreed, the site would fail to build.
Not medical advice: this calculator provides general educational estimates from published population formulas. It cannot account for your individual health context and must not be used to diagnose or treat any condition — consult a qualified healthcare or nutrition professional, especially with any medical condition, pregnancy, or a history of disordered eating. Data is processed locally in your browser and never transmitted. See the methodology page.