Household Ingredients Compared › Guides
Milk is the food most likely to disagree with the people reading this page. About 65% of the human population loses the ability to digest lactose after infancy, and among people of East Asian descent the figure is 70–100%. Losing that ability is not a disorder — it is the ancestral, default condition for all mammals, and the ability to keep digesting milk into adulthood is the evolutionary exception, arising in populations with a long history of dairy farming. In Singapore, that means most shoppers are, to some degree, lactose non-persistent — and yet dairy is also the most convenient source of calcium most people have. This guide is about holding both facts at once: how much lactose is actually in each dairy food, which ones most people can eat without symptoms, and where calcium comes from when milk is not an option.
Lactose is the sugar in milk. To digest it, the small intestine needs an enzyme called lactase, which splits lactose into glucose and galactose for absorption. Babies make plenty of lactase. In most of humanity, production declines after weaning — a condition called lactase non-persistence — and undigested lactose reaches the colon, where bacteria ferment it, drawing water in and producing gas. The result can be bloating, cramps, abdominal pain, intestinal noises, diarrhoea and sometimes nausea.
Three distinctions matter:
Lactose lives in the watery part of milk, so anything that drains the whey or ferments it removes lactose. Ageing and straining do most of the work, which is why the numbers span nearly five orders of magnitude:
| Food | Lactose per 100 g | Per typical serving |
|---|---|---|
| Whole milk | 4.8 g | About 12 g in a 250 ml glass — one glass alone reaches the typical 12 g threshold. |
| Skim milk | 4.8–5.1 g | About 12–13 g in a 250 ml glass. Removing fat does not remove lactose. |
| Goat milk | 4.1–4.5 g | About 10–11 g in a 250 ml glass. Almost the same as cow milk — it is not a low-lactose alternative. |
| Plain yogurt | 3.8–4.7 g | About 8–9 g in a 200 g tub. Live cultures pre-digest some lactose, and yogurt is often better tolerated than the raw figure suggests. |
| Greek yogurt, strained | 2.2–3.0 g | About 4–6 g in a 200 g tub. Straining removes much of the lactose-carrying whey. |
| Cream cheese | 2–3.6 g | About 0.6–1.1 g in a 30 g spread — the serving is small, so the total is low. |
| Cottage cheese | 1.8–3 g | About 2–3 g in a 100 g serving. |
| Mozzarella | 0.7–3.3 g | Varies by style; Italian-style fresh mozzarella is at the low end. |
| Butter | 0.02–0.9 g | About 0.05 g in a 10 g pat. Almost all the whey has been churned out. |
| Cheddar, aged | Less than 0.1 g | Effectively zero in a 30 g slice. The lactose is fermented away in the first 48 hours, before ageing even starts. |
| Parmesan | Less than 0.1 g | Effectively zero. Long-aged cheeses test below the detection limit on modern analysis. |
| Ghee | About 0.003 g | Effectively zero — heating removes the water and milk solids. |
| Lactose-free milk | Less than 0.1 g | Lactase enzyme has been added to split the lactose into glucose and galactose before bottling. |
Figures compiled from food-composition databases and peer-reviewed analyses, shown as ranges where sources differ. The pattern is the point: draining the whey removes most of the lactose, and ageing or fermentation breaks down what is left.
The practical consequence is that many people who think they "cannot eat dairy" can eat most of it. Aged hard cheeses — cheddar, parmesan, Swiss, Gouda, Edam — are effectively lactose-free even when they are not marketed as such. Butter and ghee are near zero. Greek yogurt is much lower than milk. The foods that actually carry the load are milk itself, fresh soft cheeses, and cream — and even those are usually tolerated in small amounts, spread across the day, or eaten with other food.
Lactose-free milk is still milk. Lactase enzyme is added to ordinary milk to split the lactose before bottling, so the product contains the same protein, calcium and vitamins as regular milk, with almost no lactose left — under 0.1 g per 100 g. It tastes slightly sweeter, because the split lactose becomes glucose and galactose, which taste sweeter than lactose itself. It is the right product for lactose intolerance, and the wrong product for a milk allergy, because the milk proteins are still there.
Dairy-free means no milk at all. Plant milks — soy, oat, almond, rice — contain no lactose because they contain no milk, and they are also free of milk protein, which is what a milk allergy needs. But they are not nutritionally equivalent to milk unless they are fortified: an unfortified oat or almond milk can contain almost no protein and almost no calcium, while a fortified soy milk can match milk on both. The check is the panel, not the word "milk" on the carton — see the plant milks section below.
"Low lactose" is not a regulated term in Singapore. A product containing less than 0.1 g of lactose per 100 g may be called lactose-free in the usage the NIH describes, but the term is not regulated by law in the same way in every market, so the number on the panel — or the absence of one — is what counts.
The Health Promotion Board's recommended dietary allowance for calcium in Singapore is 800 mg a day for adults aged 19–50, and 1,000 mg a day for adults over 51, for pregnancy and lactation, and for ages 10–18. The Healthier Choice Symbol uses 800 mg as its reference value. Calcium matters most for bone health, and the amount your body absorbs varies with vitamin D status — HPB recommends sunlight exposure of 5–30 minutes, twice a week, ideally between 10am and 3pm, to support vitamin D.
Calcium per 100 g of common foods (typical values from food-composition data; check the pack):
| Food | Calcium per 100 g | Notes |
|---|---|---|
| Dried ikan bilis, whole | About 1,572 mg | The highest calcium food on this list by far — but a serving is a small handful, not 100 g. |
| Cheddar cheese | About 721 mg | A 30 g slice gives about 216 mg. Also high in saturated fat and sodium. |
| Sardines, canned with bones | About 382–430 mg | The bones are the calcium — eat them. Also a source of omega-3 fats. |
| Tofu, calcium-set | About 164–350 mg | Varies by brand and by how much calcium salt was used to set it. Check the panel: tofu set with calcium sulfate or calcium chloride carries the calcium; tofu set with nigari (magnesium chloride) carries far less. |
| High-calcium milk | About 200 mg | Fortified milk; ordinary full-cream milk is about 93–120 mg per 100 ml. |
| Fortified soy milk | About 170 mg | Only if fortified — unfortified soy milk is much lower. Check for calcium on the panel. |
| Yogurt | About 110–121 mg | Plain yogurt; Greek yogurt is similar at about 110 mg. |
| Low-fat milk | About 136 mg | Removing fat does not remove calcium. |
| Cooked kale | About 150 mg | Leafy greens contribute, but the calcium is less well absorbed than from dairy. |
Two points about this table. First, calcium per 100 g is not calcium per serving: ikan bilis wins per 100 g, but a serving is 20–30 g, while a glass of milk is 250 ml — so a glass of milk (about 230–300 mg) still delivers more calcium in one serving than a handful of ikan bilis (about 300–470 mg per 30 g, comparable) or a slice of cheddar (about 216 mg). Second, absorption differs: calcium from dairy is well absorbed; calcium from leafy greens is absorbed less well because of oxalates; and vitamin D status changes how much of any of it your body takes up. The table is a guide to content, not a ranking of usefulness.
For the health claim: under Singapore's rules, a food can carry the diet-related health claim that a healthy diet with adequate calcium and vitamin D helps achieve strong bones and may reduce the risk of osteoporosis only if one serving contains at least 50% of the calcium RDA (taken as 800 mg) — that is, at least 400 mg per serving — and the product carries the Healthier Choice Symbol. A product that says "good source of calcium" without meeting that bar is using the phrase loosely.
Plant milks vary far more than dairy milk does, because there is no standard recipe. The same shelf can hold a soy milk with 3 g of protein and 170 mg of calcium per 100 ml next to an oat milk with 1 g of protein and almost no calcium. Four checks:
Three checks, in order:
Pages where these checks are most useful: fresh milk, flavoured and chocolate milk, yogurt, kefir, cheddar and hard cheese, cottage and soft cheese, cream cheese and cheese spread, mozzarella cheese, butter, plant milks, tofu and tempeh, canned sardines, dried seafood and anchovies and condensed and evaporated milk, plus the protein guide and the fermented foods guide.