Drinks & uses

Dairy-Free Cold Foam: How to Make It, and Which Plant Milk Foams

The method takes two minutes. The harder question is which carton to buy, so we read the labels of 16 plant drinks and three dairy references.

Written by Elena Ricci, Founder & lead writer Published Updated

Quick answer

To make dairy-free cold foam, froth 120 ml of cold plant milk with 2 tbsp of flavored syrup for 30 to 45 seconds, then float it on iced coffee. Oat is the best-evidenced choice: a 2024 study in Soft Matter found it produced the longest-lasting foams of the eight milks it compared. Across four brands that sell both a barista and a standard version of the same drink, the barista edition carries more fat but not reliably more protein: Oatly declares 3 g of protein in both, Pacific gains 1 g, and Minor Figures' barista oat declares 0.7 g per 200 ml against 2.1 g in its everyday oat.

Cold foam is cold milk whipped until it holds its shape, and you can make it without dairy in about two minutes. Froth 120 ml of cold plant milk with a couple of tablespoons of syrup for 30 to 45 seconds, then pour it over iced coffee across the back of a spoon so it floats. The method is the easy part. Which carton you start with decides whether the foam stands up or collapses into the glass, and the label is a poor guide to that, so we read 20 of them.

The quick version

Dairy-free pistachio cold foam

Makes 2 drinksActive 5 min

Ingredients

Method

  1. Chill the plant milk until it is fridge-cold.
  2. Pour it into a tall jar with the syrup and the salt.
  3. Froth 30 to 45 seconds, until it thickens and roughly doubles.
  4. Fill a glass with ice and cold brew, leaving 2 cm at the top.
  5. Pour the foam over the back of a spoon so it floats.

A handheld frother is the cheapest tool that works and costs about the same as two coffee-shop drinks. A sealed jar shaken hard for a minute gets most of the way there. A blender works in a few seconds, and over-blending is the usual mistake: you want a smooth pourable foam, not a head of large bubbles.

Which plant milk makes the best cold foam?

Barista oat milk, of the options sold everywhere. The useful part is that this now has evidence behind it rather than barista folklore. A 2024 study in Soft Matter compared cow and goat milk against six plant milks on an electric frother, and reported that of the eight milks, "oat produces the longest-lasting foams, and rice has the lowest amount and stability of foam."

The same paper found something that matters more here than it looks. Cold foam is not steamed milk, and the ranking changes with temperature. At hot settings the animal milks beat the best three plant milks. At cold settings, which is what a cold foam is, "oat, soy, and almond outperform cow milk in terms of foam volume and lifetime." Rice formed no foam at all cold.

So the common advice to reach for dairy if you want a foam that holds is, for a cold foam specifically, the wrong way round.

What we found on 20 labels

We compiled the declared protein and fat of 16 plant drinks and three USDA dairy references, normalized to 100 ml so they can be compared.

Drink Barista edition Protein /100 ml Fat /100 ml
Skim milk (USDA analytical) no 3.37 g 0.08 g
Whole milk (USDA analytical) no 3.15 g 3.25 g
Heavy whipping cream (USDA analytical) no 2.84 g 36.08 g
Three Trees Organic Unsweetened Pistachio no 1.69 g 3.38 g
Pacific Barista Series Original Oat yes 1.67 g 3.33 g
Elmhurst Barista Edition Pistachio yes 1.67 g 1.88 g
Oatly Oatmilk Barista Edition yes 1.25 g 2.92 g
Oatly Oatmilk Full Fat no 1.25 g 3.75 g
Oatly Oatmilk Original no 1.25 g 2.08 g
Oatly Oatmilk 4 Ingredient no 1.25 g 0.42 g
Pacific Organic Oat Original no 1.25 g 0.83 g
Elmhurst Unsweetened Pistachio no 1.25 g not published
Minor Figures Everyday Oat no 1.05 g 2.15 g
Táche Pistachio Milk Original Blend no 0.83 g 1.46 g
Blue Diamond Almond Breeze Unsweetened Barista yes 0.42 g 1.46 g
Minor Figures Barista Oat yes 0.35 g 2.15 g
Alpro Barista Oat yes not published 3.00 g

Declared label figures, read from the manufacturer's own page on 12 October 2026, except the Three Trees and Táche rows, which were transcribed for our earlier label study in August 2026 and carry that date in the CSV. Per-100 ml figures are our arithmetic from the declared serving, not declared values. Dairy rows are USDA analytical composition per 100 g. Four further products publish no usable panel and sit in the dataset as ingredient-only rows. Full dataset: CSV.

