What’s the Best Milk for Frothing for Coffee & Cappuccinos?
Whole dairy milk gives you the best foam for cappuccinos and lattes, full stop. It’s got the ideal ratio of protein to fat to make stable, sweet microfoam. But if you’re going non-dairy, oat milk is the closest substitute I’ve found after steaming probably 200 pitchers of the stuff over the past three years.
Here’s the thing nobody tells you: fat content isn’t actually the hero. Protein is. Fat adds mouthfeel and helps stabilize bubbles once they’re formed, but it’s the protein structure (specifically casein and whey) that traps air and builds that glossy, paint-like microfoam texture sitting on top of a cappuccino. That’s why skim milk actually foams up bigger and faster than whole milk. It’s got proportionally more protein relative to fat. It just doesn’t taste as good, and the foam collapses faster because there’s no fat to stabilize it.
Dairy Milk: Ranked by Steaming Performance
I tested five dairy options side by side using the same machine (a Breville Barista Express with the stock steam wand) and the same technique each time: pitcher tilted, tip just below the surface until I heard the hiss, then submerged to spin and heat to 150°F.
| Milk Type | Foam Quality | Taste | Best For |
|---|---|---|---|
| Whole Milk (3.25% fat) | Dense, glossy, stable for 5+ minutes | Rich, sweet | Cappuccinos, lattes, latte art |
| 2% Milk | Good volume, slightly less stable | Lighter, still sweet | Everyday lattes |
| Skim Milk | Huge volume, foams fast, collapses fast | Thin, watery | Dry cappuccinos only |
| Half & Half | Barely foams, too much fat | Very rich | Not recommended for foam |
| Raw/Unhomogenized | Inconsistent, varies by batch | Grassy, variable | Skip it for steaming |
Whole milk hits the sweet spot the SCA’s milk-texturing guidance points to: enough protein for structure, enough fat to keep things stable and taste good, and not so much fat that bubbles can’t form in the first place. If you’ve ever tried steaming heavy cream thinking “more fat, more foam,” you already know how that goes. It doesn’t foam. It just gets hot and greasy.
Non-Dairy Milk: What Actually Works
This is where most people get burned, usually literally: scorched, split milk that tastes like wet cardboard. Plant milks don’t have casein. They’ve got different proteins (or none at all, in some cases), different fat structures, and additives that change how they behave under steam. Not all of them are built for this.
| Plant Milk | Foam Quality | Why It Works (or Doesn’t) |
|---|---|---|
| Oat Milk (barista blend) | Excellent — close to whole dairy | Added oil and stabilizers mimic dairy fat structure |
| Soy Milk (barista blend) | Good, close behind oat | High natural protein content, holds structure well |
| Almond Milk | Poor to mediocre | Low protein, foam is thin and separates quickly |
| Coconut Milk | Mediocre | High fat but wrong fat type, foam is unstable |
| Rice Milk | Poor | Minimal protein, barely foams at all |
Notice the pattern: “barista blend” versions of oat and soy milk consistently outperform the regular carton. Manufacturers like Oatly and Califia Farms reformulate these specifically with added fats and stabilizers to replicate dairy’s steaming behavior. That’s not marketing fluff. It’s food science, and you can taste the difference in the pitcher. I’ve had regular oat milk split and curdle at 140°F. Barista blend oat milk steams clean to 160°F without issue.
The Real Bottleneck
Nine times out of ten, when someone tells me their foam looks like soap bubbles instead of wet paint, the milk isn’t the problem. Their technique is.
Here’s what I check first, before we even talk about milk brand:
- Milk temperature at the start. Cold milk straight from the fridge (around 38°F) gives you more working time to incorporate air before it gets too hot to stretch. Room-temp milk steams too fast and you’ll overshoot texture.
- Pitcher position. Tip of the wand should sit just below the surface, off-center, to create a whirlpool. If you’re burying the tip too deep, you’re just heating milk, not texturing it.
- Stretch phase timing. You want that hissing “paper tearing” sound for the first 3-4 seconds only, while the milk’s still cool. After that, submerge the tip fully and let it spin without adding more air.
- End temperature. Stop at 150-155°F. Breville’s own technique guides and most SCA-aligned training point to this range — above 160°F you start breaking down proteins and the milk tastes scalded, flat, almost chalky.
I’ve watched people pour $14-a-carton oat milk and still get flat foam because they let it rip past 170°F. Fix the technique before you blame the milk.
What I Buy for My Own Kitchen
For dairy, I keep whole milk on hand — organic if I’m buying for guests, store brand if it’s just me on a Tuesday morning. The fat content matters more than the organic label for foam performance, so don’t overpay there.
For non-dairy, I buy Oatly Barista Edition specifically. Califia Farms Barista Blend Oat is a close second and usually a dollar cheaper. If someone in your house is allergic to oats, go with a barista-blend soy milk before you reach for almond or coconut. Protein does the heavy lifting there, and almond and coconut just don’t have enough of it.
Fellow’s steaming guides note that milk closer to its sell-by date actually foams slightly better than a just-opened carton, because the proteins haven’t fully set. Doesn’t mean buy old milk on purpose. But don’t stress about grabbing the newest carton at the back of the shelf either.
Skip ultra-filtered “high-protein” milks like Fairlife for foaming. They’re built for shelf life and protein marketing, not microfoam texture. I’ve gotten inconsistent, overly stiff foam out of it more than once.
— Nora Voss, Home Barista & Coffee Equipment Reviewer

Leave a Reply