Almost nothing in a coffee drink is coffee#
To log a latte, estimate the milk and ignore the espresso. That is not a simplification — it is very nearly the whole calculation, because a double shot contributes a few calories and 300-odd millilitres of steamed milk contributes everything else. The practical consequence is that "coffee" is not a food category with a calorie value. It is a delivery mechanism for a dairy portion you did not measure.
The size of the gap was counted at the till. Researchers intercepted 2,957 beverage purchases across 42 Starbucks and 73 Dunkin' Donuts stores in New York City and priced each one from the chains' own nutrition data. Brewed coffee and tea — 61% of purchases — averaged 63 calories, with 87% under 100. Blended and milk-based drinks — the other 39% — averaged 239 calories, with 30% over 3001. Those menus have changed since 2007 and the drink sizes have not shrunk, but the structure the study exposes is the durable part, and it is the thing that makes coffee awkward to log with the standard counting method: two orders that use the same noun differ by nearly fourfold.
Your cup belongs to one of two populations#
That 63-versus-239 split is not a spectrum with most drinks in the middle. It is two distributions that barely touch, and knowing which one you are in does most of the estimating before you think about volume at all.
| Purchase type | Share of purchases | Mean calories | Tail |
|---|---|---|---|
| Brewed coffee or tea | 61% | 63 | 87% under 100 kcal |
| Blended or milk-based | 39% | 239 | 30% over 300 kcal |
Data: Huang et al., 2009; 2,957 intercepted purchases, New York City, 2007.
What happens inside the brewed category is the more useful finding. The same drink — a cup of filter coffee — averaged 38 calories at one chain and 69 at the other. Nothing about the coffee differed. The difference was that 55% of the second chain's brewed-coffee customers added both milk and sugar. A cup of black coffee and a cup of coffee with two creamers and two sugars are the same order, the same price, the same cup, and roughly a 60-calorie gap. This is the same accounting problem as condiments: the food you name is not the food that carries the calories, and the part that does gets added after the naming is finished.
So the first question when logging is not "how big was it." It is: did anything white or sweet go into this cup? If the answer is no, you are in a category where the entry can be zero and the error is a handful of calories. If the answer is yes, you have a dairy-portion problem to solve.
Price the milk by volume — the name on the carton will mislead you#
Once you know it is a milk drink, the estimate is milk volume times milk energy density, and both terms deserve a little care.
An audit of 129 plant-based milk products on the Australian market recorded median energy of 116.5 kJ per 100 mL for almond, 210 for oat, 246 for soy, against 191 kJ for cow's milk across its fat levels2. Converting to calories — my arithmetic, at 4.184 kJ per kcal — that is roughly 28, 50, 59 and 46 kcal per 100 mL.
| Milk | Median energy (kJ/100 mL) | ≈ kcal/100 mL |
|---|---|---|
| Almond | 116.5 | 28 |
| Cow's milk, all fat levels | 191 | 46 |
| Oat | 210 | 50 |
| Soy | 246 | 59 |
Data: Harmer et al., 2025; 129 audited products, medians. Calorie column is my conversion.
Read the oat row twice. In this audit, the median oat drink carried more energy per 100 mL than the median cow's milk. A separate laboratory analysis of Swiss retail products put oat at 41.5 kcal/100 mL against 65.5 for whole cow's milk3 — the opposite ordering. Neither result contradicts the other; they used different reference milks: the Swiss analysis sampled whole 3.5% milk only, while the Australian audit's cow's milk median pools skim, low-fat and whole across a range of 160 to 267 kJ. Both are right about their own comparison, which yields a rule with a hinge in it: oat instead of whole milk saves calories; oat instead of skim costs them. "Plant milk" is not a calorie category.
Almond is the exception that behaves as advertised, and it is also the widest: individual products in the Swiss analysis ranged from 13 to 60 kcal per 100 mL. If you drink almond lattes, the brand matters more than the milk type does.
For volume, work backwards from the cup rather than forwards from the recipe. A 16 oz drink is 473 mL; subtract about 60 mL for a double shot and allow that foam is mostly air, and you are looking at roughly 330 to 380 mL of actual milk. At 46 kcal/100 mL that is about 150–175 calories; with whole milk nearer 210–245; with almond nearer 90–105. Those are my multiplications, not published figures, but they land in the same place as the measured data: milk-based drinks at one chain averaged 246 calories on whole milk and 170 on nonfat1 — a 76-calorie swing decided by one word at the counter.
The add-ons you can look up, and the one you can't#
Three things sit on top of the milk, and all three have published numbers, which makes them the easy part of a coffee log:
- Sugar, at about 22 calories for two packets — small, frequent, and the reason a black-coffee habit is not always a zero-calorie habit.
- Whipped cream, at 60 to 150 calories depending on drink and size. Forty percent of ice-blended customers took it1.
- Size, which is not an add-on but behaves like one. The chain whose ice-blended drinks averaged 397 calories would have averaged 285 on the other chain's smaller size ladder — same recipes, 112 calories of difference from the cup ladder alone.
Syrup is the fourth, and it is where published figures stop being reliable, because a pump is a hand movement rather than a measurement and the number of pumps scales with the cup. Treat syrup the way you would treat any restaurant number you did not watch being made: take the chain's figure as a centre and widen it, rather than as a fact.
Estimating the cup in front of you#
Four steps, in the order that removes the most uncertainty first:
- Sort it. Black brewed coffee, espresso, americano, plain tea — log zero and move on. Anything with milk, foam, syrup or blending goes to step 2.
- Take the cup volume, not the drink name. A "latte" is a size, not a recipe. Convert to millilitres (12 oz = 355, 16 oz = 473, 20 oz = 591) and knock off 60 mL for the shots.
- Multiply by the milk. Roughly 46 kcal per 100 mL for unspecified dairy, 64 for whole, 28 for almond, 50 for oat. A 16 oz dairy latte lands near 160–180 calories; a 20 oz whole-milk one near 300.
- Add what you can name. Whipped cream, syrup pumps, sugar. If you cannot name it, widen the estimate rather than guessing precisely — the pour and the pumps are the terms nobody in the shop measured either.
One habit does more than any of this arithmetic. Drinks are the category where the information is available and the entry simply never gets created, because a cup does not feel like eating — which is why they show up so consistently among the calories that go missing from food logs. Coffee is the worst case for that reflex, because it is genuinely routine: 59% of US adults drink it, and the average consumer takes 545 grams a day, or about 18 fluid ounces4 — a figure worth reading with the funding in mind, since that analysis was supported by Keurig Dr Pepper and two of its authors were employed there. Two-thirds of that volume is brewed at home, where nothing is printed on anything.
A daily 16 oz oat latte is roughly 60,000 calories a year on my arithmetic — the kind of number that is invisible per cup and impossible to hide from over a quarter. It costs five seconds to log and, unlike almost every other estimate in a food diary, you know the volume exactly. Someone handed it to you in a marked cup. Whether or not coffee also nudges your energy expenditure is a separate and much smaller question, and it does not offset the milk.
FAQ#
How many calories are in a latte?#
It depends almost entirely on the milk volume, which is set by the cup. A 16 oz (473 mL) dairy latte holds roughly 330–380 mL of milk after the espresso; at typical cow's-milk energy density that is about 150–175 calories, and closer to 210–245 with whole milk. Measured at the till, milk-based coffee drinks averaged 239 calories1.
Does switching to oat milk save calories?#
Only against whole milk. In an audit of 129 products, oat's median energy was 210 kJ/100 mL against 191 kJ for cow's milk across all fat levels2 — so oat is slightly higher than average dairy and clearly higher than skim. Almond is the plant milk that reliably lowers the number, at a median of 116.5 kJ/100 mL.
Do I need to log black coffee?#
The coffee, no. What goes into it, often yes. Filter coffee purchases averaged 38 calories at one chain and 69 at another, entirely because 55% of the second chain's customers added milk and sugar1. Two sugars and a splash of cream, four times a day, is a real line in a food log even though the drink reads as free.
Sources#
- Huang C, Dumanovsky T, Silver LD, Nonas C, Bassett MT. Calories from beverages purchased at 2 major coffee chains in New York City, 2007. Prev Chronic Dis. 2009;6(4):A118.
- Harmer I, Craddock JC, Charlton KE. How do plant-based milks compare to cow's milk nutritionally? An audit of the plant-based milk products available in Australia. Nutr Diet. 2025;82(1):76-85.
- Walther B, Guggisberg D, Badertscher R, et al. Comparison of nutritional composition between plant-based drinks and cow's milk. Front Nutr. 2022;9:988707.
- Rehm CD, Ratliff JC, Riedt CS, Drewnowski A. Coffee consumption among adults in the United States by demographic variables and purchase location: analyses of NHANES 2011-2016 data. Nutrients. 2020;12(8):2463. (Funded by Keurig Dr Pepper; two authors are company employees.)


