Direct Answer
Skim milk produces the stiffest, longest-lasting foam. Whole milk produces the richest-tasting foam, but looser and faster to collapse. Oat milk (specifically a "barista" blend) is the closest non-dairy match to dairy foam performance. Almond and rice milk froth the least reliably of the common options, because they contain the least protein to hold the foam structure together. Which one is "best" depends on whether you're optimizing for foam stability or drink flavor — they trade off against each other.
Why Milk Type Changes Foam Performance
Foam depends on two things in the milk: protein (which traps air bubbles) and fat (which affects bubble size and how the foam feels). More protein relative to fat generally means stiffer, longer-lasting foam. More fat generally means creamier texture and richer flavor, at the cost of foam stability — fat molecules interfere with the protein's ability to hold air as tightly. This is why skim and whole milk sit at opposite ends of the same trade-off: skim has proportionally more protein and almost no fat, whole has less protein relative to its fat content.
Whole Milk
Foam performance: loose, creamy bubbles that taste rich but collapse faster than lower-fat options — often within a minute or two if not used quickly.
Best for: flavor-first drinks where foam texture is secondary — hot chocolate, a casual latte you're drinking right away.
Note: whole milk foams noticeably better warm than cold; if making cold foam specifically, expect a thinner result than you'd get from the same milk heated. See hot foam vs cold foam.
Skim / Low-Fat Milk
Foam performance: the stiffest, longest-holding foam of any dairy option — proportionally more protein and almost no fat to interfere with bubble structure.
Best for: anyone prioritizing foam that holds its shape, including for latte art or drinks that sit for a few minutes before being consumed.
Trade-off: thinner mouthfeel and flavor. Whole milk foams worse and tastes better doing it. Nobody has solved this. Pick a side.
Oat Milk (Barista Blend Specifically)
Foam performance: close to dairy — barista-formulated oat milks are specifically reformulated with added protein and stabilizers to foam reliably, and it shows. Regular (non-barista) oat milk performs noticeably worse.
Best for: anyone avoiding dairy who still wants foam performance close to whole milk's texture.
Note: the "barista" labeling isn't marketing fluff here — it's the actual difference between a milk that froths and one that mostly doesn't.
Almond Milk
Foam performance: thin and short-lived regardless of method or equipment — almond milk simply doesn't contain enough of the protein foam depends on.
Best for: flavor and low calories in the drink itself; not a milk to choose if foam quality matters to you.
Note: more frothing time doesn't fix this. It's a composition limitation, not a technique problem — see why is my milk not frothing if you're troubleshooting a specific batch that isn't foaming at all.
Comparison Table
| Milk type | Foam stiffness | Foam duration | Flavor richness | Best use case |
|---|---|---|---|---|
| Whole | Low | Short | High | Hot chocolate, casual lattes |
| Skim/low-fat | High | Long | Low | Latte art, foam-forward drinks |
| Oat (barista) | Medium-high | Medium-long | Medium | Dairy-free with real foam |
| Oat (regular) | Low | Short | Medium | Not recommended for frothing |
| Almond | Low | Very short | Low-medium | Flavor only, not foam |
Which Frother Should You Use?
Milk choice matters more than frother choice for foam quality — a $9 handheld with skim milk will out-foam a $200 machine with almond milk. If you've settled on a milk type and want the frother to match, any of the methods in how to froth milk at home work across all these milks; equipment doesn't change what a given milk type is mechanically capable of. If you own no frother at all, the no-equipment methods work with every milk listed here, and microfoam is easiest to learn on whole milk.
Sources
- USDA FoodData Central — protein and fat content by milk type



