Why partial fill-ups wreck your MPG figures
This applies to almost every fuel app, not just one. If you've ever looked at your history and thought "why is that month so much worse", this is usually the answer.
The one rule everything follows
You can't measure how much fuel a car used. There's no sensor for it that you have access to. What you can measure is how much fuel it took to get the tank back to where it was before — and that only works if you know where it was before.
So the rule is: fuel economy is only measurable between two moments when the tank was in the same state.
Filling to the brim gives you that. So does filling every time the low-fuel light comes on, as long as you're consistent about it. What doesn't give you that is putting in whatever amount happened to be convenient.
What actually goes wrong
Say you fill to the brim on Monday and again on Friday.
| Day | Odometer | Filled | Fuel in |
|---|---|---|---|
| Monday | 10,000 mi | To the brim | 12.0 gal |
| Friday | 10,360 mi | To the brim | 12.0 gal |
Both times the tank ends full, so those 12 gallons on Friday are exactly what you burned over 360 miles. That's 30.0 MPG, and you can trust it.
Now the same week, except on Wednesday you're passing a cheap station and put in five gallons.
| Day | Odometer | Filled | Fuel in | What a typical app shows |
|---|---|---|---|---|
| Monday | 10,000 mi | To the brim | 12.0 gal | — |
| Wednesday | 10,180 mi | Partial | 5.0 gal | 180 ÷ 5.0 = 36.0 MPG |
| Friday | 10,360 mi | To the brim | 7.0 gal | 180 ÷ 7.0 = 25.7 MPG |
You drove exactly the same 360 miles and burned exactly the same 12 gallons. Nothing about the car changed. But your log now shows a brilliant Wednesday and a terrible Friday, and neither figure means anything at all.
The average still works out to 30. That's the trap — the totals stay right, so nothing looks obviously broken. It's the individual entries that are nonsense, and those are what you look at when you're trying to work out whether the new tyres helped.
Most apps show you both of those numbers without a word of warning.
The low-fuel light counts too
Plenty of people never fill to the brim. They drive until the light comes on and then put in twenty or thirty pounds' worth.
That's still a consistent state — the light comes on at roughly the same amount of fuel left every time. So light-to-light intervals are comparable to each other, even though the tank is never full. The baseline is just "however much is left when the light appears" instead of "full".
What you can't do is compare a light-to-light interval with a brim-to-brim one. Different baselines. Mixing them in one calculation is the same mistake as before, wearing a different hat.
How to check your own history
Whatever app you use, export a CSV and look for two things.
A "partial" or "full tank" column. If it exists, sort by it. Any entry that isn't a full tank, and any entry directly after one, is suspect. If that's a handful out of two hundred, ignore it. If it's a third of your history, the trend line you've been looking at is largely noise.
Figures that jump in pairs. A suspiciously good number followed immediately by a suspiciously bad one — or the reverse — is the signature of exactly this problem. Real changes in driving don't alternate like that; they drift.
If you find a lot of it, you haven't lost the data. The distances and volumes are all still there and still correct. It's only the per-entry economy figures that were computed on a bad assumption.
What a fuel app ought to do instead
Three things, none of them complicated:
Ask how the tank was filled, rather than assuming. Keep full-tank entries and low-fuel-light entries in separate chains so they never contaminate each other. And when an entry isn't a valid comparison point, carry its fuel forward to the next one that is, instead of inventing a figure for it.
Run the Wednesday example through that and it gives you one number for the week — 360 miles on 12 gallons, 30.0 MPG — which is the only honest answer available.
FuelJot works this way. So do a couple of others, partially. It's not a hard problem; it's just one that gets skipped because assuming a full tank makes the code simpler and most users never find out.
A caveat, since we're being precise
"Filled to the brim" isn't perfectly repeatable either. Where the pump auto-stops depends on flow rate, nozzle angle, and how level the car is parked. There's maybe one or two percent of slop in it.
That's fine. It's random, so it averages out over a few tanks, and it's an order of magnitude smaller than the error from a mis-handled partial fill. Worth knowing about; not worth worrying about.
Written by Xing Ji, who makes FuelJot. If something here is wrong or unclear, I'd like to know: support@getfueljot.com