Alternative Milk Chemistry

For those people who can’t tolerate cow’s milk there are now lots of good options; we started with Barista Almond Milk for our morning coffee, but I couldn’t work out why the word “Barista” increased the price from $2.00/l to $4.50/l for them to add 50 mg of cheap powder. The chemist in me wanted to experiment.

TL;DR

  • Buy some potassium bicarbonate online
  • Make a 0.5% solution in water
    • 0.5g (1/8 teaspoon) potassium bicarbonate in 100ml water
    • Label it and keep it next to the coffee machine
  • Add 5ml (1 teaspoon) to each espresso shot before adding the non-barista alt-milk

What’s in Barista milks?

Australia’s Own

This the ingredient list of Australia’s Own Barista Almond Milk, which makes excellent tasting coffee, but costs $4.50 a litre, and it’s not even organic.

Ingredient (in order of appearance)Amount (approx.)What it actually does in the milkWhy it matters for espresso / frothingClean-label verdict
Australian water~94–95 %Base solventClean
Australian almonds3.5 %Flavour + tiny bit of fat/proteinBarely enough for body or foamClean
Sugar1.7 g / 100 mlSweetness + slight viscosityRounds out acidity, tiny foam helpNatural but added
Vegetable oil (canola or sunflower)~0.5–1 %Adds fat so it froths and feels creamyMain reason it steams like dairyProcessed filler
Maltodextrin (from corn)~1–2 %Cheap thickener + bulking agentGives body, stops separationProcessed filler
Potassium citrate<0.5 %pH buffer (raises pH)Stops curdling on light-roast shotsClean / useful
Dipotassium phosphate<0.5 %Stronger pH buffer + protein stabiliserThe #1 reason it never curdlesClean / useful
Gellan gum (E418)<0.2 %High-tech thickenerCreates stretchy, glossy micro-foamSynthetic gum
Xanthan gum (E415)<0.2 %Thickener + stabiliserHolds foam structure for minutesSynthetic gum
Locust bean gum (E410)<0.2 %Synergistic thickener with xanthanImproves texture, prevents whey-offNatural-ish gum
Calcium carbonate<0.2 %Fortification + mild bufferMarketing “calcium” claimClean
Sunflower lecithin<0.2 %EmulsifierKeeps oil + water mixed, better foamNatural-ish
Salt<0.2 %Flavour enhancerBrings out nutty notesClean

PureHarvest

The budget alternative that works almost as well is: PureHarvest Organic Almond (Original) with only 5 ingredients; and it’s ORGANIC! However, on occasion it will curdle if pushed. Read on to find out why.

Ingredient (in order of appearance)Amount (approx.)What it actually does in the milkWhy it matters for espresso / frothingClean-label verdict
Filtered water~89 %Base solventClean
Certified Organic Whole Activated Almonds7 %Flavour + natural fat/protein sourceProvides base creaminess and some protein for minimal foam structureClean
Certified Organic Rice Syrup~1–2 %Natural sweetener + mild thickenerAdds subtle sweetness and slight viscosity to round out acidityNatural
Plant Calcium<0.2 %Fortification + mild mineral bufferAdds calcium for nutrition; slight pH stability helpClean
Sea Salt<0.2 %Flavour enhancer + electrolyte balanceEnhances nutty notes and helps stabilize emulsions slightlyClean

Honorable mention: Mandolé Orchard

It would be remiss to not mention Mandolé Orchard Fresh Australian Barista Almond Milk as a really high quality, simple option with no nasties (it’s not organic, but it is a family farm in Australia). It’s more expensive at ~$7/L, but it’s also bullet proof; they used Dipotassium phosphate as a buffer with cane sugar and sea salt. Too posh for me, but lovely.

Why does alternative milk curdle?

The proteins break down so that the fats separate out – it curdles just like cows milk when you add lemon juice. We’ve all been there – you order a coffee, and it arrives with the rising-falling storm in the glass, your heart sinks ‘cos you just know that you’re gonna end up with floating curds on top and a dark, bitter liquid underneath.

This could be due to:

  1. making the milk too acidic
  2. heating the milk too much
  3. something left over in the glass; let’s not go there!

A deep dive into the chemistry of coffee…

A quick note on pH:

  • Acid is below pH 7 (and down to pH 1)
  • Neutral is pH 7
  • Alkali is above pH 7 (and up to pH 14)
  • Each 1 point on the scale is 10 times more acidic or alkali
  • A buffer tends to hold a pH at a certain level when acid or alkali is added (it mops up excesses, until it’s used up)

What pH is espresso?

Espresso typically has a pH of 5.0–5.8, most often around 5.2–5.5.

  • Lighter roasts → more acidic → lower pH (closer to 5.0)
  • Darker roasts → less acidic → higher pH (closer to 5.8) Acidity comes mainly from chlorogenic, citric, and malic acids.

At what pH does almond milk curdle? (at 60°C)

