Why is GPS-measured distance so inaccurate?

Jeff Woods
7 min readMay 4, 2021

I hear it all the time: why does the distance recorded by my GPS seem incorrect? I know I rode 12 miles on my bike… why does it say I only did 11.2?

There are a few reasons, but first we need to understand how GPS works. The math and physics can get very complicated, so we are going to use our imaginations and make a few assumptions. If you’re interested in challenging these assumptions, you should find no shortage of resources online to properly sort things out!

Satellite navigation systems, such as the US-built NAVSTAR GPS, depend on constellations of satellites being positioned in a precise orbit around the Earth. The GPS “constellation” consists of 24 satellites. The EU and Russian governments also operate their versions of GPS, known as Galileo (30 satellites) and GLONASS (24 satellites). Within the US, the Federal Aviation Administration also operates the Wide Area Augmentation System (WAAS). Many modern satellite navigation receivers are capable of receiving signals from more than one of these systems.

Each of these satellites broadcast a radio signal which encodes a very precise time. The signals travel at (roughly) the speed of light, which is approximately 300,000 km/sec, or 186,282 miles/sec. Imagine that we can somehow measure the time it takes a signal to travel between the satellite and our receiver. Knowing the time and speed at which the signal traveled would allow us to directly calculate our distance from the satellite.

Imagine too that we could know the satellite’s precise location at the moment the signal was broadcast (keeping in mind that the satellite is moving at incredible speeds!). Flashing back to high school geometry for a moment, you might recall that a location (point) and distance (radius) define a sphere in three-dimensional space.

It should follow that receiving a signal from a satellite allows us to know our location on the surface of a sphere. Adding additional signals from three other satellites places us on the surface of three additional spheres. Each sphere is centered on a different location and has a different radius.

If you can visualize the intersection of two spheres, it would form a two-dimensional circle (think about bubbles blown from a wand sticking together may help). Adding the third sphere yields two points, and the fourth sphere identifies a unique location.

Your receiver, then, is located precisely at the intersection of the four spheres imagined above. The spheres are centered around satellites (which are in motion), and we can measure our distance from these satellites by the time the signals traveled. We know the travel time by the difference between local time (eg, your “now”) and the time the signal was broadcast from the satellite (encoded in the signal).

This can be hard to visualize, but there are videos on YouTube that can help to understand:

It should be obvious that the ability to accurately compute the signal’s travel time, and thus the distance from the satellite, is critical in finding your location. If anything were to delay the signal, the spheres we use for finding the location would be altered, affecting the final calculation of position.

Unfortunately, there are a few ways a signal can be delayed on its way to your receiver, resulting in a longer travel time. The upper layers of Earth’s atmosphere or moisture can act to slow or bend signals, not unlike a prism. This results in the signal traveling in a longer path and a longer measured distance from the satellite.

Reflection off of hard objects, such as mountains, hills, buildings, or even a line of trees can increase the distance a signal travels to your receiver. Before the advent of HDTV broadcasting, when television signals were analog rather than digital, delays caused by reflection could be clearly seen as ghosting in television signals.

Another source of error is noise, which might be introduced by your antenna or electronics. Less expensive receivers, such as those in a cell phone, simply cannot separate the signal from the noise as effectively as a dedicated receiver.

All of this adds up to an error that your receiver may share as “EPE”, or “estimated positional error”. In most cases, this error is less than 15m, or about 50 feet. When your receiver reports your position, it is easy to allow ourselves to believe that it “knows” where you are, but the truth is that your reported position is somewhere within about 50 feet of your actual position.

While a GPS can tell you where you are right now with accuracy, keeping a history of where you have been is something of a compromise. A GPS track is recorded as an ordered sequence of points. Each of these points reflect your estimated position at a particular time. It is important to recognize that a GPS-recorded track is not a continuous line on the ground, like a road or a trail that can twist and turn, but more like the dots in a “connect the dots” puzzle.