Read down the barista column and the pattern is that there is no pattern. Barista-labeled drinks appear at 1.67 g of protein and at 0.35 g. Two of them sit in the bottom three rows of the whole table.

What does a barista edition actually change?

Four brands in the set sell both a barista and a standard version of the same drink, which is the only honest way to ask the question. Protein moves in three different directions.

Brand Standard Barista Protein Fat
Oatly Oatmilk Original Barista Edition 3 g → 3 g (no change) 5 g → 7 g
Pacific Foods Organic Oat Original Barista Series Oat 3 g → 4 g 2 g → 8 g
Elmhurst 1925 Unsweetened Pistachio Barista Edition Pistachio 3 g → 4 g not comparable
Minor Figures Everyday Oat Barista Oat 2.1 g → 0.7 g 4.3 g → 4.3 g

Declared per cup (240 ml) for the three US brands, per 200 ml for Minor Figures, which publishes on that basis only. Elmhurst's unsweetened line publishes calories and protein and no fat figure, so its fat cannot be compared.

Oatly's two cartons declare the same 3 g of protein, the same 16 g of carbohydrate, the same 2 g of fiber, the same 7 g of sugars, the same sodium and the same calcium. The only difference in the panel is 5 g of fat against 7 g. The only difference in the ingredients list is where one item sits: in the Barista Edition, "low erucic acid rapeseed oil" is its own entry before the "contains 2% or less of" group, and in the Original it falls inside that group. The barista edition is the same drink with the oil pushed above the 2% line.

Minor Figures runs the other way. Its Barista Oat declares 0.7 g of protein per 200 ml where its Everyday Oat declares 2.1 g, so the drink sold for coffee carries about a third of the protein of the one sold for cereal, on identical fat.

Fat is the more consistent move, though not a universal one: it rises in two of the three pairs where it can be compared, by 2 g at Oatly and 6 g at Pacific, and is identical at Minor Figures. Fat alone does not define the category either, because Oatly sells a Full Fat oat drink at 9 g a cup, two grams above its own Barista Edition, and does not market it for coffee.

The ingredient almost all of them share is a buffer

Every barista product in the set whose ingredients we could read declares a phosphate, bar one. Oatly, Minor Figures, Pacific, Elmhurst, Táche and Blue Diamond all list dipotassium phosphate; Alpro lists "Acidity regulator (Potassium phosphates)". The exception is Califia Farms, whose Unsweetened Almond Barista Blend declares the same ingredients as its standard unsweetened almondmilk except for the added vitamins.

A phosphate buffer is not a foaming agent. It holds the drink's pH up when it meets hot acidic espresso, which is what stops a plant milk splitting into curds in the cup. That is a real problem and it is worth solving, and it is a different problem from whether the drink whips. Two brands make the distinction visible in their own range: Pacific's barista oat adds canola oil, dipotassium phosphate and sodium citrate and drops the gums its standard line uses, while Oatly's non-barista cartons carry dipotassium phosphate too, so the ingredient is not what the word "barista" is marking.

Alpro is the one brand in the set that engineers the protein directly. Its Barista Oat lists "Chicory root fibre, Pea protein" after the oat base and the sunflower oil, which is a deliberate addition of a foaming protein from another crop.

Does more protein mean more foam?

In dairy, largely yes. Milk proteins are good at holding an air bubble, and skim milk is the purest delivery of them: at 3.37 g of protein and 0.08 g of fat per 100 g it carries the most protein of anything in the table and almost no fat. That is the composition behind the long-standing frothing advice to reach for the skim carton.

In plant drinks the picture is less tidy, and the honest answer is that nobody has shown protein to be the lever. A 2025 study in Food Systems measured foaming capacity across plant drinks and dairy at both 10 °C and 65 °C and found "a negative correlation of fats with FC of plant-based drinks was found when stirred (p < 0.05)", where FC is foaming capacity and "stirred" means mechanical agitation rather than steam. Protein showed no correlation at all. The authors suggest the gums and stabilizers are doing work alongside the protein, and call for that to be studied directly.

Two things follow, and both should be held loosely. The first is that the ingredient barista editions most reliably add is the one that study associated with worse mechanical foaming, which is exactly how a cold foam gets made at home. The second is that the gums on these labels, the gellan, guar, locust bean and acacia, may matter more than either macronutrient.

That is one study on a small sample, and it measured foaming capacity rather than how long a foam lasts, which is the property you notice on top of an iced coffee. It is a reason to stop repeating "barista means more protein" rather than a reason to believe the opposite.

Pistachio cold foam

