What this generator actually builds
A calorie target on its own is just a number. This page turns it into a template: a full day of breakfast, lunch, dinner and a snack, each filled with two or three real foods at gram portions sized so the whole day lands close to what you typed. It is deliberately not a diet plan drawn up around your body, your preferences or your training, it is a worked example of what that number of calories actually looks like on a plate, built from a fixed dataset of 199 verified foods rather than guesswork. Working out the target itself is a separate job, done properly by a calculator that asks for your body details, activity and goal (linked from the form on the left); bring that number here and this page takes over turning it into food.
How the maths works, in full
Every plan follows the same fixed method, printed here in full rather than hidden behind the result:
Meal kcal share = daily target × a fixed proportion (breakfast 25%, lunch 30%, dinner 35%, snack 10%) Role kcal share = meal kcal share × a role proportion (protein, carb, and fruit or vegetable) Grams for a food = role kcal share ÷ kcal per 100 g × 100, rounded to the nearest 5 g kJ = kcal × 4.184
Breakfast splits into a protein role, a carb role and a fruit role; lunch and dinner each split into a protein role, a carb role and a vegetable role; the snack splits into a protein-rich role and a lighter role. One food is drawn at random from that role's own curated pool, chicken breast, salmon and tofu for a main's protein role, say, or oats, wholemeal bread and a bagel for breakfast's carb role, and its portion is set by the formula above. Because every role's kcal share is fixed before the food is picked, rounding every portion to the nearest 5 g only ever nudges the day's total by a small amount, and one final proportional correction pulls the whole day back to within about 3% of the number you typed, the accuracy this generator aims for on every build.
What protein-priority actually changes
Switching to protein-priority does not just get lucky with a better food draw, it changes the role shares themselves: more of every meal's calories, breakfast, lunch, dinner and the snack, get reserved for that meal's protein role, and less for its carb role. Because the foods in every protein role sit well above the foods in every carb role for protein per calorie, chicken breast, salmon and eggs against rice, potato and oats, that reallocation reliably raises the day's total protein for the same overall target, whichever specific foods the random draw happens to land on.
Reading the plan, the chart and the table
The band beneath the headline plots the plan's actual total against your target on the same scale, so a bar close to the marked target line is doing its job; the table beneath that lists every food, its portion in grams (or ounces, using the toggle), a natural-serving comparison where the dataset has one, its calories and a protein figure, grouped under the meal it belongs to with a meal subtotal above each group. The donut turns the day's protein, carbs and fat into calories rather than grams, since a gram of fat carries roughly double the calories of a gram of protein or carbohydrate, the standard Atwater factors behind most nutrition labelling; that is why a plan can look protein-forward by weight but still show a modest slice of the donut, if a lot of its calories are coming from a fattier food.
Regenerate and swap: two different kinds of change
Regenerate throws every slot away and draws a brand new day, using your browser's own cryptographic randomness (the same rejection-sampling approach behind this site's Dice Roller, which removes the small bias a plain modulo would otherwise introduce) so every eligible food in a role's pool is exactly as likely to be picked as any other. Swap is narrower: press it on one row and only that row redraws, from the same role's pool, at the same calorie share that row already had, so the rest of the day, and the day's target, are left completely untouched. Both are genuinely random; reloading the page keeps whatever was last generated rather than rerolling every visit, so the plan does not shuffle itself under you while you are reading it.
What this page is honest about
This is a template, not dietetics. It does not know your allergies, medical conditions, budget, cooking equipment or what you actually like to eat, and it never invents a food outside its checked, published dataset. It does not offer medical or dietary advice, and anyone managing a health condition through diet should work from figures agreed with a doctor or registered dietitian rather than a generated template. Two figures are worth stating plainly: this generator will not build a plan below 800 kcal a day, the point below which very low calorie diets are only meant to be followed under clinical supervision, and it shows a firm warning below roughly 1,200 kcal a day, the widely used floor under which a diet is generally considered unlikely to meet basic nutrient needs without professional guidance. Neither figure is a target to aim for; both mark points where a number needs a conversation with a professional before it becomes a real eating pattern.
Where these numbers come from
Every food's calories and macros come from USDA FoodData Central, the same dataset behind the other food tools on this site, expressed as typical published values per 100 g. Real food varies from any published average by brand, ripeness and preparation, so treat every portion and total here as a well-sourced estimate, not a laboratory measurement of the specific food you eat.
Questions people ask
Does this page work out my calorie deficit for me?
No, on purpose. Working out a sound deficit target needs your body details, activity level and goal, which is a separate calculation (linked from the target field above). Bring that number here and this page turns it into a day of food.
Is this a real meal plan I should follow?
Treat it as a worked example, not a prescription. It shows one honest way to reach your target from real foods, not the only way, and it knows nothing about your allergies, budget, preferences or medical history. Regenerate or swap items until the shape of it suits you, or use it purely as a sense check on what your number looks like as food.
Why does the total not land exactly on my target?
Every portion is rounded to the nearest 5 g and held within a 10-600 g range per item, and one proportional correction pulls the day back close to your target afterwards. That combination is built to land within about 3% of the number you typed; a bigger gap usually means several portions hit the 600 g cap, which becomes more likely at very high targets.
What does protein-priority actually do?
It reserves a bigger share of every meal's calories for that meal's protein role and a smaller share for its carb role, rather than relying on chance. Since protein-role foods carry more protein per calorie than carb-role foods across the board, that reallocation reliably raises the day's total protein for the same target.
What is the difference between Regenerate and Swap?
Regenerate redraws every slot in the day from scratch. Swap redraws a single row only, from that row's own pool, keeping its calorie share the same and leaving every other row untouched.
Why will this generator not build a plan below 800 kcal?
Diets that low are only meant to be followed under medical supervision, typically as a short, clinically run programme rather than something to start unsupervised from a web page. Enter at least 800 kcal to see a plan; between 800 and roughly 1,200 kcal this page still builds one but shows a firm warning, since that range sits below the floor most guidance considers nutritionally adequate without professional support.
Is this template accurate enough to count on exactly?
Every figure is a typical published value from USDA FoodData Central, not a laboratory measurement of your actual plate, and the day's total is built to land within about 3% of your target rather than to the exact calorie. Treat it as a well-sourced estimate and a useful starting shape, not an exact prescription.
This tool builds a template from typical published food values (USDA FoodData Central) and a disclosed scaling method; it is not a personalised meal plan and does not offer dietary or medical advice. It will not generate a plan below 800 kcal a day and shows a firm warning below roughly 1,200 kcal, both points where professional guidance matters more than any generated figure. Anyone managing a medical condition through diet should work from figures agreed with a doctor or registered dietitian.