Next to a fuel status, a price or an opening time, this site prints a confidence percentage. It is not a rating of the station. It is our own estimate of how likely it is that the thing you are reading still holds — and because a number you cannot check is a number you have to take on trust, here is the whole calculation.
Why publish the formula at all
Other maps show a confidence figure and decline to explain it, usually on the reasonable ground that a published formula can be gamed. We take the opposite view, for a simple reason: this site's one real promise is that it tells you when it does not know. A percentage you cannot audit undoes that promise quietly, in the one place where it matters most.
There is also a practical answer to the gaming worry. If a formula this simple could be meaningfully manipulated by someone who knew it, it was too naive to hide behind a curtain either. Publishing it is a commitment to keep it worth publishing.
Step one: how old is it
Every datum is placed in one of four bands by its age, measured from the moment it was recorded rather than the moment we fetched it:
- Fresh — six hours old or less.
- Aging — between six and twenty-four hours.
- Stale — between one day and seven days. Still shown, still labelled.
- Unknown — older than seven days, or carrying no timestamp at all. No percentage is printed.
That last line is the important one. Past seven days we do not produce a low score; we produce no score. A very low number still looks like an answer, and there is no answer to give.
Inside the bands, age converts to a recency factor between 0 and 1. It is 1.0 for anything under six hours. It falls in a straight line from 1.0 to 0.6 across the aging window, then from 0.6 to 0.1 across the stale window, and never drops below 0.1.
Step two: who said so
Recency is multiplied by a weight for the source, because six hours old means different things depending on where a fact came from:
- Official — 1.0. A government or regulator feed. French pump prices, the Spanish and Italian ministry files, the German market-transparency data. These carry their own timestamp and are published under a legal obligation.
- Driver — 0.75. Somebody standing on the forecourt. Very current, and one person can still be mistaken or unlucky.
- OpenStreetMap — 0.5. An edit by a mapper. Excellent for what a station is; it was never a statement about today.
Step three: did anyone else agree
Repeat confirmations add a small bonus: 0.08 for each one after the first, capped at 0.25. Three drivers reporting the same thing is better evidence than one. Twenty is not twenty times better, which is what the cap is for.
The three parts combine as (recency × source weight) + confirmation bonus, clamped to the range 0–1 and shown as a percentage. Seventy-five and above reads High, forty-five and above Medium, below that Low.
Four worked examples
These are not illustrations. They are the output of the same code that runs on the page you clicked from:
- Official price, 2 hours old → recency 1.0 × weight 1.0 = 100%, High.
- Official price, 20 hours old → 69%, Medium. Nothing is wrong with it; it is simply yesterday's.
- Driver report, 10 hours old, 3 confirmations → 84%, High. The same report with one confirmation scores 68%.
- OpenStreetMap edit, 3 days old → 22%, Low. At 40 days it drops out of the scale entirely and the page says it has no current data.
What the number is not
It is a statement about our evidence, not about the business. A quiet rural station that nobody has reported on can be perfectly reliable and still score Low here, because nobody has told us anything recently. The percentage measures how much we know, and a low one is us admitting the gap rather than warning you about the forecourt.
It also cannot see a pump that broke ten minutes ago. No map can. A price feed updated within the hour is the strongest signal that exists in this data, and it is still a record of the past.
Where a grey pin appears, the honest reading is the plain one: nobody has checked here lately, and we would rather say so than colour it green and hope.