Reading pH and Acidity Through a Cheese Make
Recipes give times — ripen for 45 minutes, rennet for 30, cut and rest for 10 — but underneath every one of those times is really an acidity target the clock is only estimating. Two batches started identically can reach the same acidity minutes or hours apart, which is exactly why experienced cheesemakers test rather than just watch the timer.
Acidity vs. pH: not quite the same thing
pH measures the concentration of free hydrogen ions in the milk — a direct, instantaneous measure of acidity at that moment. Titratable acidity (TA) instead measures the total amount of acid present by neutralizing a sample with a measured amount of base, which captures both the free acid and some of the "reserve" acidifying capacity still locked in the milk's proteins and minerals. The two move together but aren't identical, and traditional dairy testing has long relied on titration specifically because it doesn't require an electronic meter — a small syringe or burette, a standardized sodium hydroxide solution, and a color-changing indicator are enough.
How the classic titration test works
The standard method takes a small milk sample — traditionally 9 mL — adds a few drops of phenolphthalein indicator (colorless in acid, pink in base), then adds 0.1 normal sodium hydroxide drop by drop while stirring, until the sample just turns a faint, stable pink that persists for a few seconds. The volume of sodium hydroxide used tells you the sample's titratable acidity through a simple, standard formula, and a bit of quick arithmetic converts that into a percentage of lactic acid, or into the older Dornic-degree scale still referenced on some culture packaging.
Typical targets through a make
Fresh, unripened milk typically sits around 0.13-0.17% titratable acidity, corresponding to roughly pH 6.6-6.8. After the starter culture has had time to ripen the milk — usually 30-60 minutes — most recipes look for acidity to climb into the 0.17-0.21% range, around pH 6.4-6.6, before adding rennet; renneting into milk that hasn't ripened enough often gives a weak, slow set no matter how much rennet you use. By the time the curd is cut, cooked, and ready to drain, acidity has usually climbed further still, often into the 0.20-0.25% range for a cheese like cheddar heading into cheddaring.
Why acidity drives so many downstream decisions
Acidity doesn't just affect rennet's performance — it also controls how much calcium stays bound in the curd (higher acidity strips out more calcium, giving a softer, more crumbly texture, which is exactly what a fresh chèvre wants and a firm cheddar doesn't), how effectively whey drains from the curd, and how hospitable the environment is to unwanted bacteria versus the cultures you actually want established. A batch that's under-acidified at draining often stays wetter and softer than intended and can be more prone to later spoilage, while over-acidification can give a dry, crumbly, overly sharp result even in a cheese meant to be mild.
When acidity development runs off schedule
If a batch is acidifying noticeably faster or slower than a recipe's timing suggests, the most common causes are a vat temperature that's drifted from the target (culture activity is very temperature-sensitive), a culture that's old, weak, or was stored improperly, or milk carrying antibiotic residue that inhibits the bacteria outright. Testing acidity directly, rather than assuming the clock is right, is how you catch this early enough to adjust — extending a ripening step, or troubleshooting the culture before the whole batch is lost.
Building the habit
Titration takes a couple of minutes and a handful of inexpensive supplies, and it pays off well beyond the first few batches: once you know what a specific recipe's acidity curve normally looks like for your milk, your kitchen, and your culture, you'll start noticing on smell and feel alone when something is running off pace, with the titration there to confirm it rather than replace your growing instinct.
Convert your titration reading into %TA and Dornic degrees, and check it against typical targets by stage, with the pH & Acidity Calculator on CurdCraft.
Turning a titration into a number
The classic dairy method titrates a 9 mL milk sample with 0.1 N sodium hydroxide and phenolphthalein to a faint persistent pink. The acidity calculator converts the titre:
%TA = (titrant mL × normality × 9) ÷ sample mL
With the standard settings that reduces to titre ÷ 10: 1.6 mL gives 0.16% lactic acid, or 16° Dornic on the older scale still printed on some cultured-dairy labels, where 1°D = 0.01%. A 2.5 mL titre is 0.25% and 25°D.
Fresh cow milk typically sits around 0.14–0.16%. A reading well above that in milk you believed was fresh means it has already started fermenting, which is worth knowing before you commit it.
The difference between readings is the useful part
Any single value tells you less than the change between two. A rise of a few hundredths over a ripening period confirms the culture is working at roughly the expected rate; no rise at all is the earliest and cheapest warning you will get that the culture is dead, and it arrives while you can still stop.
That matters beyond texture. Falling acidity is one of the hurdles — alongside salt and reducing moisture — that makes a cheese progressively inhospitable to organisms you did not add deliberately. A make that never acidified has lost one of its principal defences, and under-acidified cheese is the case where discarding the batch is the right decision rather than a cautious one.
Handling the reagent
Sodium hydroxide is caustic even at 0.1 N — it will irritate skin and is genuinely dangerous to eyes. Wear eye protection, keep it away from where food is prepared, and store it out of reach of children. Standardised solution also degrades as it absorbs carbon dioxide from the air, so an old, frequently-opened bottle reads low and should be replaced rather than trusted.