How MacroWeek calculates
Every number MacroWeek shows is computed by the app or its own service from published formulas and public data. This page explains the formulas in plain words. The app shows the same working next to each number, so you can check it there too.
MacroWeek is a general wellness tool, not medical advice. Food and label values vary, and bodies are not formulas. Every target is an estimate to begin with, and you can change any number.
Your starting target
Onboarding turns your answers into a starting calorie target and a split into protein, fat and carbohydrate. The "How we got here" steps on the target screen show these same four steps with your own numbers.
- Resting energy. By default MacroWeek uses the Mifflin-St Jeor equation from your weight, height, age and the sex coefficient you chose. The revised Harris-Benedict equation and the Cunningham equation (which needs a body-fat estimate) are available under Advanced. Weight and height are converted at 0.45359237 kg per pound and 2.54 cm per inch, without rounding.
- Activity. Resting energy is multiplied by one of five factors: 1.20 (sedentary), 1.375 (lightly active), 1.55 (moderately active), 1.725 (very active) or 1.90 (extremely active). If you said you were not sure, MacroWeek steps one level more cautious. Exercise is never added on top of this.
- Goal. To lose weight, a daily amount is subtracted for the pace you chose: your weight × the weekly percentage ÷ 100 × 7,700 kcal per kg ÷ 7 days. The default pace is 0.5% of body weight a week; MacroWeek offers 0.25% to 1.0%. To build, 0.25% a week is added the same way. To maintain, nothing changes.
- Protein first, then fat, then carbs. Protein is set in grams per kilogram of body weight by goal (1.6 to 1.8 g per kg, plus 0.2 g per kg on a vegan pattern). Fat is 25% of calories by default, within 20% to 35%, at 9 kcal per gram. Carbohydrate is whatever is left at 4 kcal per gram. On keto, the net-carb cap comes first (30 g by default, 20 g to 50 g), then protein, and fat is the remainder.
Grams and calories are rounded to whole numbers, half away from zero, once at the end. The calories shown are always 4 × protein grams + 4 × carbohydrate grams + 9 × fat grams, and MacroWeek checks that this reconciles with the target within 2 kcal (4.5 kcal on keto).
Editing. You can edit calories, protein and fat (or the net-carb cap on keto). Carbohydrate is always the remainder and is re-derived after every edit. A calorie edit below 1,200 is refused.
Guardrails
- No displayed target is ever below 1,200 kcal a day. A lower estimate is raised to 1,200 and the screen says so, with the slower pace that results. A target between 1,200 and 1,500 kcal is marked for review.
- MacroWeek gives no targets to anyone under 18.
- If you are pregnant or breastfeeding, only a maintenance target is offered.
- With a history of disordered eating, an unanswered screening question, or a BMI below 18.5, only a maintenance target is offered, and the calorie figure cannot be edited.
- A loss pace that would need a target below 1,200 kcal is not offered; MacroWeek suggests maintenance or a change of answers instead.
Calories and macros of foods
Sources. Whole-food nutrition comes from pinned releases of the USDA FoodData Central database: Foundation Foods and SR Legacy (analytical data), FNDDS (survey data) and Branded Foods (manufacturer labels). A food is tied to the release it came from, so its values do not change under you when the USDA publishes a new release.
Barcodes. A scanned barcode is looked up in USDA Branded Foods first. If the USDA has no record, the barcode number is sent to Open Food Facts, a community database, and the product is used only after you confirm it is your package. If neither has it, you can type the label yourself.
Displayed calories are always 4 × protein + 4 × carbohydrate + 9 × fat, from the grams shown. The energy printed on a label or reported by the USDA can differ by rounding and by the method the source used; food detail shows that source energy separately.
Net carbs (shown on keto) are total carbohydrate minus fiber minus sugar alcohols, never below zero.
Provenance. Each record shows where it came from and how strong the evidence is: analytical or curated data (USDA Foundation, SR Legacy), an authoritative label (manufacturer, USDA Branded), a reviewed aggregation (FNDDS), a community label (Open Food Facts), or an estimate (a reading from a photo or description, which you confirm before it is saved). Values are stored at full precision and rounded only when shown.
Recipes and the daily dial
A recipe's nutrition is the sum of its ingredient records at the amounts in its lines, divided by the servings. When you type or import a recipe, MacroWeek matches each line to a database record and you confirm or change each match before the recipe counts as trusted. Per-serving calories are 4/4/9 from the per-serving grams.
Today's dial adds up the grams of the meals and foods you confirmed. When a day is above a target, the dial says so in words; it never colours a number red.
Build my week
Build my week (Premium) chooses which of your approved recipes to put in each meal slot, and how many servings, so that each day comes as close as it can to your targets while respecting your diet style, allergens, dislikes, the meals you locked, your pantry and, if you set one, your budget. It uses a constraint solver (Google OR-Tools CP-SAT) on MacroWeek's service. Within about ten seconds it returns a plan, a report of what conflicts, or says it could not finish. Nothing changes in your week until you apply the result. No AI model is involved in these calculations.
The grocery list
- Demand. Each planned meal adds its recipe's purchase amounts, scaled by the servings planned, to the matching item. Amounts are summed as fractions and rounded once per item, so the total is not drifted by per-meal rounding.
- Already have. Confirmed pantry stock of the same item, in the same state and form, is subtracted, never more than the demand. An item you marked "I have enough" is moved to Already have. Stock past its date is flagged "check first" and not subtracted.
- Packages. Only what remains is bought. For items sold by weight, the smallest increment is used and the count rounds up. For packaged items, MacroWeek picks the fewest whole packages that cover the remainder, then the least over-purchase, then smaller sizes.
The grocery cost estimate
The grocery list shows an estimated cost as a range, never a total. The line under it says "In-store estimate before tax; delivery prices and fees may be higher."
Where prices come from. MacroWeek keeps a table of public average prices: U.S. Bureau of Labor Statistics average prices, and USDA Economic Research Service annual retail prices adjusted by the food-at-home Consumer Price Index. Each price has a date, a source and a tier. The header shows "Prices as of" that date; if the table is more than three months older than the shopping week, the header says the range is rougher than usual.
Your own prices. A price you type for a line, or a receipt line you confirm, is used for your own estimate only. It counts as a fresh price for 30 days, then as a regional-level price until 90 days, then no longer. It is never shared with or averaged across other people.
Your region. If you save a store, the public prices are multiplied once by the ratio for that store's US Census region, derived from the store's state on your phone. Your own prices are never adjusted. Without a saved store, national prices are used.
Tiers and bands. Each price carries a band that becomes the range: a fresh price of your own ±5%, a regional average or an older price of yours ±15%, a national average ±25%, and an inferred price ±40%. A public price that has passed its source's age limit (a year for most sources), or an item with no price of its own, is inferred from the average for its food group. An item is never priced at $0: when no estimate is possible, the list shows no money at all rather than a wrong figure.
The range. The low end is the sum of every line's low price, rounded down to a whole dollar; the high end is the sum of the high prices, rounded up. With a budget set, a reserve (by default $10) is added to both ends so that small extras are covered, and a hard cap limits the high end when Build my week plans the week. Organic products you confirmed are priced at their own price if you typed one, otherwise at one and a half times the conventional price, as an inferred estimate.
The weekly check-in
The weekly check-in (Premium, optional) runs on your phone only. Once a week, on Monday, it looks at the previous 21 days:
- It counts only the days you marked as fully logged. Days marked travelling or unwell, empty days and days with an unusually high or low total (below half or above one and a half times your typical day) are left out. It needs at least 14 counted days.
- It smooths your weigh-ins (typed in, or read from Apple Health if you already allowed it) into a trend, leaving out a reading more than 2 kg from the trend. It needs at least 6 weigh-ins spread over at least 14 days.
- From the logged intake and the weight change, at 7,700 kcal per kilogram, it estimates your maintenance and compares it with your target.
It may then suggest one change of at most 150 kcal, and at most 450 kcal in total since you last set your target. It suggests nothing within 14 days of a target change, never suggests a target below 1,200 kcal, flags 1,200 to 1,500 kcal for review, and refuses a change its macro split cannot fit. It never changes a target on its own: nothing happens until you tap "Use this target". It is not offered to people the onboarding guardrails exclude.
Apple Health
With your permission, MacroWeek writes one food entry per confirmed meal to Apple Health: energy, protein, carbohydrate, total fat and fiber, using the same shown grams and 4/4/9 calories as Today, so Health and the app agree. It reads your weight only, and never writes it.
Where AI is and is not used
Some Premium features can use an AI model, each only after you allow it. The model proposes words, matches to database records and recipe choices from what MacroWeek hands it. It never produces a calorie, a target, a nutrition value or a price: MacroWeek computes every number itself from the records you confirm, and nothing is saved until you check it. Build my week, the grocery list, the cost estimate, your targets and the weekly check-in use no AI model at all.
Where to see the working in the app
- Your target: the "How we got here" steps on the target screen during onboarding, and again from Settings when you edit the numbers.
- A food or recipe: its detail screen names the source, the release and the evidence tier, shows the source energy beside the 4/4/9 figure, and lists each matched ingredient line.
- The grocery estimate: the "Prices as of" date in the list header, each line's tier words (for example "estimated from the food group"), and "Your price" where you entered one.
- The weekly check-in: the days counted, the weigh-ins used, the days left out and why, and the "How this works" sheet.