How to Detect Milk Adulteration: Methods Compared, From Lactometer to Analyser

The first can reaches the collection centre at 5:40 in the morning, and the farmer expects it to be weighed, tested and paid for before the next can arrives. At a busy centre that leaves about ninety seconds per can.
Every method for detecting milk adulteration has to be judged against that clock. A test that takes ten minutes and needs a laboratory is useless for deciding whether to accept a can, however accurate it is. A test that takes ten seconds and misses the commonest trick is worse than no test, because it creates false confidence.
This field guide compares the methods used to check milk in India, from the wooden lactometer to the electronic milk analyser, test by test, with the same five questions asked of each: what it catches, how it works, how long it takes, where it fails, and when to use it. It also shows, with arithmetic you can check, why no single quick test is enough, and how the tests combine into a protocol a collection centre can run.
Ninety Seconds per Can: What You Are Trying to Catch
Adulteration comes in a few families, and each family needs a different test.
Dilution is the oldest and still the commonest. Water is added to increase volume, which lowers fat and solids-not-fat, written SNF, and lowers density. A good test catches it at once.
Restoration is what follows when dilution gets caught. Someone adds a cheap substance to bring the density or the apparent solids back up: urea, common salt, sugar, starch, maltodextrin, or skimmed milk powder. The milk now passes a simple density test while being weaker and, in the case of urea, unsafe.
Neutralisers and preservatives are added to hide spoilage. Sodium carbonate, bicarbonate or caustic soda neutralise rising acidity. Hydrogen peroxide, formalin and boric acid suppress bacteria. These are health hazards and are illegal.
Detergent and synthetic milk are the extreme cases, where milk is manufactured from water, oil, detergent, urea and other ingredients. They are rarer and usually caught by a combination of tests.
The right protocol is built from the answers to three questions. What are the likely adulterants for this supplier and season? How fast must each can be cleared? What happens if you are wrong, to the farmer who is wrongly rejected and to the consumer who receives bad milk?
What the Law Measures: FSSAI Composition Standards
Composition tests compare a measured value with a legal minimum. The Food Safety and Standards Regulations, 2011, set minimum milk fat and SNF by species and by class of milk. The commonly cited values are below. They come from several summaries of the regulations, and some states have set higher minimums for particular species, so confirm the current text and your state's rule before using them for rejection.
Class or species | Minimum milk fat | Minimum SNF |
Buffalo milk | 6.0 percent | 9.0 percent |
Cow milk | 3.2 percent | 8.3 percent |
Goat or sheep milk | 3.0 to 3.5 percent | 9.0 percent |
Full cream milk | 6.0 percent | 9.0 percent |
Standardised milk | 4.5 percent | 8.5 percent |
Toned milk | 3.0 percent | 8.5 percent |
Double toned milk | 1.5 percent | 9.0 percent |
Skimmed milk | Not more than 0.5 percent | 8.7 percent |
Some summaries quote cow milk at 3.5 percent fat and 8.5 percent SNF, which looks like an older or a state-specific figure. When two sources disagree, the notified regulation governs, and a centre that rejects milk on a number should have the regulation in front of it.
For adulterant tests, the reference is the FSSAI Manual of Methods of Analysis of Foods for milk and milk products, first issued in 2015, with a set of dairy methods renumbered in 2022 as FSSAI 01.00x:2022, including urea detection and estimation, starch, neutralisers, anionic detergents, formaldehyde and hydrogen peroxide. FSSAI also publishes a booklet of simple rapid tests called DART, meant for use outside a laboratory. These are the methods a regulator will recognise.
Eleven Tests, One Template
Each test below follows the same pattern, so you can compare them directly.
The Senses and the Thermometer: Smell, Colour, Temperature
What it catches: souring, gross contamination, milk that has not been cooled. How it works: a trained person smells and looks, and a thermometer reads the can. Time: five seconds. Cost class: nothing. Where it fails: it catches nothing that does not change the smell or colour, which includes almost all adulteration. Use it when every can arrives, because the temperature is the cheapest early warning of spoilage risk. Treat the senses as a filter for obvious problems and never as a test for adulteration.
Lactometer: How to Detect Water in Milk the Traditional Way
What it catches: dilution, by reading density. How it works: a weighted glass float sinks to a depth set by the milk's density, and a scale on the stem reads the lactometer value, usually written as the number of points above 1.000 specific gravity. Because density changes with temperature, the reading is corrected, by the common convention adding 0.1 for each degree above 27 degrees Celsius. Time: about thirty seconds. Cost class: very low. Where it fails: density depends on fat and solids together, and fat lowers density while solids raise it, so milk can be diluted and still read normal if something dense is added, as the next sections show. Use it as a cheap screen paired with a fat test.
Alcohol and Clot-on-Boiling: The Freshness Pair
What it catches: milk that has soured or is about to. How it works: equal volumes of milk and alcohol at a set strength are mixed, and clotting shows reduced stability. The clot-on-boiling test heats a small sample and looks for curdling. Time: under a minute. Cost class: very low. Where it fails: these are tests of acidity and heat stability, so they detect none of the adulterants above, and they can condemn good milk from an animal in late lactation. Use them to decide whether a can will survive the trip to the chilling plant.
Gerber Fat Test: The Butyrometer
What it catches: low fat, from dilution or skimming. How it works: sulphuric acid dissolves the proteins, amyl alcohol helps the fat separate, and a centrifuge pushes it into a graduated tube where you read the percentage. Time: about five minutes per batch. Cost class: low to moderate, with a centrifuge and hazardous chemicals. Where it fails: it measures fat only, and an operator reading a meniscus introduces variation of a tenth of a percent or so. Use it as the reference for fat when you need a defensible number, and to calibrate electronic analysers.
Milk Analyser and Fat-SNF Testing Machine: The Ultrasonic Workhorse
What it catches: dilution and many compositional changes, by measuring fat, SNF, density, protein and sometimes lactose and added water in one reading. How it works: most collection-centre units pass ultrasound through a small sample, measure the speed of sound and the attenuation, and apply calibration equations for each milk type, cow, buffalo or mixed. Time: thirty to sixty seconds. Cost class: moderate, a one-time purchase. Where it fails: calibration is everything. An analyser calibrated on cow milk reads buffalo milk wrongly, a unit that has drifted over a hot summer reads everything slightly wrong, and substances such as urea, salt and sugar can fool the equations because they change sound speed in ways the calibration expects from normal solids. Use it as the front-line tool for every can, and recalibrate against a laboratory reference on a schedule.
Freezing-Point Depression: The Added-Water Test
What it catches: added water, by the most direct physical route. How it works: dissolved substances lower the freezing point of milk, and normal milk freezes at a stable temperature a little below minus half a degree Celsius. Adding water raises the freezing point toward zero, by roughly half a thousandth of a degree for each percent of water added. A cryoscope measures the freezing point. Time: two to three minutes. Cost class: moderate to high. Where it fails: substances added to restore the solids also depress the freezing point, so a dishonest mix of water and salt or sugar can land back in the normal range, and the test cannot tell which dissolved substance did it. Use it at the chilling centre or a laboratory as the confirmatory test for added water.
Starch Test: The Iodine Reaction
What it catches: starch added to thicken diluted milk. How it works: heated milk is cooled and a few drops of iodine solution are added, and a blue to blue-black colour indicates starch. FSSAI's DART booklet describes this simple form. Time: one minute. Cost class: very low. Where it fails: it detects starch and nothing else, and it will miss modified starches and maltodextrin, for which a separate enzymatic test exists. Use it for suppliers in areas where starch addition has been reported.
Urea Test in Milk: Strips, Colour Tests and Quantitative Methods
What it catches: added urea, used to raise the apparent protein and SNF. How it works: qualitative tests use an enzyme or a colour-forming reagent that changes colour when urea is present, and are available as strips or kits. FSSAI's method set includes a qualitative detection method and a quantitative spectrophotometric one, the latter reading absorbance at a set wavelength against a standard curve. Time: two to five minutes for a strip or kit, fifteen or more for the quantitative method. Cost class: low for a strip, moderate for a spectrophotometer. Where it fails: milk contains natural urea, so the test must distinguish a normal level from an added one, and strips have shelf lives and temperature sensitivities that cause false results when stored badly. Use strips as a screen on suspicious cans and send positives for a quantitative test before rejecting.
Detergent in Milk: The Foam Test and the Chemical Test
What it catches: detergent, from synthetic milk or from rinse residue in a badly cleaned can. How it works: the foam test shakes milk with an equal amount of water, where a dense lather suggests detergent against the thin foam of pure milk. The chemical method uses a reagent that reacts with anionic detergents, as in FSSAI's detergent method. Time: one to three minutes. Cost class: very low. Where it fails: the foam test is subjective, can be fooled by proteins from stale milk, and cannot separate rinse residue from deliberate addition. Use the foam test as a screen and the chemical test to confirm.
Neutralisers, Hydrogen Peroxide and Formalin: The Concealment Group
What it catches: sodium carbonate, bicarbonate and caustic soda used to hide acidity, and the preservatives hydrogen peroxide, formalin and boric acid. How it works: neutralisers raise the pH and give a characteristic colour with rosolic acid in alcohol, and each preservative has a dedicated colour reaction in the FSSAI manual. Time: two to five minutes each. Cost class: low per test, but there are several tests. Where it fails: no single reagent covers the group, so a centre either runs a panel on every can, which is slow, or targets by supplier history. Use these tests on suspicious or warm-weather milk, and keep the reagents fresh.
Laboratory Confirmation: Infrared Spectroscopy and Chromatography
What it catches: everything the quick tests miss, including synthetic milk, melamine and low-level contaminants. How it works: mid-infrared analysers measure absorption across the spectrum and fit compositional models. Chromatography with mass spectrometry separates and identifies individual molecules. Time: minutes to days. Cost class: high. Where it fails: for routine use it is too slow and too costly, and models in infrared instruments need calibration sets that reflect your region's milk. Use it for dispute resolution, for periodic audits of a supplier, and to validate the quick methods at the centre.
Who Catches What
Adulterant | Quick screen at the centre | Confirmation | What can fool the screen |
Added water | Analyser, lactometer with fat test | Freezing-point test | Water plus something dense and cheap |
Urea | Strip or kit | Quantitative spectrophotometry | Old strips, high ambient temperature |
Starch | Iodine test | Enzymatic or laboratory test | Modified starch, maltodextrin |
Salt and sugar | Chemical tests, conductivity | Laboratory methods | Small additions below detection |
Neutralisers | Rosolic acid test, pH | Titratable acidity | Mixed batches of fresh and soured milk |
Hydrogen peroxide, formalin | Dedicated colour tests | Laboratory methods | Low doses, delay since addition |
Detergent | Foam test | Anionic detergent method | Rinse residue |
Synthetic milk | None of the quick tests alone | Chromatography, spectroscopy | Everything quick |
No single quick test catches more than one family of adulterants. A protocol is a combination of tests chosen so that each trick fails at least one of them.
The Loophole: Water Plus Something to Restore Density
The reason combinations matter can be shown with arithmetic. Take one litre of milk with a corrected lactometer reading of 29, a density of 1.029, and a fat content of 4 percent. The common field formula for SNF, in its Richmond-type form, is SNF equals one quarter of the corrected reading plus two tenths of the fat plus 0.14. The constants differ slightly between sources, so use the one in your own procedure. For this milk it gives 8.19 percent, a comfortable pass.
def corrected_lr(lr, temp_c):
return lr + 0.1 * (temp_c - 27.0) # add 0.1 per degree above 27 C
def snf_richmond(clr_value, fat):
return clr_value / 4 + 0.2 * fat + 0.14
def added_water_pct(clr_std, clr_obs):
return max(0.0, (clr_std - clr_obs) / clr_std * 100)
print(round(corrected_lr(28.0, 31.0), 1)) # 28.4
print(round(snf_richmond(29, 4.0), 2)) # 8.19
print(round(added_water_pct(29, 26), 1)) # 10.3 percent water from a drop of 3 points
# 20 percent water added, then urea to restore density (volume additivity assumed, illustrative)
mass = 1029 + 200.0
vol_ml = 1200.0
x = 0.0
while (mass + x) / (vol_ml + x / 1.32) < 1.029:
x += 0.01
print(round(x, 1), "g urea,", round(x / vol_ml * 100, 2), "percent w/v") # about 26.3 g, 2.19 percent
print(round(snf_richmond(29, 4.0 / 1.2), 2), "computed SNF vs", round(8.19 / 1.2, 2), "true") # 8.06 vs 6.83
Now add 20 percent water. The density falls to about 1.0242, a reading of 24, which any lactometer catches. Then add urea, which is dense and dissolves. Under the simple assumption that volumes add, about 26 grams of urea in the 1.2 litres, a little over 2 percent, restores the density to 1.029. The lactometer reads 29 again.
The fat has still been diluted, from 4.0 to about 3.33 percent, so a fat test would show a drop. But the SNF computed from the restored lactometer reading and the diluted fat comes out near 8.06 percent, which looks acceptable, while the true SNF of the diluted milk is about 6.83 percent. The formula was fooled because it infers solids from density, and the urea supplied the density.
This is why an analyser that reports SNF from density or sound speed is not a defence against restoration, why the fat test is paired with the lactometer, and why a urea test and a freezing-point test belong in the protocol. The numbers are illustrative, since real mixtures do not follow perfect volume additivity, but the mechanism is the one practised.
Where Low-Cost Sensors Fit
Electronic sensing can take on part of the burden at a collection centre, and it is worth being exact about which part.
Sensors that measure temperature, density or sound speed, electrical conductivity and sometimes optical absorbance can run on every can in seconds, log the result against the supplier and time, and flag deviations from that supplier's own history. This last point is the strongest idea in the field. A single reading of 8.1 percent SNF tells you little. A supplier whose can has read between 8.4 and 8.6 for three months and suddenly reads 8.1 deserves a closer look, even though 8.1 would pass an absolute rule.
Conductivity is useful because salt, and many neutralisers, raise it. Optical absorbance in the near infrared responds to the composition of fat, protein and water together, and has been used in research to build low-cost compositional estimates. Both are indirect measures. They cannot name an adulterant, only say that this can differs from that supplier's normal. Chemical tests then confirm.
The roles divide cleanly: sensors for speed, logging and pattern detection, chemistry for naming the adulterant, and the laboratory for proof.
def flag_can(read, history):
# read and history entries: dict with fat, snf, conductivity (mS/cm), temp (C)
flags = []
if read["temp"] > 10: flags.append("warm: check acidity")
snf_mean = sum(h["snf"] for h in history) / len(history)
if read["snf"] < snf_mean - 0.25: flags.append("SNF below supplier norm")
cond_mean = sum(h["cond"] for h in history) / len(history)
if read["cond"] > cond_mean + 0.4: flags.append("conductivity above norm: salt or neutraliser")
if read["fat"] < read["snf"] * 0.45 and read["snf"] > snf_mean: flags.append("SNF high for fat: restoration pattern")
return flags
hist = [{"snf": 8.5, "cond": 4.9}] * 20
print(flag_can({"fat": 3.4, "snf": 8.5, "cond": 5.5, "temp": 8}, hist)) # conductivity flag
Test the function on your own data before trusting it. The thresholds in this sketch are placeholders, and each centre needs its own from several weeks of readings.
Compare every reading with the same supplier's own history, not only with the legal minimum. A number can pass the law and still be the first sign of a problem.
A Collection-Centre Protocol
A tiered protocol keeps the line moving and still catches the tricks.
The first tier runs on every can in the ninety seconds: temperature, a look and a smell, the analyser reading of fat and SNF, and the lactometer or conductivity check, with the alcohol test for freshness. Everything is logged against the supplier.
The second tier runs on cans that raise a flag, either an out-of-range reading or a departure from the supplier's history: urea strip, starch, neutraliser and detergent tests, and a repeat reading after mixing. This adds three to five minutes for a small number of cans.
The third tier is a sealed sample sent to a laboratory for freezing point, quantitative urea and, if needed, spectroscopic or chromatographic confirmation. The result decides rejection, a price adjustment or a conversation with the supplier.
Keep records. A rejection that rests on a logged reading, a second test and a sealed sample is defensible. A rejection that rests on a feeling is a dispute.
A Composite: The Chilling Centre in Week Six
This is a representative composite, genericised, from dairy collection settings. The numbers are illustrative.
A chilling centre receiving milk from a group of collection points started logging analyser readings by supplier. For five weeks nothing stood out. In week six, one collection point's SNF readings, normally between 8.3 and 8.6, moved to a tight band around 8.4 on every can, with almost no day-to-day variation. Real milk varies with feed, weather and animal. A flat line is itself a signal.
The centre did two things. A urea strip on retained samples came back positive on several cans. A freezing-point test at a partner laboratory showed values consistent with about 8 percent added water. The pattern fitted restoration: water to increase volume, urea to hold the SNF reading steady.
The conversation with the supplier was calm because the evidence was logged, tested twice and sealed. The collection point's quality-linked payment was adjusted, a retest was agreed, and the supplier's cans moved to second-tier testing for a month. Within three weeks the readings returned to their natural variation.
The lesson the centre recorded was about method more than chemistry. The first signal came from a pattern in the logged data, the confirmation from chemistry, and the proof from a laboratory. None would have worked alone.
Sampling and Calibration: The Errors That Come Before the Test
A perfect test on a bad sample is a bad result. Most disputed readings at collection centres trace to sampling and calibration, not to the chemistry.
Milk separates. Fat rises, and a can left standing for twenty minutes gives a layer of cream at the top and watery milk below. A dipper that takes a sample from the surface overstates fat, and one that scoops from the bottom understates it. The remedy is to mix every can thoroughly with a plunger, up and down at least five times, before drawing the sample, and to draw it the same way each time. A centre that mixes casually produces fat readings that wander by tenths of a percent for no reason, and then blames the analyser.
Temperature is the second source. Density and sound speed both change with temperature, and an analyser reading warm milk without correction reports a different composition from the same milk cold. Most instruments correct for temperature within a range and show an error outside it. Record the temperature with the reading and reject cans outside the instrument's stated range, which is also a sign of poor cooling.
Samples kept for later testing need preserving. Left in warm conditions, milk sours within hours, which changes acidity and can change readings. Samples for laboratory work go into a clean sealed bottle with a recognised preservative where the method allows it, or onto ice, with the time and supplier recorded.
Calibration is the third. An ultrasonic analyser is calibrated for a milk type, and the factory setting may not match your region's buffalo or mixed milk. Calibrate against a laboratory reference for each type you receive, using a set of real samples that span the fat and SNF range you expect. Then run a control sample every day, a pasteurised packet of known composition or a retained sample with laboratory values, and note the reading. A drift of more than a few hundredths of a percent in the control tells you to recalibrate before the day's disputes begin.
If the control sample reads differently today from last week, no reading on any supplier's milk is trustworthy until you know why.
Recording Evidence So a Rejection Stands Up
A farmer whose milk is rejected, or whose payment is cut, has a right to an explanation, and a centre that cannot give one loses suppliers and invites disputes. Records are cheap and decisive.
For every can, log the time, the supplier, the volume, the temperature, the analyser readings of fat and SNF, and the result of each test run. A notebook is acceptable, an application that stores timestamps is better. For cans that fail a test, keep a retained sample in a sealed, labelled bottle with the date, time, supplier and the signatures or initials of the operator and, where possible, the supplier or a witness.
When a laboratory confirmation is needed, the sealed sample goes with a note of what test is requested and the chain of custody. The laboratory's report, with its method reference, becomes the record. A method reference to the FSSAI manual number or a Bureau of Indian Standards method carries weight that a verbal result does not.
Offer a retest. A supplier who disputes a result can ask for the retained sample to be tested at an independent laboratory. This protects honest farmers from instrument error and gives the centre a procedure to point to. It also discourages false claims, because the retest will confirm the original result when it was right.
Review the records monthly. Patterns that no single reading shows, such as one collection point whose SNF never varies or a rise in positives after a holiday, appear in the logs and nowhere else.
Time and Cost Class per Can: A Planning Table
Use this table to decide which tests belong in which tier. The times are typical for trained operators, and cost classes are relative, so replace them with your own quotes.
Test | Typical time per can | Consumable | Skill needed | Tier |
Temperature and smell | 5 seconds | None | Minimal | 1, every can |
Milk analyser, fat and SNF | 30 to 60 seconds | Cleaning solution | Moderate | 1, every can |
Lactometer with temperature correction | 30 seconds | None | Low | 1, if no analyser |
Alcohol test | 30 seconds | Alcohol | Low | 1, warm days |
Urea strip or kit | 2 to 5 minutes | Strips with a shelf life | Low | 2, flagged cans |
Starch, neutraliser, detergent tests | 1 to 3 minutes each | Reagents | Low to moderate | 2, flagged cans |
Gerber fat | About 5 minutes per batch | Acid, amyl alcohol | Moderate | 2 or 3, reference |
Freezing point | 2 to 3 minutes | None, calibration standards | Moderate | 3, centre or laboratory |
Spectroscopy or chromatography | Hours to days | Specialist | High | 3, laboratory |
Notice how much of the burden lands in tier two. The skill is to keep tier two small by using good tier-one data and supplier history to decide which cans deserve it. A centre that runs the full panel on every can will not finish the morning.
What to Buy First
Budgets are limited, and the order of purchases matters more than the total.
Begin with a good thermometer, clean sampling equipment and a plunger. They cost little and remove the largest source of error. Add a properly calibrated lactometer set and a Gerber fat setup, so that you have reference methods that do not depend on electronics. Then buy the analyser, with the calibration for each milk type you receive, and the budget for a calibration service. Add urea strips and a small panel of tier-two reagents, with a fridge and a log for their expiry dates. Add freezing-point testing when volumes justify it, or arrange access to a laboratory that has it.
Resist the temptation to buy the most advanced instrument first. A sophisticated analyser operated by someone who does not mix cans, does not record temperature and never checks a control sample is less reliable than a lactometer in careful hands.
Sampling discipline and calibration come before instruments. An expensive analyser fed bad samples reports bad numbers more precisely.
When Testing Is Not the Answer
Testing cannot repair a payment system that rewards adulteration. If the price paid per litre depends only on volume, every farmer is tempted to add water, and the centre is in a race it can only lose. Paying on fat and SNF measured honestly moves the incentive toward quality.
Testing cannot replace a relationship. Farmers who feel accused stop delivering. Present the programme as quality-linked pricing and food safety, explain the tests, and show the results.
And testing cannot be perfect. Strips give false positives when old, analysers drift, and operators tire. A procedure that requires a second test before a penalty protects honest farmers from equipment error.
Starting Monday
List your likely adulterants from your supplier base, the season and any local reports.
Get the current FSSAI methods and your state's composition rules, and print the ones you will use.
Set up tier one with a calibrated analyser, a thermometer and a log by supplier.
Calibrate against a laboratory on a schedule, for each milk type you receive.
Stock tier-two tests with dates on the packs, and store them as the label says.
Agree a sealed-sample route to a laboratory.
After a month of logs, compute each supplier's norm and set flag thresholds from data.
Ninety Seconds Revisited
Back at the can at 5:40. Temperature, a sniff, an analyser reading logged against the supplier, and a flag if the number is odd. For most cans that is all it takes, and the line keeps moving.
For the few that raise a flag, chemistry names the problem. For the fewer that matter, a laboratory proves it.
Related service: Dairy and Milk Quality Monitoring
Related case study: NIR Spectrometer for Food Quality Monitoring
EurthTech is an engineering-first product design and embedded systems company with a development center in Hyderabad. To discuss a project, write to connect@eurthtech.com or see https://www.eurthtech.com/case-studies.




Comments