A pistachio drink is an unusually good base for this, and the table is the reason. Three Trees' unsweetened pistachio nutmilk declares 1.69 g of protein and 3.38 g of fat per 100 ml, which is more of both than any barista-labeled drink here that publishes both figures. It carries that from nothing but water, pistachios, almonds and salt. Elmhurst's unsweetened pistachio sits at 1.25 g of protein from water, pistachios and salt alone.

That is a consequence of how much nut is actually in the carton: a US pistachio milk computes to roughly 6% nut where an unsweetened almond milk computes to about 2%, and the protein and fat ride along with it. It also means a pistachio milk needs less help from the ingredients list to behave.

For flavor, pistachio syrup dissolves cleanly and is the easier route. A spoonful of pistachio paste gives more body and a fuller flavor, and the body is useful on a leaner plant milk, though it needs a harder froth to break up. Be aware of what you are buying: our audit of pistachio extracts found pistachio named in none of the 13 products that disclose any composition, so an extract is the one flavoring that will not do this job.

The syrup shelf is only a little better, and worth reading before you buy a bottle. Of the 16 pistachio syrups and sauces we read in October 2026, 14 publish a composition and only five name pistachio in any form. Starbucks is in that set twice. Its own Winter FY26 ingredient declaration for Europe gives the pistachio cold foam on its Pistachio Velvet Latte as "skimmed MILK, Sugar, water, skimmed MILK powder, colouring foods (turmeric, spirulina), coconut oil, cocoa butter, natural flavouring, salt", plus an emulsifier, two stabilisers and a preservative, in the label's own spelling. There is no pistachio in it, and the coconut oil and cocoa butter are doing the work a nut milk's own fat does here.

Build the drink

Fill the glass with ice and cold brew first, then float the foam. Pouring the foam in before the coffee mixes the two. Leaving a couple of centimeters at the top gives the foam somewhere to sit.

It works on iced coffee and cold brew, and on an iced pistachio matcha. For the warm equivalent, where steaming rather than frothing is the technique and the ranking of milks reverses, see the pistachio milk latte and pistachio coffee.

If it will not thicken

Work through these in order. Milk temperature is the most common cause and the easiest to fix.

  1. Use milk straight from the fridge. Every figure on this page is about composition, but temperature is what decides whether a given carton foams on a given morning.
  2. Froth for the full 30 to 45 seconds. Stop when the volume has visibly doubled, not before.
  3. Change the carton. An unsweetened almond drink at 0.42 g of protein and 1.46 g of fat per 100 ml has little to trap air with. A rice drink has less, and the Soft Matter study found rice formed no foam at the cold setting.
  4. Add body rather than cream. A tablespoon of pistachio paste thickens the mixture without dairy.

Methodology

What we included. Plant drinks sold in the US or the UK whose manufacturer publishes an ingredients list, a nutrition panel, or both, on its own website. We prioritized brands selling a barista and a non-barista version of the same drink, because a within-brand pair is the only comparison that isolates what the word changes. Three dairy references come from USDA FoodData Central's SR Legacy analytical data rather than from a label.

Where the figures came from. Every plant row except three was read from the brand's own product page on 12 October 2026. The three exceptions are both Táche rows and the Three Trees row, which come from retailer listings transcribed for our August 2026 label study and carry that date in the CSV; neither brand published a panel we could read on its own site. Where a brand publishes no panel at all we record the cells as not published rather than filling them from a retailer, because retailer listings for these products disagree with each other.

The per-100 ml figures are ours, not the manufacturers'. US panels declare per cup (240 ml) and Minor Figures declares per 200 ml, so comparing them requires converting to a common basis. We divided the declared figure by the declared serving. That arithmetic inherits the rounding already in the panel: a declared "3 g" of protein is anything from 2.5 g to 3.5 g under FDA rounding rules, which at 240 ml is a real spread of 1.04 to 1.46 g per 100 ml. The per-100 ml column is therefore good for ranking and poor for fine distinctions, and the 1.25 g shared by five rows is an artifact of four cartons all declaring 3 g rather than evidence that they are identical.

Dairy figures are not comparable in the same way. USDA gives analytical composition per 100 g, not a rounded label figure per 100 ml. Milk is slightly denser than water, so per 100 ml values would run marginally higher. We left them per 100 g and labeled them, rather than converting with a density figure we did not measure.

Limitations. This is a label audit and not a foam test. We did not froth these products or measure any foam, and no claim about how a specific carton performs comes from us: the foam-performance statements on this page are attributed to the two published studies, which tested their own samples and not these products. Panels and formulations change without notice, and a brand page can lag the carton. Oatly's Full Fat ingredients and Elmhurst's panels are published only as label images with text descriptions, which we read but could not verify character by character. Elmhurst's barista page states "3g protein in every serving" in its product copy while its label image declares 4 g; we recorded the label figure and flag the contradiction here. The set is 16 plant drinks and skews to oat, because oat is where the barista category mostly lives. No soy or pea barista drink is in it, and soy is the plant protein the Soft Matter study ranked highest in cold foams, so its absence is the clearest gap.