Non-barista almond milk (no added stabilisers) tends to begin to curdle below pH 5.0–5.2 at 60°C.

  • The proteins (small amount of almond protein + emulsifiers) denature and aggregate when pH drops near their isoelectric point (~pH 4.5–5.0) and heat accelerates this.
  • At 60°C, curdling threshold is roughly pH ≤ 5.1 for the shot, which translates to final drink pH ≤5.2–5.3 using unstabilised almond milk.
  • Barista versions tolerate down to pH 4.6 due to “buffers” (often phosphates).

So: Your espresso shot needs to be > pH 5.1 to avoid curdling at 60°C.

What levers can I play with to stop curdling?

  • Limit the amount of coffee – consider pulling a ristretto, especially if it’s a double or 3/4 latte
  • Use a darker roast
  • Don’t heat the milk too much: 55–60°C (not hotter)
  • Add an alkali to the coffee shot BEFORE adding the milk – a *tiny* amount to balance pH
  • Add a tiny bit of honey to protect the proteins
  • Pour the milk in FASTER at first, not slower
    • Slow pour gives the first milk longer contact with pure espresso acid leading to micro-curdles that start the cascade

How much potassium bicarbonate (KHCO₃) to add?

Goal: Raise 20 g espresso from ~pH 5.0 to ~pH 5.4–5.6 (safe zone)

Potassium bicarbonate is a strong buffer used in plant milks:

  • 1 g KHCO₃ in 1 L water raises pH by ~2.5 units (from 5.0 → 7.5)
  • But espresso is buffered by its own acids so the impact is muted

We need 25 to 30 mg potassium bicarbonate (use a 0.01 g precision scale).

  • Tip: Pre-make a 0.5% solution (0.5 g in 100 ml water) → use 5 ml of solution per 20 g shot.

Practical Dosing

You want 25 mg = 0.025 g, which is pretty much impossible without a micro-spoon.

  • Make a 0.5% solution
    • 0.5 g powder dissolved in 100 ml water
      • 0.5g is 1/8 teaspoon
      • 0.5g is a small pinch between thumb and index finger
  • Add 5ml per shot
    • just under a teaspoon of liquid
      • a teaspoon is 5ml

Label the bottle “Espresso Buffer – 5 ml per shot” and leave it beside the machine.

What if I don’t have potassium bicarbonate in the cupboard?

Order some on the internet – it’s pretty common for making bread and wine. In the meantime you can just use Baking Soda (note: that is not Baking Powder) – just use half as much.

AlternativeDose per 20 g espressopH LiftTaste ImpactNotes
0. Potassium bicarbonate (KHCO₃)25 mg+0.3 to +0.5Neutral → faint mineral-water creaminessGentlest true buffer
1. Sodium bicarbonate (baking soda, NaHCO₃)15–25 mg+0.3 to +0.6Very mild salty → neutral at low doseBest overall substitute
2. Dipotassium phosphate (DKP, K₂HPO₄)25–35 mg+0.4 to +0.7Creamy, slightly sweetClosest to barista milk buffers
3. Sodium citrate30–40 mg+0.3 to +0.5Tangy → neutralSlightly more acidic buffer

Why add Potassium bicarb to the espresso?

Adding it to the espresso directly (rather than the milk) neutralises the espresso, so that when you start to pour the milk in it is already a good pH.

If you add the bicarb to the milk it will be diluted, and very little will be available to neutralise the espresso as you gradually add the milk – so the milk will start to curdle before you have managed to add it all. The slower you pour, the worse it will be.

Will it affect the taste?

Yes, a little bit, but it’s a trade off. Over 50 mg in 20 g espresso will taste soapy/bitter, but 25 mg should just mimic barista milk.

If you have bought an expensive light roast Ethiopian Yirgacheffe then some of the acidity will be dampened. Wash your mouth out with soap you philistine! Oh…

Bonus Tip – Latte Art Without the Junk

If you actually care about pouring rosettes or hearts, the milk itself is now the limiting factor. Your 7 % organic almond milk steams okay, but its foam still collapses quickly because it has almost no natural emulsifiers.

When you open a fresh 1-litre carton:

  • add 1.4 g of sunflower lecithin powder (≈ one slightly heaped ⅛ teaspoon) straight through the spout.
  • Close the cap and shake the carton hard for 10–12 seconds (like mixing paint).

Do it once per carton and you’re done:

  • Glossy, stretchy micro-foam that holds latte art for 2–3 minutes
  • Zero curdling (your KHCO₃ buffer still handles that)
  • Zero taste change at this dose

Hard shaking a cold carton will not curdle the milk – curdling needs low pH + heat, and you have neither here. Lecithin just organises the fat you already have into stable, elastic bubbles when you steam it later.

Final Thoughts

If you’re a coffee nerd you probably have lots of toys already, so the opportunity to buy a set of measuring spoons down to 1/16 of a teaspoon, or a set of 0.01g drug scales won’t be missed!

Try it and report back in the comments – what’s your go-to roast?