Your watch says 5.14 km. Your phone says 5.31 km. You ran one route.
Both are measuring the same thing with the same satellites, so the gap is not about signal. It is about what each device decided to believe — and that is a choice made in software, not a property of GPS.
Where the phantom distance comes from
A stationary phone does not report a stationary position. It reports a position that wanders, typically by a few metres every second, as the receiver re-estimates from a changing set of satellites.
Sum those wanders naively and the arithmetic is brutal. A 3 m drift every second adds:
- 180 m over a minute standing still
- 1.1 km over a ten-minute coffee stop
- Several hundred metres across a run's worth of traffic lights and junctions
And it only ever goes one way. Noise adds length; it never subtracts it, because the distance between two points is never negative. An unfiltered GPS distance is always too long, never too short — which is exactly why it survives casual inspection. A number that reads high after a run feels like a good run.
What a filter has to decide
The fix is to not count movements too small to be real. The subtlety is in "small".
A fixed threshold — say, ignore anything under 5 m — is the obvious approach and it is wrong in both directions. In open sky with ±3 m accuracy it discards real slow movement. In an urban canyon with ±15 m accuracy it waves noise straight through, because the drift is bigger than the threshold.
The threshold has to scale with the receiver's own reported uncertainty. You cannot measure a movement smaller than your uncertainty about where you are. A phone reporting ±10 m that appears to shift 8 m has not necessarily moved at all.
That is the rule Track Me uses: a step counts only when it exceeds the larger of 5 m and the accuracy reported for either end of it. Three more checks sit alongside it:
| Check | Why |
|---|---|
| Accuracy worse than 30 m → fix rejected | Too vague to measure a step with |
| Implied speed over 45 m/s (~160 km/h) | A teleport, not a stride |
| Non-positive time between fixes | No basis for a speed check at all |
A rejected fix still appears on the map — it is still roughly where you are. It just does not add to the total. That distinction is what lets a parked phone read 0 m while still drawing its own position.
Does the filter over-correct?
That is the fair question, and the honest answer needs a real ride rather than a test fixture. Here is one, measured three ways:
| Source | Distance | What it actually measures |
|---|---|---|
| Track Me, 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 |
The first two agree to 0.6%, and they are not two GPS opinions — Google is measuring the length of road segments from its own map data. Two unrelated methods landing in the same place is about as good as ground truth gets without surveying equipment.
The ride included 1:36 of stopped time in stop-start traffic, which is precisely the condition that inflates an unfiltered total. Track Me came in fractionally under the road-network distance. An absent or too-permissive filter would have put it at 8.5–9 km.
The internal arithmetic is consistent too: 8.05 km ÷ 22:35 of moving time = 21.4 km/h, exactly the average displayed. Not three separately wrong numbers that happen to look plausible together.
The odometer was the outlier
Note which of the three sources is furthest out. The bike's trip meter read 6.7 km against a truth of about 8.05 — 16.8% low.
8.05 ÷ 6.7 = 1.2015. A ratio that close to a round 1.2 points at gearing or rolling radius rather than random error: a non-stock sprocket, a larger tyre, or a speedometer calibrated for a different wheel. A late trip-meter reset would need 1.35 km of riding before the reset and would not produce so clean a ratio.
The device with a mechanical count of wheel revolutions — the one that feels like it must be right — was the least accurate of the three. That has consequences for taxi meters, which read an odometer of exactly this kind.
So which number should you trust?
Between two GPS devices, prefer the one that reads lower, other things being equal. Both are subject to the same noise; the lower reading is the one filtering more of it out. This is the opposite of the intuition that a bigger number means a more sensitive device.
Between GPS and a wheel sensor, the wheel sensor is more precise and only as accurate as its calibration constant. A footpod or bike computer that has been calibrated against a known distance will beat GPS. One running on factory defaults with the wrong tyre size can be 15% out, forever, consistently — which is worse than noise, because it never averages away.
Against a route planner, expect GPS to read very slightly low on a route with tight corners: fixes cut the inside of a bend that road geometry follows exactly.
Making your own recordings better
- Wait for a good fix before starting. The first position after a cold start is the worst one you will get.
- Avoid the first minute under cover. Multipath in an urban canyon or under trees is the largest error source there is.
- Do not compare a phone in a pocket to a watch on a wrist. A wrist has a clear view of the sky most of the time; a pocket has your body between it and half the constellation.
- Expect gaps to read low. A tunnel, or a screen that locked, contributes nothing rather than a guessed straight line — that is deliberate.
Where to go next
- Track your run or ride with just your phone
- Your phone says 8.05 km, the meter says 6.7 — the same ride, and what it means when money depends on the number