About seven years ago we conducted our first head-to-head, GPS accuracy test. It was a lot of fun, and we learned a lot not just from the test but also from reader comments. Understandably mountain bikers argue that an oval track test doesn’t simulate the real-world conditions experienced on the trail where tree cover, mountain shadows, and squiggly trail lines challenge even the most high tech devices. We hear you. And yet for Round 3, we’re back at the track.
An oval running track offers ideal GPS testing conditions: a known distance and elevation along with wide-open skies for optimal satellite connections. If a GPS device struggles here, there’s a very good chance it will struggle just as much or even more on a noisy, messy bike trail. By looking closely at the data from this test we get a very good idea about how accurately each unit will perform on the trail.
|Wahoo Elemnt Bolt v2||-0.50%|
|Garmin Forerunner 235||1.00%|
|Bryton Rider 750||-2.00%|
|Bryton Rider 15 neo||-3.50%|
The chart above shows how accurate each device’s distance was on our control route, which is four laps around a quarter-mile track. The test was conducted twice and the results are averaged. The wheel-based computer listed above is a Shimano STEPS e-bike system.
When we use the term ‘GPS accuracy,’ what we’re really talking about is how close the actual distance traveled and vertical elevation climbed are to what the GPS unit reports. This is influenced by a number of factors, which I’ll address individually below.
- How often points are collected.
- Warm up and auto start / stop.
- The pinpoint accuracy of each point plotted along the route.
- Elevation calibration and data post-processing
Polling frequency is perhaps the single biggest factor when it comes to GPS accuracy for mountain biking. Each GPS unit has a set number of location checks that it makes every minute, and some devices allow the user to adjust this frequency. Most buyers will simply use the unit’s default settings. Less frequent polling has the advantage of reducing data storage requirements and may also help extend battery life. More frequent polling should improve accuracy, especially for tracking singletrack rides that are full of twists and turns.
|Device||# data points|
|Wahoo Elemnt Bolt v2||238|
|Bryton Rider 750||214.5|
|Garmin Forerunner 235||85|
|Bryton Rider 15 neo||54.5|
The chart above shows averages of the number of data points collected by each device during the tests. As a point of reference, the Wahoo Bolt and Strava app both seem to plot location about once a second. Note the wide range of points collected.
When a computer polls less frequently — say just once every four seconds like the Bryton Rider 15 neo — there’s a chance it’s missing the dips and turns in the trail. GPS devices calculate the distance traveled by simply measuring the distance between each plotted location during the ride using straight lines. In the left plot above the curve of the track isn’t accurately captured; it looks like the rider took shortcuts along the way. As a result, the distance tracked by that device is under-reported. If your GPS consistently shows lower mileage than your buddy’s after a mountain bike ride, chances are good that your device is not polling as frequently.
If you can crank up polling frequency on your app or device, that is an easy way to improve accuracy. If not, you may need to upgrade to a more expensive unit to get better accuracy. At the other extreme, polling too frequently could lead to over-reported distances as margins of error compound. Polling once a second seems to be the sweet spot. Oh, and if you’re riding especially fast, try slowing down to get more accurate distances.
In the early days of GPS it could take agonizing minutes for a device to warm up and get a lock on enough satellites for tracking. Today’s GPS units tend to warm up much quicker, but it’s still necessary to find satellites before starting.
The plot above is from the Strava iPhone app and shows that the first point it recorded is off by a lot. In fact, this one point essentially tanked the app’s performance in our test; it’s likely it would have been near the top, rather than the bottom, in the distance test. As a device warms up, it’s trying to get a lock on signals from various sources — generally satellites, but smartphones also triangulate using cell towers and other wireless data sources. The more sources your GPS can lock onto, the more accurate your position. In a short, one-mile test like this one, just one errant data point from a fuzzy location lock makes a big difference. On a longer ride, a blip like this won’t be noticeable.
Many GPS devices include an auto-pause feature that starts and stops recording depending on your movement. Most allow you to disable this feature if you like, though it can be helpful. In this test, some of the devices were using auto-pause so they needed a second or two to automatically start recording once the bike was rolling. You can see this in the right image in the polling frequency plot above where the start and end points don’t quite match up.
Before you go turning this feature off to improve your GPS accuracy, note that auto-pause will actually improve accuracy in most cases, especially if you find yourself stopped for any amount of time during a ride, unlike in our test. If you’ve ever left a GPS unit running while enjoying a beer as I did in the plot above, you’re no doubt familiar with the GPS dance. Individual point readings each introduce their own margin of error which makes it appear to the GPS that you’re moving, even when you’re not. My advice: use auto-pause for more accurate distances. Auto-pause tends to under-report distances slightly, while not using it tends to over-report distances, sometimes by a lot.
As I hinted in the auto-pause section, each time a device reports a location there is some margin of error built into that position. Myriad factors play into that error including the sensitivity of the device and signal strength due to cloud cover, tree cover, and mountain shadows, just to name a few. While we can’t control the weather and by extension, signal strength, some GPS units are more sensitive than others and therefore will tend to introduce fewer errors.
This is perhaps the most difficult to quantify; in general, more expensive devices will include more sensitive receivers and chip sets. Looking at the data from this test, most if not all of the error found can be explained by polling frequency and warm-up / auto-pause factors rather than signal strength, especially given the ideal testing conditions.
To get better accuracy, a more expensive device with better chips and support for multiple satellite links can help. In addition, simply ensuring the device is free from obstructions can also help. For example, moving a smartphone from a pocket to the bars could improve reception.
|Device||El. change (ft.)|
|Wahoo Elemnt Bolt v2||+1.5/-3|
|Garmin Forerunner 235||+26.5/-25.5|
|Bryton Rider 750||+37/-38|
|Bryton Rider 15 neo||+35.5/-32.5|
GPS units are generally very good at calculating distances, and slightly less good at calculating elevation. I like doing a track test because it’s about as flat of a surface as you can find, so the elevation plot should look like a pancake. But it never does. Take a look at these samples.
I’ve found the most accurate elevation data comes from services like Strava that correct the data in the cloud after the ride. Each data point is essentially collected in 3D with an x, y, and z coordinate. Post-processing takes the x and y coordinates and looks up the z using a massive database of known elevations around the globe, replacing the recorded z with the known z.
The Strava app showed the least elevation variation in this test round, and from what we can tell, the service post-processes ride data. Garmin may be post-processing the data, though in past tests we’ve surmised they are using an older, less up-to-date elevation database. Bryton does not seem to correct elevation data at all and instead relies on values collected on the device itself. Wahoo was second-most accurate, and looking at the plot it doesn’t appear they are actually post-processing the data, which if true would be impressive.
More expensive GPS units tout additional sensors that seek to improve elevation accuracy, and they do seem to help a bit. However, none are a match for elevation lookup after the ride so if you have a cheap GPS, just run the data through an online service to get the most accurate elevation data.
Looking at the first chart it’s tempting to conclude that some GPS devices are more accurate than others and are therefore better purchase options. However, some of the factors that affect accuracy are actually within the user’s control, making it possible to squeeze better performance out of any given device with the right settings.
Thanks for the test! Any chance you did (or plan to do) this with a Garmin product? I recently bought a 530 to integrate all my sensors because I can’t find a decent mount for my phone and I’d rather replace a less expensive device. I’m not sure it was the best choice, so I’m still looking… /sigh
We don’t currently have access to the Garmin 530 but you can do this same test yourself on a track! Even if you just compare it to a smartphone running a tracking app like Strava that should give you a good idea. Even better, send us the data from your track test and we’ll analyze it to see how often it’s plotting the breadcrumbs.
Doh! Thanks for the suggestion. It may take me a while to do this, but I can measure against my Polar Vantage V2, Strava App and the Garmin 530. I will gladly share my results and send you the data to analyze. I’ll reach out to you once I have the test done.
Great article. I remember the previous test (I had a Fenix 2 then which was in the first test) and I just got a Garmin 235 (simplifying!). The 235 has for me the best accuracy I’ve ever got, between other watches and smartphones. I saw the polling frequency for the 235 was one of the lowest, 85, but you said about 1 a second is the sweet spot. I think you are right. On my phone I can choose frequency and I agree, I think over polling adds distance because of the margin of error additions with more pings. What about averaging? Lets say you take 3 pings a second. What if you averaged those three pings, wouldn’t that increase accuracy by lowering the the margin of error problems? I’m almost always under tree cover on my mountain bike, and the margin of error is my worse enemy out there. Thanks! great article(s)!
It is interesting that the Garmin Forerunner did so well with so few points. In the previous test we noted the Garmin Fenix uses “smart polling” to plot a point only if it isn’t in a straight line with the previous two points, so it’s likely the Forerunner works similarly.
I’m not great at statistics so I don’t know if averaging 3 pings could effectively reduce the error. I think it’s time to interview an engineer who designs these things!
In the woods is where having a wheel sensor is super helpful as otherwise you’ll often be losing miles of distance measured over the span of a typical ride.
Yep. I got a Wahoo wheel sensor that the Wahoo app can read. Except when I upload the ride from the Wahoo app to Strava, it just uses the GPS data 🙁
So I got a cheap Garmin Edge 25 that can use the wheel sensor, and no more 22 mile rides that come in at 19 anymore!
That’s interesting – it shows the same mileage for me on Wahoo and Strava.
Maybe they fixed it. I’ll have to try recording a ride with the Wahoo app again and see. Thanks!