Carbonara is four ingredients and a technique, and the technique is the whole dish. Eggs, hard cheese, cured pork, black pepper — no cream, no garlic, no shortcuts. What turns that into a sauce is heat management: a starchy splash of pasta water and a bowl of beaten egg and pecorino, tossed off the heat until it thickens into something glossy that clings to every strand. Get it right and it tastes richer than any cream sauce. Get it wrong and you have spaghetti with scrambled eggs.
It is also, nutritionally, a fairly narrow plate. So we built a standard Roman version for four people, ran it through Eat Well Planner's Nutrition Score — the same number that shows on any public recipe page — and got back 33 out of 100.
Here is the promise, and it matters given how protective people are about this dish: we did not add cream, we did not add garlic, and we did not take out the egg yolks. The custard is made exactly the way it is supposed to be made. We still got it to 64 out of 100. That is 31 points, and every swap below carries the real score change it earned — including two that get recommended constantly and turned out to be worth nothing at all.
The original: what's in it and how it scores
The version we scored, serving four, is the one you would get from most Roman recipes:
- 14 oz (400 g) dried spaghetti
- 5 oz (150 g) guanciale, cut into batons
- 3 large eggs plus 1 extra yolk
- 3 1/2 oz (100 g) Pecorino Romano, finely grated — about 1 cup
- 2 teaspoons coarsely ground black pepper
- A heavily salted pot of pasta water (we modeled about 4 g of salt actually absorbed by the pasta)
Nutrition Score: 33/100. Per serving that comes to 777 calories, 30.9 g protein, 3.5 g fiber, 37.5 g total fat, 16.7 g saturated fat and 1,480 mg sodium. Now the diagnosis, because knowing why a recipe scores the way it does is the part that transfers to everything else you cook.
- Saturated fat, flagged very high. 16.7 g per serving is 71% of a day's value in one bowl. Guanciale is cured pork jowl — roughly half fat by weight — and pecorino adds another layer on top. The Dietary Guidelines put the ceiling at less than 10% of daily calories from saturated fat, and the American Heart Association at 7%.
- Sodium, also flagged very high. 1,480 mg per serving, 64% of a day's value. Two cured, salted ingredients plus salted pasta water will do that. Harvard's Nutrition Source puts the chronic-disease-reduction ceiling at 2,300 mg a day.
- There is no plant in it. Not a low amount — essentially none. The dish scores 0.25 plant points, and all of that is the black pepper. Fiber lands at 3.5 g per serving against the 25 to 35 g a day Harvard says adults need.
Now the part that is genuinely fine, because carbonara gets talked about as though it were junk food and it is not. There is nothing ultra-processed on the plate. Five real ingredients, one pan, no jar. Protein is a solid 30.9 g per serving, and a serving is already an excellent source of folate, thiamine, phosphorus, iron, riboflavin, niacin and B12. The egg yolks — the ingredient people reach for first — are doing useful work: they are why the sauce exists, and they carry 37% of a day's choline. This is a saturated-fat-and-vegetables problem, not an egg problem.
The upgrades
Five changes, applied in this order, each scored on top of the last. If you make only one, make the second — but the first is nearly free, so you may as well make both.
1. Fold in a bag of frozen peas
- Swap: Nothing → 1 1/2 cups (225 g) frozen green peas, dropped into the pasta water for the last two minutes
- Score impact: +6 points (33 → 39)
- What it changes: Fiber nearly doubles from 3.5 g to 6.7 g per serving, protein rises to 33.9 g, plant points go from 0.25 to 1.25, and vitamin C appears from nowhere at 25% DV
- What it costs you: Purist credibility, and nothing else. Peas are sweet, the sauce is salty and sharp, and that pairing has worked for a very long time
This is an addition rather than a swap, which is why it costs almost nothing in flavor and buys six points. It is also not something we invented: Wikipedia's carbonara entry notes plainly that outside Italy, variations may include green peas, broccoli, leeks, onions, other vegetables or mushrooms. A Roman would not do it. A Roman also would not read a nutrition score. Use frozen rather than fresh, and add them to the pasta pot for the final two minutes rather than the skillet, so they heat through without going gray.
2. Halve the guanciale and let mushrooms carry the savory weight
- Swap: 5 oz (150 g) guanciale → 2 1/2 oz (75 g) guanciale plus 8 oz (225 g) cremini mushrooms, sliced thin and browned hard in the rendered fat
- Score impact: +14 points (39 → 53)
- What it changes: Saturated fat falls from 16.7 g to 11.5 g per serving and the caution drops from very high to high; sodium falls from 1,480 mg to 1,150 mg; calories fall by 106 per serving even though the plate is bigger. Protein does not move — 33.9 g becomes 33.4 g
- What it costs you: This is the real trade in the post. Half the pork means half the crisp salty bits, and you will notice. What you get back is a different depth, meatier and earthier, that most people find fills the gap
This is the single biggest lever in the recipe, and it works because mushrooms and cured pork are chasing the same flavor. Mushrooms are one of the few plant foods with strong umami, from their glutamate content, and Harvard's own guidance is to replace roughly a quarter to a half of the meat in a recipe with chopped mushrooms. Halving the guanciale sits right at the top of that range.
Technique matters more here than anywhere else in the dish. Render the guanciale in a cold pan over medium-low heat, lift the crisp pieces out with a slotted spoon, then cook the mushrooms in that rendered fat over higher heat until they have given up their water and browned in patches — in two batches if the pan is crowded, because crowded mushrooms steam and taste like nothing. They are not there to be visible vegetables. They are there to taste like more pork than you actually used. Our guide to bacon substitutes covers the same trick across other dishes.
3. Whole wheat spaghetti instead of refined
- Swap: 14 oz refined spaghetti → 14 oz 100% whole wheat spaghetti
- Score impact: +3 points (53 → 56)
- What it changes: Fiber jumps from 7.7 g to 10.6 g per serving — 36% DV, an excellent source — and plant points rise to 3.25. Magnesium goes to 41% DV, zinc to 49%
- What it costs you: A nuttier, slightly coarser noodle, and it is less forgiving about timing. Cook it a minute shy of the box
Three points looks modest, and there is an honest reason: refined pasta in the US is enriched, so the original was carrying 104% DV of folate that whole wheat does not replace, and folate drops to 25% DV with this swap. That is a genuine trade, not a free win — exactly the kind of thing a score surfaces that a headline never would. We kept it anyway, because refining wheat strips more than half its B vitamins, 90% of the vitamin E and virtually all the fiber, and because the peas and mushrooms bring folate part of the way back on their own.
Made last instead of third, this same swap is worth 5 points rather than 3 — putting refined pasta back into the finished recipe drops it from 64 to 59. If whole wheat is a bridge too far, the pasta substitutes guide ranks the alternatives from easiest swap to biggest upgrade.
4. Salt the pasta water with a lighter hand
- Swap: Water salted the usual way (about 1 tablespoon of fine salt per 2 quarts) → half that. We modeled 4 g of absorbed salt becoming 2 g
- Score impact: +5 points (56 → 61)
- What it changes: Sodium falls from 1,140 mg to 950 mg per serving and the caution drops from very high to high
- What it costs you: Nothing you will taste, in this specific dish. Salting pasta water heavily is good advice when the sauce is mild. Carbonara's sauce is cured pork and Pecorino Romano
This is the closest thing to five free points in the post, and most people skip it because "salt the water like the sea" has been repeated so often that it stopped feeling like a judgment call. It is still a judgment call: pasta absorbs roughly its own weight in water as it cooks, so the salt concentration of the pot lands directly in the finished dish.
The finding worth taking away, though: made first, on the untouched original, this same cut is worth exactly 1 point (33 → 34). It is worth 5 here. A dish carrying two very-high cautions does not reward you much for easing one of them slightly — you have to move the big levers before the small ones start paying.
5. Ease the pecorino back by a quarter
- Swap: 3 1/2 oz (100 g) Pecorino Romano → 2 1/2 oz (75 g)
- Score impact: +3 points (61 → 64)
- What it changes: Saturated fat falls to 10.6 g per serving and sodium eases further, from 950 mg to 860 mg
- What it costs you: A little of the sharp salty edge. Grate it on the finest holes you have and it goes further than you expect
And now the finding that made us keep most of the cheese. On the original recipe, cutting the pecorino from 100 g all the way down to 60 g — a 40% cut, far bigger than the one we ended up making — moved the score by zero points. Not one. The dish was so dominated by the guanciale and the empty plate that the cheese was simply not the thing holding it back.
Only once the vegetables were in, the pork was halved and the water was under control did the cheese start to matter, and even then a modest 25% trim was worth 3 points. That is the argument for working in order rather than attacking the most obvious-looking ingredient first. For a sharper cheese that goes further per gram, our Parmesan substitutes guide covers how the hard-cheese options behave in a sauce.
Take the Guesswork Out of Eating Well
Eat Well Planner helps you organize your favorite recipes, plan balanced meals, and automatically generate shopping lists — all in one place. Whether you're tracking macros, managing dietary restrictions, or just trying to stop asking "what's for dinner?", we've got you covered.
Our AI-powered tools can adapt any recipe to your dietary needs, help you discover new meals you'll love, and even log your nutrition effortlessly. It's meal planning made simple.
Start Organizing Your Meals — FreeWhat we kept (on purpose)
All the eggs, including the extra yolk. The yolks are the sauce. There is no version of this dish that survives losing them, and the score agrees — see the rejected swaps below.
Real guanciale. Interesting wrinkle: swapping the 2 1/2 oz of guanciale for the same weight of pancetta scores 69, five points better than our published 64, because pancetta is a leaner cut. We still wrote the recipe with guanciale, because it is the traditional cut and its rendered fat is what the mushrooms cook in. But if your store only carries pancetta, you are not settling — you are getting a slightly better number.
No cream. Not purely for tradition's sake. Cream is used outside Italy mainly because it makes the sauce more stable — it is insurance against curdling, not flavor. Learn the tempering step instead and you get both a better sauce and a better score.
Where we stopped. Take the guanciale out entirely, replace it with more mushrooms, and the score jumps to 82 — eighteen points above where we finished. We did not publish that recipe, because a pasta of mushrooms, peas, egg and pecorino is a perfectly nice dinner that is not carbonara. Two cautions do remain on our version: saturated fat at 45% DV and sodium at 37% DV, both downgraded from very high. That is the honest ceiling for a bowl of pasta built on cured pork and hard sheep's cheese, and we would rather give you a 64 you will cook than an 82 you will not.
The healthier version: full recipe
Nutrition Score: 64/100. Serves 4. About 30 minutes.
- 14 oz (400 g) 100% whole wheat spaghetti
- 2 1/2 oz (75 g) guanciale or pancetta, cut into 1/4-inch batons
- 8 oz (225 g) cremini mushrooms, sliced thin
- 1 1/2 cups (225 g) frozen green peas
- 3 large eggs plus 1 large egg yolk
- 2 1/2 oz (75 g) Pecorino Romano, grated on the finest holes (about 3/4 cup)
- 2 teaspoons coarsely ground black pepper, plus more to finish
- About 1 tablespoon fine salt for 4 quarts of pasta water — half the usual
- Bring 4 quarts of water to a boil and salt it lightly, about 1 tablespoon of fine salt for the whole pot.
- In a bowl, whisk the eggs, extra yolk, two thirds of the pecorino and all the black pepper into a thick, gritty paste. Set it next to the stove.
- Put the guanciale in a cold, wide skillet and set it over medium-low heat. Cook 8 to 10 minutes, stirring now and then, until the fat has rendered out and the pieces are crisp. Lift them out with a slotted spoon and set them aside, leaving all the fat in the pan.
- Turn the heat to medium-high and add the mushrooms to the rendered fat. Cook 8 to 10 minutes, stirring only occasionally, until they have released their water, the pan is dry again and the edges are deeply browned. Work in two batches if the pan is more than a third full. Turn off the heat.
- Meanwhile, cook the spaghetti one minute shy of the package time, adding the frozen peas to the pasta pot for the last two minutes.
- Reserve 1 1/2 cups of the pasta water, then drain the pasta and peas.
- Tip the pasta and peas into the skillet with the mushrooms and toss to coat, with the heat still off.
- Temper the eggs: whisk 1/4 cup of the hot pasta water into the egg mixture in a slow stream, whisking constantly, until it loosens into a pourable cream.
- Check that the pan is off the heat and no longer sizzling, then pour the egg mixture over the pasta and toss hard and continuously for 30 to 60 seconds, adding pasta water a splash at a time, until the sauce turns glossy and coats every strand.
- Fold in the crisp guanciale and the remaining pecorino. Finish with more black pepper and serve immediately, in warmed bowls.
Step 9 decides everything. Egg yolk proteins begin to set at 149 to 158F, and whole egg between 144 and 158F, well below a simmer — so the pan has to be genuinely off the heat, and the starchy pasta water is what buys you margin. Starch is added to custards specifically to slow coagulation and help prevent overcooking, and pasta water is doing exactly that job here. If the sauce looks tight, add more water. If it looks loose, keep tossing.
Per serving, original versus improved:
- Nutrition Score: 33 → 64
- Calories: 777 → 666, on a noticeably bigger plate
- Protein: 30.9 g → 31.2 g (unchanged, on half the pork)
- Fiber: 3.5 g → 10.6 g (12% DV → 36% DV, an excellent source)
- Total fat: 37.5 g → 25.2 g
- Saturated fat: 16.7 g → 10.6 g (71% DV very high → 45% DV high)
- Sodium: 1,480 mg → 860 mg (64% DV very high → 37% DV high)
- Plant points: 0.25 → 3.25
The sub-scores move further than the headline number: gut health 23 → 62, heart health 27 → 60, weight management 47 → 81, longevity 24 → 57. The finished dish is an excellent source of eighteen nutrients, including niacin at 106% DV, phosphorus at 103%, iron at 83% and fiber at 36%.
Swaps we tested and skipped
- An extra egg white in the custard: 0 points. The most commonly recommended carbonara lightening trick, and on our finished recipe it moved the score from 64 to 64. It adds about a gram of protein per serving and makes the sauce slightly less rich. If you like it, keep it — just know it is a texture preference, not a nutrition upgrade.
- A tablespoon of olive oil: +1 point, then rejected. Tested while the vitamin E gap was still open, it scored 57 against 56 — and pushed saturated fat back up rather than down. With half the guanciale you still get plenty of rendered fat to cook in. Skip it. (For dishes where it does earn its place, see the olive oil substitutes guide.)
- Asparagus instead of peas: 4 points worse. 52 against 56 at the same point in the build. Asparagus brings more vitamin K, peas bring more fiber, protein and vitamin C, and the score prefers the peas. Asparagus tastes lovely in it — it just is not the better swap.
- Red lentil pasta instead of whole wheat: 66, and still skipped. Two points better than our recipe, and it takes protein from 31.2 g to 40.4 g per serving, which is genuinely impressive. But legume pasta releases far less of the starch that carbonara's emulsion depends on, and it does not hold a bite the way spaghetti does. Two points is not worth risking the sauce. If protein matters more to you than texture, it is a real option.
- Cutting the pecorino to 60 g: 67. Three points beyond where we stopped. We left it out of the recipe because at that point you are grating 15 g of cheese per person into a dish whose entire identity is cheese and egg. Your call — the app will show you the same number if you want to make it.
Make it fit other diets
Gluten-free: use a brown rice or chickpea spaghetti, and reserve more pasta water than you think you need — gluten-free pasta water is starchier and the sauce comes together faster. Vegetarian: drop the guanciale, take the mushrooms up to 12 oz, and add 1/2 teaspoon of smoked paprika plus a splash of soy sauce to the pan for the cured-meat note; also swap the Pecorino Romano for a vegetarian hard cheese, since traditional pecorino is made with animal rennet. In Eat Well Planner, the AI Recipe Chat and Recipe Variations handle either of these in one step with the full recipe already in context, so you get a rewritten recipe rather than a list of hints.
Do this to any recipe you love
None of the numbers in this post were estimated. We built the original in Eat Well Planner, read its Nutrition Score, then used the Recipe Playground to make one change at a time and watch the score move — which is how we found out that cutting the cheese first was worth nothing and cutting the salt first was worth a single point.
You can do the same to the recipe you actually cook. Import it from a URL, an Instagram reel or a YouTube video, look at what the score flags, and let Make It Healthier propose the swaps — every suggestion runs through a calculator that verifies the real nutritional gain before you ever see it. You are not being told a swap is healthy; you are being shown what it is worth in your dish. Then keep whatever you want to keep. The dish you love is allowed to stay the dish you love. It is just allowed to score better while it does it.