When deciding how frequently to record a new point, there are two basic choices: temporally (time), or spatially (distance). In the first mode, the receiver will note your location every few seconds or minutes. Operating in the second mode, the receiver will not record a new point until it detects that you have traveled some pre-set distance from the previous point.

(Note: Some GPS receivers also support a hybrid mode, where they attempt to guess at reasonable intervals — possibly swapping between time and distance — based on your perceived movement. This can result in better quality tracks, but you will have to experiment with your hardware and specific use case to decide!)

Either mode of recording a GPS track result in errors, and it is these errors which affect measures of distance and speed. Both result in something closer to the connect-the-dots puzzle than your actual path over the ground. As anyone who has ever done one of these puzzles can attest, approximating a curve with a series of straight lines is not optimal. It may capture the spirit of the shape, but may also require that you use your imagination a bit. We’ll see this effect on a GPS track more clearly later.

When operating in the time-mode (recording a point every few seconds), the receiver’s error due to factors causing EPE becomes more significant. This is especially true when moving slowly or sitting still, the receiver is still guessing at our location. These guesses are good, but there is always a small error in each guess.

In our tracks, this error will surface as “jitter” and will appear as if you were wandering around aimlessly when in fact you were stationary:

Here, actual position is the black dot which is not moving. With a slightly new position being recorded every few seconds (due to EPE), and each position being slightly different, the track gives the appearance of moving.

When operating in the distance-mode (recording a point only after traveling a minimum distance), the quality of the “connect the dots” representation of reality degrades quickly as the minimum distance between points is increased. An approximation of a curve made using straight lines cannot be longer than the curve on which it is based. The fewer points you use, the less accurate the approximation will be.

The same curve, approximated using 7 points vs. 4 points. The red line traces a shorter route in both versions, but is significantly shorter in the right curve. The relative error is clear.

As a final note on recording a track, the method used has some very practical impacts too. If points are recorded too frequently, it has a cost measured in terms of both storage and processing power. Excessive use of storage will result in shorter tracks being recorded. The additional processing power might run down your batteries more quickly.

Let’s conclude with a real-world example. This is an actual recording made on a trail near my home:

Actual path is dotted, GPS track is solid blue line. North is up.

Ask yourself, “which is longer in the image above: the trail (dotted line), or the GPS track (solid blue line)?”

We can see that the track is an approximation of the trail. Where the trail curves, the points included in the trail are connected using straight lines. We can also see what is likely the effects of EPE on the south end of the track, likely due to a change in tree cover or topography.

It should be obvious that unless the EPE puts you on the outside of the trail’s curves consistently, the recorded track will be shorter. To be on the outside of the curves would require the error to alternate east/west in an unlikely and uncooperative manner!

So, how do we reduce error? It depends…

Consider how quickly you are moving against a typical EPE. If you are moving less than your average EPE every few seconds (walking), you should almost certainly use the distance threshold before recording a new point. Otherwise (cycling), you will probably be better served by recording a new point every few seconds.

If your GPS receiver supports a hybrid mode, certainly experiment with it! Keep in mind, though, that the quality of the resulting track may vary greatly if you switch activities.

Use a quality GPS receiver. While phones have come a long way in the past few years, they remain inferior to dedicated receivers.

If you are a cyclist, invest in a speed and distance sensor. These attach to your wheel and will pair to the GPS receiver using either BlueTooth or ANT. Each time your wheel makes a revolution, it will “tick off” a preset distance.

Be certain to set the wheel circumference correctly, though — tire size, width, pressure, and tread patterns can all have a huge impact. Do not use the “recommended” values included in the documentation, and avoid using the auto-calibration feature. Instead, with the bike fully loaded (rider + gear), roll the bike forward 3–4 revolutions of the wheel and then measure the distance. Divide the result by the number of revolutions. This will reduce error significantly.

Whatever you end up using, I strongly recommend experimenting with some of your own recorded tracks. The GPX format is nearly universal, and the files can be easily downloaded from most receivers. Use a tool such as GPXSee or JGPSTrackEdit to view them — you’ll be amazed!

--

--