The dataset

All 20 rows are in a CSV download, free to reuse with attribution.

Columns: product, brand, base, whether it is a barista edition, market, declared serving basis, declared protein, declared fat, protein per 100 ml, fat per 100 ml, whether a phosphate buffer is declared, added oil, added protein, added fiber, gums and emulsifiers declared, the full ingredients list, what the panel discloses, source, source URL and checked date.

Released under CC BY 4.0. Use it, and please link back.

Suggested citation: Ricci, E. (2026). What a barista plant milk changes: declared protein, fat and additives in 16 plant drinks. pistachiomilk.org. https://pistachiomilk.org/pistachio-cold-foam/

Version history

  • 2026-10-12, v2.0. Rebuilt around the 20-row barista label audit. Corrected the page's central explanation, which had stated that protein and fat both trap air and that barista oat milk holds best because plant milks are "lower in the protein that stiffens it". The within-brand pairs show protein does not reliably rise in a barista edition, and the 2025 Food Systems study found fat negatively correlated with foaming capacity under agitation and protein uncorrelated. Added the cold-versus-hot distinction from the 2024 Soft Matter study, which reverses the usual dairy-beats-plant advice for cold foam specifically. Replaced the single bare USDA homepage URL with 15 sourced references. Recipe rewritten dairy-free-first.
  • 2025-08-20, v1.0. First published.

Allergy note

Pistachios are a tree nut. Pistachio paste and most pistachio syrups are tree nut products, and a pistachio milk is unsuitable for anyone with a pistachio allergy. Dairy-free is not the same as allergen-free: check the syrup for added milk if you need it strictly plant-based, and check it for nuts if you are serving someone with a nut allergy.

Frequently asked questions

How do you make dairy-free cold foam?
Froth 120 ml of cold plant milk with 2 tbsp of syrup for 30 to 45 seconds, until it thickens and roughly doubles, then pour it over iced coffee across the back of a spoon. A handheld frother is the cheapest tool that works. A sealed jar shaken hard for a minute, or a few seconds in a blender, will also do it. Start with the milk fridge-cold.
Which plant milk makes the best cold foam?
Barista oat milk is the most reliable of the widely sold options, and a 2024 study in Soft Matter found oat produced the longest-lasting foams of the eight milks it compared. The same study reported that at cold frothing settings oat, soy and almond beat cow's milk on both foam volume and foam lifetime. Rice milk is the one to avoid: it produced the least foam and the least stable foam, and formed none at all at the cold setting.
Does a barista plant milk actually foam better?
It usually foams better, but not for the reason the category name suggests. Across four brands selling both versions of the same drink, the barista edition did not reliably carry more protein. Oatly declares 3 g a cup in both. Pacific and Elmhurst gain 1 g. Minor Figures' barista oat declares 0.7 g per 200 ml against 2.1 g in its everyday oat, so it has about a third of the protein. What rises more consistently is fat, and the one ingredient almost every barista edition shares is a phosphate buffer, which stops the drink curdling in acidic coffee rather than helping it foam.
Can you make cold foam without heavy cream?
Yes, and every version on this page does. Heavy cream is the usual shortcut because it whips at 36 g of fat per 100 g, but it is not what makes a cold foam hold on a plant drink. A barista oat milk at roughly 3 g of fat per 100 ml will foam from a handheld frother on its own, helped by the gums and phosphates already on its ingredients list.
Why won't my cold foam thicken?
Most often the milk is not cold enough, or the frothing stopped too early. Use milk straight from the fridge and froth for a full 30 to 45 seconds, until the volume visibly doubles. If it still will not hold, the carton is the problem rather than the technique: an unsweetened almond or rice drink has little in it to trap air. Switch to a barista oat milk or add a spoonful of pistachio paste for body.
Is pistachio cold foam dairy-free?
The version on this page is. Coffee-shop pistachio cold foam usually is not, because it is normally built on dairy milk or a cream base. Made at home with barista oat milk or a rich pistachio milk, it is fully plant-based. Check the syrup or paste for added milk, and note that a pistachio paste is a tree nut product.

Allergy note: Pistachios are a tree nut. If you have a nut allergy, avoid pistachio milk and pistachio products, and check labels for cross-contamination warnings. More on pistachio allergy, including who has to declare it. This article is general information, not personalized dietary or medical advice.