Methodology
How the numbers on this site are computed, in plain language. Every aggregate links here, so these rules are the ones you can hold the figures to. Where a rule and a number disagree, the number is wrong.
Median, never mean
Every headline figure on this site is a median. One mistyped price, one station on a motorway service area, one clearance pallet should not move a regional figure.
Where a spread is useful we show the observed minimum and maximum alongside it, so the shape of the sample is visible rather than averaged away.
Sample size is always shown
Every aggregate carries its sample size, the number of contributors behind it and the number of distinct sellers it covers. Those three numbers travel with the figure wherever it appears.
There is no confidence percentage. "87% confident" is unfalsifiable, it invites argument it cannot settle, and on a sample of four it is simply fake precision. The counts are checkable; a percentage is not.
Minimum sample thresholds
Where an area has too few independent sellers or too few independent sources, the figure is withheld and the page says so in place of the number.
That is policy, not a failure. Publishing a regional median drawn from two sellers would produce a confident, wrong, quotable number, and quotable is the dangerous part.
Freshness is relative to the category
Four days is fresh for wheat and useless for petrol. Each category declares how often it expects to update and how long a price stays meaningful, and staleness is judged against that promise rather than an absolute age.
A price that is fresh on one page and stale on another at the same age is the system working, not a bug.
Prices are step functions
A price holds until somebody observes it change. Charts therefore draw step lines: the value is flat between observations because that is what was true, and a smooth curve between two points would invent readings nobody took.
Where coverage stops, the line breaks. Gaps are never interpolated and never bridged.
Local calendar dates
An observation belongs to the local calendar date where it was recorded, not to a UTC timestamp. A price read at 00:30 in Paris is a Paris date, not the previous day.
Daily series are therefore comparable across countries without an off-by-one at the edges of a time zone.
Currency
Amounts are converted at the exchange rate that applied on the observation date, and that converted value is frozen when the record is written.
A historical chart never changes shape between page loads because today's rate moved. Amounts are stored and transported as exact decimal strings, never as floating point.
Comparison units
Prices are compared per litre, per kilogram or per piece, so that a 5 L drum and a 1 L bottle sit on the same axis. Where the source does not publish a unit price we derive it from the pack size.
A derived unit price is labelled as derived. It is never presented as though somebody measured it.
Corrections
The ledger is append-only. A correction is a new record that supersedes the old one, with both kept and both visible in the observation history.
Nothing is silently rewritten. If a number here changes, there is a row explaining when it changed and what it replaced.
Accuracy
Prices here are reported by contributors and gathered from public sources. They change constantly, and a price recorded this morning may already be wrong. Nothing on this site is an offer to sell, and no seller is bound by anything published here.
Check with the seller before buying or travelling. If you find a figure that is wrong, report it: a correction becomes a new record in the ledger, and the page updates with its history intact.