How many calories in milk? Whole, semi-skimmed, skimmed, and every plant milk
Milk calories per 100ml, per glass, per mug and per splash in tea. Whole, semi-skimmed, skimmed, and every plant milk compared, with the numbers people actually pour.
Milk is the most under-logged food in most people's day, and not because anyone is being dishonest. It arrives in splashes, glugs and pours rather than portions. Nobody weighs the milk that goes in a mug of tea, and six mugs later it has quietly become a snack.
Here is what milk actually costs, per 100ml, per glass, per mug and per pint, across dairy and every plant milk on the shelf.
The quick answer
Whole milk is about 63 kcal per 100ml. Semi-skimmed is roughly 48 kcal and skimmed is about 35 kcal. In US terms, USDA reference data puts whole milk (3.25% fat) at 61 kcal per 100g, 2% at 50 kcal, 1% at 42 kcal and skim at 34 kcal.
The two systems look inconsistent until you notice they measure different things. UK labels use 100ml, US reference data uses 100g, and milk has a density of about 1.03. So 100ml of milk weighs 103g, which is why the same product reads a couple of kcal higher by volume.
| Milk | Per 100ml | Protein per 100ml | Fat per 100ml |
|---|---|---|---|
| Whole (UK, 3.6% fat) | 63 | 3.4g | 3.6g |
| Whole (US, 3.25% fat) | 63 | 3.3g | 3.4g |
| Semi-skimmed (UK, 1.7% fat) | 48 | 3.6g | 1.8g |
| 2% reduced fat (US) | 51 | 3.5g | 2.0g |
| 1% low fat (US) | 43 | 3.5g | 1.0g |
| Skimmed (UK, 0.1% fat) | 35 | 3.5g | 0.3g |
| Skim (US, nonfat) | 35 | 3.5g | 0.2g |
| Lactose-free semi-skimmed | 48 | 3.6g | 1.8g |
| Goat milk (whole) | 70 | 3.6g | 4.1g |
| Buttermilk (cultured, low fat) | 41 | 3.4g | 0.9g |
| Evaporated milk (unsweetened) | 135 | 6.8g | 7.6g |
| Condensed milk (sweetened) | 321 | 7.9g | 8.7g |
| Single cream | 193 | 2.6g | 19g |
| Double cream | 449 | 1.7g | 48g |
| Half and half (US) | 130 | 3.0g | 11.5g |
By the pour, because nobody drinks 100ml
The per-100ml figure is a label unit. These are the pours that actually happen.
| Pour | Volume | Whole | Semi-skimmed | Skimmed |
|---|---|---|---|---|
| Splash in tea | 30ml | 19 | 14 | 11 |
| Generous pour in coffee | 50ml | 32 | 24 | 18 |
| Small glass | 200ml | 126 | 96 | 70 |
| Standard glass | 250ml | 158 | 120 | 88 |
| US cup | 240ml | 151 | 115 | 84 |
| Tall glass | 350ml | 221 | 168 | 123 |
| Cereal bowl | 150ml | 95 | 72 | 53 |
| Big cereal bowl | 250ml | 158 | 120 | 88 |
| Latte milk (medium) | 250ml | 158 | 120 | 88 |
| Flat white milk | 130ml | 82 | 62 | 46 |
| Protein shake mixer | 300ml | 189 | 144 | 105 |
| Porridge liquid (1 portion) | 250ml | 158 | 120 | 88 |
| UK pint | 568ml | 358 | 273 | 199 |
| US pint | 473ml | 298 | 227 | 166 |
| 1 litre | 1000ml | 630 | 480 | 350 |
Six mugs of tea with a 40ml pour of semi-skimmed is 115 kcal a day. Over a year that is roughly 42,000 kcal, and it never appears in a food diary because nobody thinks of tea as food.
The plant milk table
Plant milks vary far more than dairy, because the recipe is a formulation rather than an animal product. Two oat milks from the same shelf can differ by 20 kcal per 100ml.
| Plant milk | Per 100ml | Protein per 100ml | Notes |
|---|---|---|---|
| Almond (unsweetened) | 15 | 0.5g | The lightest common option |
| Almond (sweetened) | 40 | 0.5g | Sugar does all the extra work |
| Cashew (unsweetened) | 22 | 0.5g | |
| Coconut drink (carton, unsweetened) | 20 | 0.2g | Not tinned coconut milk |
| Coconut milk (tinned, full fat) | 197 | 2.0g | A cooking ingredient, not a drink |
| Rice milk | 50 | 0.3g | Naturally sweet, low protein |
| Oat (standard) | 46 | 1.0g | Roughly semi-skimmed territory |
| Oat (barista) | 59 | 1.1g | Added oil for foam |
| Soy (unsweetened) | 33 | 3.3g | The only close protein match to dairy |
| Soy (sweetened) | 54 | 3.1g | |
| Pea protein milk | 39 | 3.4g | High protein, still uncommon |
| Hemp (unsweetened) | 27 | 0.8g | |
| Macadamia (unsweetened) | 25 | 0.4g | |
| Hazelnut (unsweetened) | 29 | 0.4g |
For what your protein target actually needs to be, how much protein you need per day covers the numbers by body weight and activity.
Milk in coffee: the real calorie source
Black coffee is 2 kcal. Everything above that is milk, syrup or foam. The drink names hide it.
| Drink | Milk volume | Whole milk | Semi-skimmed | Oat |
|---|---|---|---|---|
| Espresso | 0ml | 3 | 3 | 3 |
| Macchiato | 20ml | 16 | 13 | 12 |
| Cortado | 60ml | 41 | 32 | 31 |
| Flat white (small) | 130ml | 85 | 65 | 63 |
| Cappuccino (medium) | 180ml | 116 | 89 | 86 |
| Latte (medium) | 250ml | 160 | 122 | 118 |
| Latte (large) | 350ml | 223 | 170 | 164 |
| Iced latte (large) | 300ml | 192 | 146 | 141 |
| Chai latte (medium, with syrup) | 250ml | 240 | 202 | 198 |
| Hot chocolate (medium) | 300ml | 330 | 290 | 285 |
The pattern: milk drives almost all of it, and the cup size drives the milk. A large latte is not a stronger coffee than a small one. It is the same two shots with 200ml more milk. Switching from whole to semi-skimmed in a daily large latte saves about 53 kcal. Dropping from a large to a medium saves 63, and dropping to a small flat white saves 138.
(For the full menu including syrups, whipped cream and the seasonal drinks, how many calories in coffee drinks breaks down the chains.)
Whole vs skimmed: the difference is smaller than the argument
The whole-versus-skimmed debate consumes far more attention than the 28 kcal per 100ml it is actually about.
| Daily milk habit | Whole | Skimmed | Difference |
|---|---|---|---|
| 4 mugs of tea (40ml each) | 101 | 56 | 45 |
| 1 glass with dinner (250ml) | 158 | 88 | 70 |
| Cereal + 2 coffees (250ml total) | 158 | 88 | 70 |
| Heavy user (1 pint a day) | 358 | 199 | 159 |
For most people the honest answer is 50 to 80 kcal a day. That is worth having, but it is not the thing that decides an outcome. Volume decides the outcome. If you drink a pint a day, the fat percentage matters. If you take a splash in tea, it does not.
Whole milk also does something skimmed does not: it slows gastric emptying slightly and tastes richer, which is why some people sweeten skimmed coffee and not whole. A teaspoon of sugar is 16 kcal, so two of them erase the saving.
Milk as a protein source
Milk is one of the cheapest protein sources per calorie in the dairy aisle, and it gets overlooked because people think of it as a drink rather than food.
| Food | Per 100 kcal | Protein per 100 kcal |
|---|---|---|
| Skimmed milk | 285ml | 10.0g |
| Semi-skimmed milk | 208ml | 7.5g |
| Whole milk | 159ml | 5.4g |
| Plain nonfat Greek yogurt | 169g | 17.0g |
| Skyr | 159g | 17.5g |
| Cottage cheese (low fat) | 137g | 15.0g |
| Cheddar cheese | 25g | 6.2g |
| Unsweetened almond milk | 667ml | 3.3g |
| Unsweetened soy milk | 303ml | 10.0g |
Skimmed milk delivers 10g of protein per 100 kcal, which is respectable. Strained yogurts still win comfortably because straining removes the whey water and concentrates what is left.
(For the strained end of the aisle, Greek yogurt calories and skyr calories and protein cover the same math at higher density. For everything else on the shelf, how many calories in yogurt is the full aisle guide.)
What milk brings besides calories
Milk is one of the most nutrient-dense things in a fridge relative to price. A 250ml glass carries roughly 300mg of calcium, which is around 30% of an adult daily target per NIH Office of Dietary Supplements guidance, plus iodine, B12, riboflavin, phosphorus and potassium.
Fortified plant milks usually match calcium because it is added back. Unfortified ones, including many organic ranges, do not. Check the carton: the calcium line is the one that separates a fortified oat milk from an expensive glass of beige water. The NHS milk and dairy guidance covers the same point for UK products.
Vitamin B12 is the one worth checking on plant milks. It occurs naturally in dairy and only ever appears in plant milks as a fortification.
Milk mistakes to avoid
Logging "1 glass" without a volume
The word glass covers 200ml to 400ml. That is 126 to 252 kcal for whole milk from the same log entry. Fill your usual glass once, pour it into a measuring jug, and remember the number.
Forgetting tea and coffee milk entirely
The single biggest milk under-log. A splash feels like nothing because it is not a food event. Four to six mugs a day at 40ml a mug is 100 to 150 kcal that never touches a diary.
Treating barista oat milk as the same as regular oat milk
Barista versions add oil so the foam holds. That is typically 10 to 15 kcal more per 100ml, or 30 kcal on a medium latte. Café oat milk is nearly always the barista version.
Assuming plant milk is automatically lighter
Rice milk at 50 kcal per 100ml is heavier than semi-skimmed dairy. Sweetened almond milk at 40 kcal is close to it. Only the unsweetened nut milks are genuinely light, and they are also the ones with almost no protein.
Not draining the cereal bowl figure
Most people pour 150 to 250ml into cereal and leave 40 to 60ml behind. Logging the pour rather than what you drink overstates it, and logging nothing understates it worse. Pick the pour and be consistent.
Three milk habits worth costing out
The tea drinker (115 kcal a day)
- 6 mugs of tea, 40ml semi-skimmed each (240ml total, 115 kcal)
Adds up to: 115 kcal a day, 8.6g protein. Nothing wrong with it. It just needs to be in the total.
The cereal and coffee morning (255 kcal)
- 150ml semi-skimmed on cereal (72 kcal)
- 1 medium latte, 250ml semi-skimmed (122 kcal)
- 2 mugs of tea, 30ml each (29 kcal)
Adds up to: 223 kcal of milk before any food. On a 1,800 kcal target that is 12% of the day, poured rather than eaten.
The protein-forward swap (240 kcal)
- 300ml semi-skimmed as a shake base (144 kcal, 11g protein)
- 30g whey isolate (110 kcal, 25g protein)
Adds up to: ~254 kcal, 36g protein. Milk as a shake base rather than water adds 144 kcal and 11g of protein, which is a fair trade if you are chasing a protein target rather than a calorie floor.
The verdict
Milk is not a food that needs a strategy. It needs a measurement. The fat percentage argument is worth 50 to 80 kcal a day for a typical drinker, while the volume question is worth two or three times that.
Pour your normal glass into a jug once. Count your mugs honestly for a day. Those two numbers will tell you more than any whole-versus-skimmed debate.
Snap the glass or the mug in Calow. It estimates the volume, works out the milk type from what you tell it once, and stops the tea rounds from disappearing out of your daily total.
Pairs well with: how many calories in coffee drinks, how many calories in yogurt, and protein breakfast swaps.
