TrackCaffeine

How every number on this site is produced

A milligram figure is only worth reading if you can see where it came from. This page is the whole chain: how a value enters the dataset, what the model does with it, what we round, and what we do not claim.

By Merey Tleugazin Revised 2026-09-18

TrackCaffeine publishes two kinds of number and never mixes them. A reference value is a caffeine figure compiled from a public source — a manufacturer's own label, a food composition database, an agency document. A computed value is something this site worked out from a reference value using a stated formula: how much is left six hours later, what time the last cup could have been, how many standard cups a drink is worth. Every page marks which is which, and this one describes how both are made.

Where a caffeine figure comes from before it reaches a page

The dataset is 87 drinks across eight categories, and the version currently published is stamped 2026-05-28. Each row carries a name, a category, a serving volume in millilitres, a caffeine figure in milligrams and — where the division is meaningful — a concentration per 100 ml. Every row began as a public figure rather than a measurement of ours. We own no laboratory and we make no claim to have analysed anything.

The sources fall into three classes, in this order of preference. First, a manufacturer's own published figure for its own product: Red Bull, Monster and Celsius all state a caffeine content, and for a branded product that statement outranks any third-party estimate. Second, a food composition database — chiefly the USDA's FoodData Central — for the generic entries no manufacturer makes, such as brewed coffee, a single espresso, black tea or cola. Third, an agency document for a figure that is about intake rather than about a product, which is where the 400 mg daily figure and the 200 mg pregnancy figure come from. The sources page lists each one against the claim it supports.

Three consequences follow, and they are limits rather than caveats. A figure for a chain drink is the chain's figure for a nominal preparation, and a barista is not a machine: two Grande brewed coffees from the same shop on the same morning can differ by tens of milligrams. A figure for a generic entry is a population average over a range that is genuinely wide — brewed coffee spans roughly 70 to 140 mg for the same 240 ml cup depending on grind, dose and contact time. And a figure for a product sold in several sizes belongs to one of those sizes: the dataset stores each size as a separate row rather than scaling one figure, because a large is rarely the small multiplied by the ratio of the cups.

What we round, and what we refuse to compute

Caffeine figures are published as whole milligrams. That is not false precision hidden by rounding; it is the resolution the underlying sources have. Where a source gives a range, the dataset stores the midpoint and the page says it is an estimate. Where a source gives a figure for a cup size we do not list, we list the source's cup size rather than converting it.

Concentration per 100 ml is computed only where dividing milligrams by millilitres describes something real. A shot of espresso, a mug of tea and a can of cola all have a volume, so they all have a concentration. A caffeine tablet, a piece of gum and a scoop of pre-workout powder do not, and 46 of the 87 rows therefore carry no per-100 ml value at all. The field is empty rather than zero and rather than computed, and the published dataset says so in its own documentation — an empty field that means "this division is not meaningful" is otherwise read as a missing value waiting to be filled in.

We do not publish a blood plasma concentration, a receptor occupancy, or any figure that would require knowing something about your body we have not asked for. Everything the calculators produce is arithmetic over a dose, a clock time and a half-life.

The model, stated in full

Every time-based figure on this site comes from one equation. A dose decays with a fixed half-life, and simultaneous doses are summed:

remaining(t) = dose × 0.5 ^ (hours ÷ 5.7)

The half-life is 5.7 hours, the commonly cited population average for a healthy adult. The sleep threshold is 100 mg. The default bedtime is 23:00 and every tool lets you change it, because the threshold figure is only useful against a time you actually go to sleep. The daily comparison figure is 400 mg, and 200 mg where a page concerns pregnancy. A standard cup of brewed coffee, the unit the site uses when it says a drink is "1.8 cups", is 96 mg in 240 ml.

The cutoff time — the latest a given dose can be taken and still be under the threshold at bedtime — is the same equation solved for time: cutoff = bedtime − 5.7 × log₂(dose ÷ 100). A dose already under 100 mg has no cutoff, and the tools say that rather than printing a time in the past.

This is a first-order elimination model, which means the rate caffeine leaves the body is proportional to how much is present. It is the simplest model that reproduces aggregate population data, and choosing it is a deliberate trade. Here is what it does not do. It has no absorption phase: a dose is treated as fully present the moment it is logged, which overstates the first thirty to sixty minutes and is accurate after that. It does not stratify the half-life by age, genotype, smoking status, oral contraceptive use, liver function, pregnancy or concurrent medication, all of which move it — pregnancy roughly doubles it by the third trimester, and heavy smoking roughly halves it. It does not model tolerance, because tolerance changes how a dose feels rather than how quickly it is eliminated. An individual half-life can sit anywhere between about three and about nine hours, and a curve drawn with 5.7 is a curve for a population, not for you.

We publish the model rather than hiding it precisely so that this criticism can be made. A calculator whose formula is not stated cannot be checked, and a caffeine estimate that cannot be checked is worth about as much as a guess.

Why there is exactly one copy of the arithmetic

The formula above lives in a single module. The calculators in your browser import it, the pages import it when they draw a chart at build time, the public API imports it, and the machine interface imports it. This is an engineering detail with an editorial consequence, so it belongs on this page: until September 2026 there were four separate implementations on this site, each individually correct, and one of them had the 5.7-hour half-life written into it as a literal number. A change to the model would have moved every figure on the site except that one table, and no check compared them.

Two gates now hold it. The first is 57 test vectors pinned to numbers this site's own prose prints — so it fails when the engine and the pages stop agreeing, not merely when the engine changes. The second drives the published interface with real questions, which catches the opposite defect: a page or a service that cannot reach the engine at all. Neither covers the other, and both were proved by deliberately breaking the thing the other one cannot see.

How the written pages are produced

The guides are drafted with a large language model against a brief that carries the target question, the related pages it must link to, and live search context; a second pass edits the draft against a rubric and is forbidden to shorten it. Before anything is written to disk, a deterministic validator checks the prose length, the absence of a list of banned filler phrases, the presence of the closing summary, that every internal link resolves against the set of pages that actually exist, and that outbound links point only at an allow-list of sources. A brief that cannot clear those checks in three attempts is reported as a failure rather than published thin.

Numbers in a guide are not the model's to invent. Every milligram figure is rendered from the dataset and every chart is drawn by the engine described above, so a guide that quotes a value and a chart on the same page cannot disagree with itself. The twelve language editions are machine-translated from the English and checked for missing keys and for output that came back in the wrong language. Our use of these tools, and its limits, is set out in the editorial standards.

What is checked before anything is published

A build that fails any of the following does not ship, and switching one off to save time is not a decision anybody here is allowed to make.

Bottom line

Every caffeine figure here is a public reference value, mostly from manufacturers and the USDA, stored to the whole milligram with its serving size attached and stamped with a dataset version. Every time-based figure is computed from one published equation with a 5.7-hour half-life and a 100 mg threshold, from a single module that the site, the calculators and the API all share. The model has no absorption phase and does not adjust for anything about you, so treat a curve as a population estimate rather than a measurement. If a number here is wrong, the updates log is where the correction will appear, under a date.

CoffeeLog · iOS

Track this automatically with CoffeeLog

This site answers the question once. CoffeeLog answers it every day — logging what you drink, showing caffeine fade in real time, and telling you the last cup you can have before it reaches your sleep.

Track caffeine automatically Get the app