The best milk substitutes for creamy mac and cheese
You can make mac and cheese without dairy milk by using cream, evaporated milk, half-and-half, or non-dairy liquids like oat milk, cashew cream, or chicken broth. The substitute you choose depends on whether you want the same creamy texture, how much richness you prefer, and whether you need to avoid dairy or certain ingredients.
The most reliable swap is heavy cream—it makes a richer sauce than milk and needs less thickening. If you want something closer to the original, evaporated milk works well because it's already concentrated and creates a naturally thick sauce. Non-dairy options work too, but they behave differently: some are thinner, some separate when heated, and some change the flavor noticeably.
Key Takeaways
- Heavy cream and half-and-half create thicker, richer sauces than milk and may need less flour or cornstarch to reach the right consistency.
- Evaporated milk is shelf-stable and produces a sauce nearly identical to one made with fresh milk, using the same amount in your recipe.
- Oat milk and cashew cream work as non-dairy options, but oat milk can separate when heated and cashew cream requires blending raw cashews with water ahead of time.
- Chicken or vegetable broth thins the sauce but adds savory depth; use it only if you reduce the amount and add extra cheese or butter to compensate.
- Always whisk your thickening agent (flour or cornstarch) with fat before adding any liquid to prevent lumps, regardless of which substitute you use.
Heavy cream and half-and-half for richer sauce
Heavy cream is the easiest swap if you have it on hand. Use it straight from the carton at a 1:1 ratio—if your recipe calls for 1 cup of milk, use 1 cup of heavy cream. The sauce will be noticeably thicker and richer, so you may need to reduce the flour or cornstarch slightly. Start with the same amount of thickening agent your recipe calls for, then add a splash of water if the sauce becomes too thick.
Half-and-half sits between milk and cream in fat content and works the same way as heavy cream, though the sauce won't be quite as thick. Use it at a 1:1 ratio and watch the consistency as you cook—you may need slightly more thickening agent than you would with heavy cream, but less than you'd use with milk.
Both options heat without curdling and won't separate when you add cheese. Cook the roux (flour and fat mixture) over medium heat, whisk in the cream slowly, and stir constantly until it thickens—usually 3 to 5 minutes. The sauce should coat the back of a spoon.
Evaporated milk for a texture close to the original
Evaporated milk is regular milk with about half the water removed, so it's thicker and more concentrated. Use it at a 1:1 ratio—if your recipe calls for 1 cup of milk, use 1 cup of evaporated milk straight from the can. The sauce will be nearly identical to one made with fresh milk because evaporated milk behaves almost the same way when heated.
This substitute is useful if you don't have fresh milk on hand or want something shelf-stable. You can keep unopened cans in the pantry for months. Once you open a can, refrigerate the leftover evaporated milk in a covered container and use it within 3 to 5 days, just as you would fresh milk.
Make the roux and add the evaporated milk the same way you would with regular milk—whisk it in slowly over medium heat and stir until the sauce thickens. The timing is identical, around 3 to 5 minutes. Taste and adjust the salt and pepper at the end, since evaporated milk can taste slightly sweeter than fresh milk.
Oat milk and other non-dairy options
Oat milk is the most reliable non-dairy substitute because it's neutral in flavor and relatively thick. Use it at a 1:1 ratio. The main drawback is that oat milk can separate or break when it reaches a boil, so keep the heat at medium and stir constantly. If the sauce looks grainy or separated, remove it from heat and whisk in a tablespoon of cornstarch mixed with cold water to stabilize it.
Cashew cream makes a rich, creamy sauce but requires advance preparation. Soak 1 cup of raw cashews in hot water for 15 minutes, drain, then blend them with 1 cup of fresh water until completely smooth. Strain through a fine-mesh sieve if you want a silky texture. Use the cashew cream at a 1:1 ratio in place of milk. The flavor is mild and slightly sweet, which works well with sharp cheddar.
Coconut milk (the canned kind, not the beverage) is thick and rich but has a noticeable coconut flavor that doesn't always pair well with cheddar. Use only the cream from the top of the can, mixed with a splash of water to thin it slightly. This works best if you like the coconut-cheese combination or are making a curry-spiced mac and cheese.
Soy milk and almond milk are thinner than dairy milk and can make a watery sauce. If you use them, increase the flour or cornstarch by about 25 percent to compensate. Soy milk is more neutral; almond milk adds a subtle nuttiness that some people enjoy and others find distracting.
Broth for a savory, thinner sauce
Chicken or vegetable broth adds savory depth but makes a thinner sauce because broth has no fat. If you use broth, reduce the amount—start with 3/4 cup of broth for every 1 cup of milk your recipe calls for. Make a roux with extra butter (about 3 tablespoons per cup of liquid instead of 2), whisk in the broth slowly, and stir until it thickens.
The sauce will be less creamy than one made with milk, so add extra grated cheese or a splash of heavy cream at the end to build richness. Taste as you go—broth is salty, so you may not need to add salt separately. This approach works best if you're making a lighter version of mac and cheese or want to stretch a small amount of cheese further.
How to avoid lumps when switching substitutes
Lumps form when flour hits hot liquid without fat to coat the particles. Prevent this by making a roux first: melt butter over medium heat, whisk in flour, and cook for 1 to 2 minutes, stirring constantly. The mixture should look like wet sand. Then slowly pour in your milk substitute while whisking constantly—add it in a thin stream, not all at once.
If lumps do form, strain the sauce through a fine-mesh sieve into a clean pot, pressing gently with the back of a spoon to push the smooth sauce through. Reheat over low heat and whisk in a tablespoon of cornstarch mixed with cold water to thicken it again. This salvages most sauces, though the texture won't be quite as silky as one made without lumps.
Some cooks use cornstarch instead of flour. Mix cornstarch with cold water or cold milk substitute (a slurry) before adding it to the hot roux. This prevents lumps more reliably than flour because cornstarch doesn't need cooking time to thicken—it works when ready when it hits heat.
Adjusting cheese and seasoning for each substitute
Different substitutes have different flavors and salt levels, so taste your sauce before serving and adjust. Evaporated milk tastes slightly sweet, so you may want to add a pinch more salt or a dash of hot sauce. Broth is already salty, so go straightforward on added salt. Non-dairy milks vary widely—oat milk is neutral, but soy milk can taste beany and almond milk adds nuttiness.
The amount of cheese you use also matters. If your sauce is thinner than you'd like (as with broth or thin non-dairy milks), add an extra 1/4 to 1/2 cup of grated cheese to build richness and help thicken the sauce. Sharper cheeses like aged cheddar or gruyère contribute more flavor, so you may need less of them than you would with a mild cheese.
Finish the sauce with a small pinch of nutmeg, white pepper, or cayenne if it tastes flat. These spices brighten the cheese flavor without making the dish taste spiced. Start with a pinch—you can always add more, but you can't take it out.
Frequently Asked Questions
Can I use milk alternatives like almond or soy milk without changing anything else?
Almond and soy milk are thinner than dairy milk, so your sauce will be watery if you use them at a 1:1 ratio. Increase the flour or cornstarch by about 25 percent, or use a thicker non-dairy milk like oat milk instead. Soy milk is more neutral in flavor; almond milk adds nuttiness that doesn't always work with cheese.
What if I don't have any thickening agent like flour or cornstarch?
Use evaporated milk or heavy cream instead of regular milk—both are thick enough that you may not need a thickening agent at all. Melt butter and cheese directly into the hot pasta, then stir in the evaporated milk or cream off the heat. The sauce won't be as smooth, but it will coat the pasta.
Does the substitute change the cooking time?
No. The roux thickens in 3 to 5 minutes regardless of which liquid you use. The only exception is oat milk, which can separate if the heat is too high—keep it at medium and stir constantly. Broth may take slightly longer to thicken because you're using less of it, but the difference is usually under a minute.
Can I mix two substitutes together?
Yes. Mixing a thin substitute (like almond milk) with a thick one (like evaporated milk or cream) balances the texture and flavor. For example, 1/2 cup oat milk plus 1/2 cup heavy cream works well and costs less than using all cream. Experiment with ratios until you find a combination you like.
What if my sauce breaks or looks grainy after I add the cheese?
This usually happens when the heat is too high or the sauce is too acidic. Remove the pot from heat when ready and whisk in a tablespoon of cornstarch mixed with cold water, or stir in a splash of cold milk substitute. If the sauce is still broken, strain it through a fine-mesh sieve and start over with a fresh roux, using the strained liquid.