Meal plate builder

Every meal calculator runs the same way: you add foods and see a total. But the question you actually have in the kitchen is the reverse — I have 600 calories to spend on this meal and I want at least 35 grams of protein in it, so how much do I put on the plate? Enter the target below and get the grams for all four zones.

100 gsolved by the tool

215 gsolved by the tool

The resulting plate

603kcal

Protein: 41.6 g · Weight: 525 g

  • Drift from target+3 kcal
  • Carbs74.6 g
  • Fat15.0 g
  • Fibre7.5 g
  • Per 100 g115 kcal
Track this plate in FitDex

Once the plate you built is saved in FitDex, there is no need to work the grams out again every day: the meal goes into the log with one tap.

Plate breakdown

The last two columns are two separate shares of the same zone: what percentage of the plate's weight and of its calories comes from it. The further the two drift apart, the denser the zone — and the two rings above draw exactly these two columns.

ZoneFoodWeightCaloriesShare of weightShare of calories
Protein sourceChicken breast — skinless, cooked100 g165 kcal19.0%27.4%
Grain and starchWhite rice — cooked215 g280 kcal41.0%46.4%
VegetableBroccoli — boiled200 g70 kcal38.1%11.6%
Fat and sauceOlive oil10 g88 kcal1.9%14.7%

Same target, six protein sources

In all six the target is 600 calories, the protein floor is 35 grams and the vegetable and the fat are the same. The only thing that changes is the protein source — and that is what produces the difference in the grain column. A fatty or carb-carrying source meets the floor and eats the rest of the plate while doing it.

Protein sourceSourceGrainProteinTotal
Chicken breast — skinless, cooked100 g215 g41.6 g603 kcal
Tuna — in water120 g235 g42.3 g603 kcal
Egg — boiled240 g55 g36.5 g602 kcal
Salmon — cooked140 g120 g38.8 g603 kcal
Tofu375 g120 g38.4 g599 kcal
Lentils — cooked340 g35 g36.3 g598 kcal

If you do not want a zone, set its grams to zero; the maths works the same with three zones. Grams are rounded to the nearest five, and protein rounds up, because rounding it down would break the protein floor.

How is it calculated?

The maths runs in three steps, and their order is not arbitrary — it is the order of difficulty. The vegetable and the fat stay at the grams you entered: for both zones the answer to "how much?" is already known — vegetables plenty, fat a spoonful.

The second step solves the grams of the protein source: the smallest amount that meets the protein floor. Because the floor is an obligation and the calories are merely what is left over, the obligation is settled first, and protein coming from the vegetable and the sauce counts towards it too — spinach and tahini genuinely move that line. Both are silent partners.

In the third step the grain zone takes whatever calories remain, and because it is the flexible zone that absorbs the target, changing the protein source resizes the grain zone rather than the other way round. The side that gives is always the same one.

Grams are rounded to the nearest five. There is no such thing as 137.4 grams in a kitchen — neither the scale nor your patience works at that resolution. Protein rounds up, because rounding it down would break the floor; the grain rounds to the nearest. The price is a few calories of drift from the target, and that drift is printed on screen.

The two rings show the same plate on two different measures: the left one by weight, the right one by calories. That they look nothing alike is the whole point of the tool, because the plate you see and the plate that is counted are not the same plate. Same meal, two stories.

If the calorie target cannot cover the protein floor, no made-up result is produced. Instead you are told the minimum calories the floor requires: either raise the target, lower the floor, or pick a leaner protein source.

How to read your result

On the default plate, a 600-calorie target with a 35-gram protein floor resolves to these grams: 100 g of chicken breast, 215 g of cooked rice, 200 g of broccoli and 10 g of olive oil. That comes to 603 calories and 41.6 grams of protein — the floor is a lower bound, going over it is not a problem.

Look at the difference between the two rings. Broccoli is 38.1% of the plate by weight but only 11.6% of its calories. Olive oil is the exact opposite: 1.9% of the weight, 14.7% of the calories. Concretely — 10 grams of olive oil (88 calories) carries more calories than 200 grams of broccoli (70 calories).

Change the protein source and watch what happens to the grain zone. With the same 600 calories and the same 35-gram protein floor, chicken breast leaves room for 215 g of rice on the plate; switching to salmon drops that to 120 g, and to lentils drops it to 35 g. A fatty or carb-carrying protein source meets the floor and eats the rest of the plate while doing it.

That is why "eat more protein" is not a plan on its own. The same protein floor puts the rest of the plate anywhere between 35 and 215 grams depending on the source; the number to look at when deciding is not the protein itself but the calories left after it. That is the real news.

The drift line looks trivial but is a checkpoint: rounding to fives moves the total a few calories off the target, and if that drift runs to hundreds of calories instead, a zone has hit its limit — the screen says so too. Small drift is normal. Large drift is news.

All values come from generic food averages. A branded product, a different cooking method or a second spoon of oil in the pan moves the result by 10-15%. Enough to build a plate, not enough to print a label.

Frequently asked questions

What should I put as the protein floor?

Divide your daily protein target by the number of meals. Aiming at 105 grams a day across three meals gives 35 grams per meal; across four it gives 26. If you do not know your daily target, the protein requirement calculator works it out from weight and activity. This tool does not suggest a target — it converts the one you give into grams. Suggesting one would be dietary advice, which is not a calculator's job.

Why does the grain zone take the leftover calories and not the protein?

Because protein is a floor and grain is a remainder. Stretching the floor would defeat the point of the calculation — dropping protein to 20 grams to hit 600 calories would be changing the target you set. The grain has no such lower bound; when it shrinks the plate gets smaller but no target breaks. If you want the grain fixed and the protein flexible, set the grain zone to zero and try protein grams by hand — but at that point the tool is no longer running backwards.

Is that really half a kilo of food on the plate?

Yes, and that is the surprising part. The default plate weighs 525 grams for 600 calories. Most of that weight is water: cooked rice and broccoli both get most of their mass from it. So "eating less" and "taking in fewer calories" are not the same thing; lowering calories without shrinking the plate runs through growing the water-heavy zone and shrinking the fat zone.

My meal isn't four zones — I'm having soup.

Set the zone you are not using to zero grams; the maths works the same with three zones. If it is a mixed dish cooked in one pot, the recipe calorie calculator fits better — that tool adds ingredients up and divides by servings, this one goes from a target down to grams. The two run in opposite directions and answer the same question from two different sides.

Related tools

This tool is for information only and is not a substitute for medical diagnosis or treatment. Talk to a healthcare professional before making a lasting change to how you eat.