We measured one ride three ways to find out how far apart a phone and a vehicle's own instruments can legitimately sit. The answer is: further than almost anyone assumes, and the phone was not the outlier.
This matters because the entire premise of checking a taxi fare with a phone rests on knowing how much disagreement is normal.
The ride
Colombo, Slave Island to Peliyagoda, on a motorbike, 4 August 2026. Ordinary urban traffic including 1:36 of stopped time. 22:35 moving, 24:11 elapsed.
| Source | Distance | What it actually measures |
|---|---|---|
| GPS recording, drive mode | 8.05 km | GPS fixes, accuracy-scaled step filter |
| Google Maps route | 8.1 km | Road-network geometry — no GPS involved |
| The bike's trip meter | 6.7 km | Wheel revolutions × a calibration constant |
Two of these agree, and they are not both GPS
The GPS recording and the road-network figure differ by 0.6%.
That agreement means more than it first appears, because Google Maps is not offering a second GPS opinion. It is measuring the length of road segments from its own map data — surveyed geometry, no satellites involved. Two methods with nothing in common landing 50 metres apart over 8 km is about as close to ground truth as you get without survey equipment.
The internal arithmetic is consistent too: 8.05 km ÷ 22:35 of moving time = 21.4 km/h, which is exactly the average the recording displayed. Not three separately wrong numbers that happen to look plausible together.
The filter was not over-reading, which is the failure to watch for
Unfiltered GPS distance always reads high. Noise adds phantom length and never subtracts it, worst at low speed and in stop-start traffic — and this ride had 1:36 of stopped time in it, which is exactly the condition that inflates a naive total.
The recording came in fractionally under the road-network distance. An absent or too-permissive step filter would have put this at 8.5–9 km.
That is the accuracy-scaled step threshold doing the job it was written for, on a real ride rather than a synthetic stationary stream. The mechanism is here.
The odometer is the outlier, by 16.8%
The bike's trip meter read 6.7 km against a truth of about 8.05.
8.05 ÷ 6.7 = 1.2015.
A ratio that close to a round 1.2 is not random error. Random error does not land on clean numbers. It points at gearing or rolling radius — a non-stock front sprocket, a larger tyre, or a speedometer calibrated for a different wheel size. A late trip-meter reset is the other candidate, and it does not fit: it would require 1.35 km of riding before the reset and would not produce so tidy a ratio.
So the instrument that feels most authoritative — a mechanical count of actual wheel revolutions, no satellites, no filtering, no software — was the least accurate of the three, by a factor of twenty-eight over the gap between the other two.
Why this decides how you read a taxi fare
A taxi meter reads an odometer. Same mechanism, same failure mode: a pulse count multiplied by a calibration constant that assumes a particular rolling radius.
Meters are calibrated and sealed, and a licensed one has been checked against a known distance — which is a real safeguard the bike in this test did not have. But tyres wear, get replaced with a different size, and run at different pressures, and the calibration is a constant that does not know about any of it.
This ride is a measurement of how far an uncalibrated odometer can sit from GPS truth: nearly 17%.
Two consequences, and both are already baked into how Meterless presents its numbers.
1. Never claim the meter is wrong
Present the measurement beside the meter's figure and let the passenger judge. The meter is the legally certified instrument; a GPS estimate asserting otherwise is exactly the posture that turns a useful tool into a liability — and, in a dispute, into the reason you are not taken seriously.
This is also why Meterless is an estimate for the passenger and never a meter. Taximeters are controlled instruments carrying calibration seals, and a phone running uncertified software is not one — which is a limitation to state, not to work around.
2. The direction of the error decides whether it matters
An odometer reading low means the meter under-charges and the phone reads high. Nobody is harmed; the driver is losing a little.
The case worth having a tool for is the reverse: a meter reading high, where the passenger is paying for distance that was not travelled and has nothing concrete to point at. Same 17% magnitude, opposite sign, entirely different consequence.
How much disagreement is normal, then?
From this ride and the physics behind it:
- Under 5% — expected. Two different quantities measured two different ways. Proves nothing in either direction.
- 5–15% — plausible from odometer calibration alone. Worth noting if it repeats across several rides in the same vehicle; not worth raising once.
- Over 15% — beyond what this test found from a clearly miscalibrated odometer, and worth asking about if the coverage figure is high.
That last condition is not a footnote. A GPS estimate over a ride that was 8% unmeasured — tunnels, urban canyon, a poor sky view — is not a 92%-accurate estimate, it is an estimate with a hole in it. Which is why coverage is reported next to the total rather than hidden behind it: the number carries its own error bar, and reading it without that is how you end up confidently wrong.
What we still want to measure
This is one ride, and one ride is not a data set. Three cases would sharpen it:
- A long stationary stretch, to test the time rate against a real meter rather than a simulated wait
- An urban-canyon route, where low-accuracy fixes are discarded and the estimate should visibly read low with the coverage figure explaining why
- A tunnel, for gap reporting — an interval that accrues no distance and no time, because nobody knows whether the vehicle was moving
Raw numbers get recorded either way, especially when they disagree. A calibration file that only contains the runs that went well is not a calibration file.
Where to go next
- How a taxi meter actually works
- Was I overcharged by a taxi?
- Why GPS distance disagrees with your watch