How the numbers work
Nutrition methodology
Every calorie, gram and percentage shown on EatMacroPlant comes from a documented calculation, not a guess. This page explains where the underlying data comes from, how it turns into a recipe's numbers and a household's targets, and where the real limits of that process are.
1. Where the nutrition data comes from
Every ingredient's nutrition profile is drawn from USDA FoodData Central and entered against a stated serving size and measure, then converted to grams for calculation. A handful of ingredients are deliberately entered on a cooked or toasted basis rather than USDA's raw/dry default — rice, quinoa, lentils and toasted nuts and seeds are the main examples — because that is how the ingredient is actually used once it reaches a recipe, and keeping it on a raw basis would understate how much of it you are really eating. Where USDA does not split an ingredient as finely as our recipes do (cooked lentils, for instance, aren't broken out by colour), the closest documented match is used instead of inventing a figure.
Recipes that call for a sub-recipe — a wrap containing hummus, a soup built on a batch of vegetable broth — don't carry a separate nutrition entry of their own. They're calculated from the sub-recipe's own ingredient list, scaled either by serving count or by weight depending on how the parent recipe calls for it, so a change to the hummus recipe automatically flows through to everything that uses it.
Vitamin A gets special handling because USDA reports it in two incompatible units: IU for some entries, mcg RAE (retinol activity equivalents) for others, with a source-dependent conversion between them. Every vitamin A target in this app is expressed in mcg RAE, so the RAE figure is used directly whenever USDA provides it, and a food-carotenoid IU-to-RAE ratio (÷20, rather than the much higher ratio that applies to preformed retinol) is used as a fallback — reflecting that every vitamin A source in a plant-food database is a carotenoid, not preformed retinol.
2. How a recipe's portion size is set
Every main-meal recipe (breakfast, lunch or dinner) is written for one full portion sized against the site's own 650–750 kcal ideal band for a main meal — the same fixed reference regardless of who is actually eating it. Snacks are sized smaller by design rather than against that band, and Auxiliary recipes (a full pot of broth, a batch of hummus) are whole-batch totals rather than a single portion at all, so neither is scaled the way a main meal is.
To turn that fixed reference into amounts suited to an actual person, each main-meal recipe is scaled by the ratio of that person's own daily calorie target to a 2,100 kcal reference (700 kcal × 3 main meals a day). That ratio is capped at 1 for any one person — someone with a genuinely higher requirement than the reference isn't well served by a proportionally bigger single plate, since a recipe balanced for a protein source, a starch and a vegetable component doesn't necessarily stay balanced if every ingredient just gets 40% bigger. The intended way to cover a higher requirement is an extra Snack, not an oversized main meal. Scaling down for a lower requirement doesn't have that problem, so that direction isn't capped.
When a recipe is cooked for a whole household rather than one person, that 1-person cap still applies individually, but the recipe as a whole scales up: it's cooked at the sum of every assigned person's own capped ratio, so a household of one child and one adult gets one batch sized for both, not one person's portion split two ways.
3. How a household member's personal targets are calculated
Each person in your household has a small profile — age range, life stage, activity level, height, bodyweight, body fat percentage and a weight goal. From that, EatMacroPlant estimates a basal metabolic rate (BMR), a calorie target, a protein target, and fat, fibre and carbohydrate targets that all derive from those two numbers.
| BMR component | Contribution |
|---|---|
| Lean body mass | 10 × (weight × (1 − body fat %)) |
| Height | 6.25 × height in cm |
| Age factor | − 5 × age factor (Child 10 / Teen 16 / Adult 30 / Senior 70) |
| Fat mass | + 0.05 × (weight × body fat %) |
This is a lean-mass-aware estimating formula, using an age band rather than an exact birthdate since that's what the app collects. It produces a planning estimate, not a measured metabolic rate.
From BMR, a calorie target is calculated by applying an activity multiplier and then any weight-goal adjustment (see the next section). Protein starts at 0.8 g per kg of bodyweight, then gets one activity- or goal-related bump on top — the largest applicable one, not all of them stacked — plus a flat +25 g/day on top of that for pregnancy or breastfeeding. Fat is set to 30% of total calories. Fibre is set to 14 g per 1,000 kcal, a standard calories-to-fibre ratio. Carbohydrate is whatever energy is left once protein and fat are accounted for, with that fibre added back in on top.
Micronutrient targets (vitamins and minerals) start from standard adult NIH Office of Dietary Supplements / NASEM Dietary Reference Intake figures, then shift for certain people — see the next section for exactly how.
4. How the Daily Dozen is estimated
The Daily Dozen is a food-variety checklist developed by Dr Michael Greger, rather than a Dietary Reference Intake or a clinical nutrition target. The original framework contains ten food categories, beverages and exercise. EatMacroPlant can infer food from recipe ingredients, but it cannot know how much someone drank or exercised, so the planner deliberately tracks only the ten food categories. The original checklist and serving guidance are available from NutritionFacts.org.
3 servings per reference day
1 serving per reference day
3 servings per reference day
1 serving per reference day
2 servings per reference day
2 servings per reference day
1 serving per reference day
1 serving per reference day
1 serving per reference day
3 servings per reference day
For each planned meal, the calculation expands any referenced sub-recipes, converts each qualifying ingredient amount to grams and divides it by that food's approximate serving weight. Most ingredients use the category's shared gram equivalent; whole fruits, soy milk and yoghurt, wholemeal bread and concentrated dried berries use more appropriate item-specific equivalents. Ingredients that genuinely belong to two categories can count toward both—for example, kale is both a cruciferous vegetable and a leafy green.
Personal target scaling
Daily Dozen target × min(1, personal calorie target ÷ 2,100)
The same ratio already scales that person's main-meal portions. Applying it to the checklist avoids comparing a child or another person with smaller planned portions against a full reference day. Targets are not increased above the reference checklist; higher energy needs are normally covered with additional snacks rather than oversized main meals.
Displayed servings and targets are rounded to one decimal place. A category is marked met when its serving estimate reaches the scaled target, and almost met from 70%. This is intended as a forgiving prompt for variety, not proof that a day is nutritionally complete; the nutrient calculations remain the appropriate view for calories, macronutrients, vitamins and minerals.
5. How activity level and life stage shift those targets
Activity level
Activity level applies a flat multiplier to BMR to estimate total daily energy expenditure — a simplified stand-in for the standard activity bands used in dietary guidance, not a device-measured energy expenditure.
| Level | Calorie multiplier | Note |
|---|---|---|
| Low | ×1.3 | Default for anyone who hasn't set an activity level |
| Moderate | ×1.5 | Also adds +0.5 g protein per kg bodyweight |
| High | ×1.8 | Also adds +0.8 g protein per kg bodyweight |
Weight goal
A weight goal applies a further flat daily adjustment on top of the activity-adjusted calorie target — see the calorie deficit section below for how those figures were chosen.
| Goal | Daily adjustment | Estimated pace |
|---|---|---|
| Maintain | No change | — |
| Gradual loss | −250 kcal/day | ≈1 kg/month |
| Faster loss | −500 kcal/day | ≈2 kg/month |
| Gain | +300 kcal/day | — |
Life stage
Life stage covers three states the app can identify with reasonable confidence — pregnant, menstruating or lactating — and shifts several micronutrient targets to match published stage-specific DRI figures. A generic default is used for anyone recorded as none of those, since that group could be a man, a post-menopausal woman, or a non-menstruating premenopausal woman — the app doesn't ask for biological sex, so it deliberately doesn't guess one. A few of the biggest shifts:
| Nutrient | Default | Pregnant | Menstruating | Lactating |
|---|---|---|---|---|
| Vitamin B12 | 2.4 µg | 2.6 µg | 2.4 µg | 2.8 µg |
| Iodine | 150 µg | 220 µg | 150 µg | 290 µg |
| Iron | 18 mg | 27 mg | 18 mg | 9 mg |
| Zinc | 11 mg | 11 mg | 8 mg | 12 mg |
| Vitamin A | 900 µg | 770 µg | 700 µg | 1300 µg |
| Vitamin C | 90 mg | 85 mg | 75 mg | 120 mg |
| Folate | 400 µg | 600 µg | 400 µg | 500 µg |
| Choline | 425 mg | 450 mg | 425 mg | 550 mg |
Vitamin D and calcium instead shift by age band rather than life stage: calcium rises to 1,300 mg for teens and 1,200 mg for seniors (1,000 mg otherwise), and vitamin D rises to 20 µg for seniors (15 µg otherwise) — matching where the underlying DRI tables actually place those particular breakpoints. Age band also sets the BMR age factor described above.
6. How a calorie deficit is estimated
Weight-loss planning uses two flat, preset daily reductions from your calculated calorie target — 250 kcal/day for a gradual pace, 500 kcal/day for a faster one — corresponding to a rounded, friendly estimate of about 1 kg or 2 kg a month respectively. Those figures aren't derived from your body fat percentage, bodyweight or any other personal variable beyond that flat number, and the app is explicit that this is a rough planning direction, not a forecast: real weight change can be faster, slower or uneven, and tends to slow over time as the body adapts.
A deficit can reduce lean tissue as well as fat, which is why weight-loss planning is paired with a protein bump (see the targets section above) and a reminder to include muscle-strengthening activity. Children, teenagers, pregnancy, breastfeeding and later life are flagged as needing individual guidance rather than a generic deficit, since a flat reduction calculated the same way as for anyone else isn't appropriate at those stages.
7. Assumptions about fortified products
Three household-wide Kitchen Settings let you tell EatMacroPlant which variant of a few common ingredients you actually buy, because the difference matters nutritionally: soy milk defaults to a fortified profile (added calcium, vitamin D and B12), since that's what most soy milk on shelves is; salt defaults to non-iodised, and has to be actively switched to iodised; and tofu defaults to a calcium-set profile, since that's the more common commercial coagulant. Each setting only swaps which nutrition profile is read for that ingredient — it doesn't change how much of it a recipe calls for, since fortification changes what's in the food, not how much a cup of it weighs.
These settings are deliberately household-wide rather than per-person, since they describe what's in your kitchen, not what any one person needs. You can change them from the Kitchen Settings menu in the header, and the Requirements page shows which values are currently active.
8. Why some nutrients use targets and others use limits
Most nutrients on EatMacroPlant — calories, protein, carbohydrate, fat, fibre, and most vitamins and minerals — are shown as targets: a minimum worth reaching, where the progress bar keeps rewarding higher values because under-eating is the realistic risk for most people. Three nutrients work the opposite way: sodium, added sugar and saturated fat are treated as limits, where lower is not a nutrition failure and the bar direction inverts, so climbing past 100% reads as a warning rather than an achievement.
A third, smaller group sits in between: iodine, zinc and selenium keep the normal “more is better” framing, since deficiency is still the realistic concern for most people, but also carry a documented tolerable upper intake level that's surfaced as a separate warning once a recipe gets close to it. That distinction exists because a single ingredient — dried seaweed, in particular, for iodine — can blow past a sensible daily amount in one serving, which the ordinary “more is better” framing would otherwise obscure.
Vitamin A deliberately has no upper-limit warning, even though NIH publishes one. That published limit applies only to preformed vitamin A — retinol, found in fortified foods and supplements — not to the provitamin A carotenoids (beta-carotene and similar) found in whole fruit and vegetables, which have no established upper limit because the body's conversion of carotenoids to retinol is self-limiting. Since every vitamin A source in this app's ingredient database is a whole plant food, showing an upper-limit warning here would flag something — eating a lot of carrots or goji berries, say — that isn't actually a recognised risk.
9. Known limitations
A few things worth knowing about what this system can and can't actually tell you:
- Figures are estimates built from ingredient-level data, not a lab analysis of the finished, cooked dish — cooking losses, produce variety, ripeness and brand differences aren't separately modelled beyond what the underlying reference entry already reflects.
- Micronutrient coverage isn't perfectly uniform across every ingredient. A small number of minor trace fields fall back to a closely matched reference ingredient rather than a dedicated entry — always noted alongside the data itself where that happens.
- RDA, AI and upper-limit figures are general population guidance (NIH ODS / NASEM DRI tables), not a personal clinical assessment. Real needs can differ for a genuine medical condition or a life stage this app's simplified age-range and activity model doesn't fully capture.
- BMR, calorie and protein targets come from standard estimating formulas, not a measured metabolic rate — useful for planning, not a substitute for actual testing.
- Calorie deficit estimates are flat and generic, not adjusted for individual metabolic response, adherence or the tendency for real weight change to slow over time.
- Food data alone can't cover everyone's needs, however well a diet is planned. Vitamin B12 in particular has no reliable whole-food plant source, and vitamin D and long-chain omega-3s are also commonly short — see the Recommended Supplements guide on the Requirements page for what this app suggests checking.
- Portion scaling assumes a recipe holds together proportionally when resized, which is exactly why it's capped at a single portion per person rather than scaled up indefinitely.
- Nothing here accounts for personal medical conditions, medications, lab results or supplement interactions beyond the allergens you've entered.