Substitute for milk in sauces

Quick answer

For most milk-based sauces, unsweetened plain oat milk or unsweetened plain soy milk is the most reliable 1:1 swap—both emulsify cleanly and don't break under heat. For richer sauces like béchamel or mornay, half-and-half diluted with water (3 parts half-and-half to 1 part water) gives a closer result to whole milk in body and fat content.

Some links below are affiliate links. As an Amazon Associate, AltPantry earns from qualifying purchases at no extra cost to you.

Rank Substitute Ratio (replaces 1 cup milk) Notes
#1 Unsweetened plain oat milk 1:1 (equal volume) Oat milk has a neutral flavor and enough body to build a sauce roux without going grainy or separating. It holds heat better than most plant milks, making it reliable for béchamel and cheese sauces. Avoid flavored or sweetened versions—they will noticeably alter the flavor of any savory sauce.
#2 Unsweetened plain soy milk 1:1 (equal volume) Soy milk has the highest protein content of common plant milks, which helps it behave more like dairy milk in a starch-thickened sauce. It can take on a faint beany note in very lightly seasoned sauces, but in a well-seasoned béchamel or cheese sauce this is rarely detectable. Use only unsweetened, unflavored varieties.
#3 Half-and-half diluted with water 3 parts half-and-half + 1 part water to equal the full milk volume (e.g., 3/4 cup half-and-half + 1/4 cup water per 1 cup milk) This is the best option when you have half-and-half but no whole milk. The dilution brings the fat percentage close to whole milk (roughly 3.5%). Undiluted half-and-half produces a noticeably richer, heavier sauce—fine for cream sauces, but it will unbalance a standard béchamel ratio.
#4 Heavy cream diluted with water 1 part heavy cream + 2 parts water to equal the full milk volume (e.g., 1/3 cup heavy cream + 2/3 cup water per 1 cup milk) Works in a pinch but is noticeably fussier—the fat-to-water ratio is harder to dial in, and under high heat the emulsion can break if the sauce is agitated too much. Best reserved for thick, heavily seasoned sauces where some extra richness is acceptable. Not recommended for delicate béchamel where balance matters.
#5 Unsweetened plain almond milk 1:1 (equal volume) Works in a pinch but produces a noticeably thinner sauce—almond milk has very low protein and fat, so a roux-based sauce may need slightly more flour (add 1/2 tsp extra per cup of liquid) to reach the same consistency. The flavor is mild enough to disappear in a seasoned sauce, but the thinner body is a real limitation. Not recommended for mornay or any sauce where texture is central.

Why sauces is different

In sauces, milk isn't just moisture—it's structural. In a roux-based sauce, milk proteins interact with the starch network to create a smooth, cohesive body. Fat content determines richness and mouthfeel, and the protein level affects whether the sauce stays emulsified under heat. A substitute that's too low in fat or protein produces a sauce that's thin, gluey, or prone to breaking in ways that don't show up in other milk applications like pancakes or mashed potatoes.

Common mistakes

The most common mistake is using a sweetened or vanilla-flavored plant milk—even a small amount of added sugar or vanilla will push a savory sauce off-balance in a way that's hard to correct. The second mistake is substituting a very thin, low-fat liquid like unsweetened almond milk without adjusting the roux ratio, which yields a sauce that never fully thickens. Finally, adding any cold substitute too quickly to a hot roux causes lumping; always add the substitute gradually, whisking constantly, regardless of what it is.

Milk’s role in sauces is primarily structural and flavor-neutral—it thickens via the roux mechanism, adds a mild background richness, and keeps the sauce from tasting starchy or flat. That’s why the most reliable substitutes here are the ones that most closely approximate milk’s fat and protein balance rather than those that just add liquid volume. Oat milk and soy milk lead the list because they’ve been tested repeatedly in roux-based sauces by serious home cooks and food publications, not because they’re trendy.

For dairy-based swaps using what’s already in the fridge—half-and-half or heavy cream—the dilution ratios above matter more than most guides acknowledge. Using either undiluted produces a sauce that’s richer than intended, which sounds fine until you’re trying to build a balanced lasagna béchamel or a mac and cheese sauce where the milk-to-cheese ratio was calculated for whole milk. Diluting correctly keeps the fat level in the right range and prevents the sauce from feeling heavy in the finished dish.

Frequently asked questions

Can I use unsweetened oat milk to make béchamel?
Yes. Use it at a 1:1 ratio in place of whole milk and follow the standard roux method—equal parts butter and flour, then add the oat milk gradually while whisking. The result is slightly less rich than dairy béchamel but holds together well and doesn't have an off flavor in a seasoned sauce.
Will plant milk cause a cheese sauce to break or get grainy?
The cheese itself is the main variable in breaking or graininess—overheating or using pre-shredded cheese (which contains anti-caking agents) causes those problems regardless of what liquid you use. Oat milk or soy milk at 1:1 both provide enough body to support a stable cheese sauce as long as you melt the cheese off direct heat and don't boil it.
Can I use water instead of milk in a béchamel or white sauce?
Technically yes, but the result is noticeably inferior—it will taste flat and the sauce body will be thinner. This is more of a last-resort workaround than a real substitute. If water is your only option, increase the roux slightly (add 1 tsp extra flour per cup of water) and compensate with more butter or a bay leaf during simmering to add some depth.

← Back to all milk substitutes