T he pursuit of accurate riding data is a slippery slope, and at some point, you have to settle for "good enough." Conversely, I know several serious riders that don’t track their rides at all and think it’s sacrilege. To each his own. As an admitted tech-head and lover of all things precision (don’t get me started on tools), I have spent a decent amount of time learning about GPS and barometric altimeter technology and how Strava/Garmin deal with them.
The biggest issue is accurately calculating elevation gain. Many people assume that since GPS is fairly accurate in locating your position in 2D (where you are on a map), that it should also be able to triangulate your exact elevation. Unfortunately, that’s not the case. GPS was designed for 2D location finding, and while it can roughly find your elevation, it’s not terribly accurate, and can jump around substantially. For much better elevation gain/loss data, your device must have a barometric altimeter. A barometric altimeter measures altitude not based on GPS satellite signals, but by measuring atmospheric pressure (which changes reliably as you vertically move up or down). You would think that you’d be golden if you had a decently accurate GPS device that also had a barometric altimeter. But alas, Strava doesn’t want to make things too easy.
For reasons unknown to me, Strava tightly regulates which devices it will "trust" elevation data from. This baffles and irritates me to no end. Instead, Strava really has a thing for its Digital Elevation Model (DEM). A DEM is basically a glorified and digitized topographic map. By laying your 2-dimensional GPS track on top of its DEM map, Strava can calculate your exact elevation at any given point, and thus calculate the total elevation gained and lost during a ride or run. Sounds pretty awesome right? For sure, with the glaring and unforgivable exception being that the DEM map itself is not all that accurate. If you search the interwebs, you’ll find thousands of complaints about the accuracy of Strava’s elevation calculations.
- Strava Rep "Rudolph"
I have read that Strava’s DEM has a resolution of 10 meters. Meaning that every 10m square of land is assigned a single absolute elevation. That’s not too bad, all things considered. If you’re going up a steep hill, the elevation will jump rapidly from one 10m square to the next, but the overall elevation GAINED should be the same. You will lose elevation gain/loss from smaller things like rollers, creek crossing, obstacles, etc. The real issue is that the elevation values assigned to all of those points in the DEM are not very accurate to begin with. Plus you have constantly changing landscapes from construction, new trails, mother nature, etc.
For example, so far in 2017, I have "lost" almost 4,000 feet (or about 15% average) in elevation gain when comparing my Garmin barometric elevation data with Strava’s own elevation calculations from those same rides. I don’t know about you, but four-thousand feet is a big deal to me, especially considering that’s only from 15 rides this season.
And the reason Strava won’t honor my Garmin Oregon 750t’s barometric altimeter data? Because it’s not on their "approved" device list (technical note below on this). So while Strava WILL accept GPS data from any wonky device, it will NOT accept elevation data unless your device is in their Little Black Book. Which devices are on that "approved" list? Excellent question! The answer I got from a Strava rep is that they do not keep such a list, and so it is unknown exactly which devices will work and which will not...
What this means is that even though I’m using an expensive, highly accurate, waterproof, outdoor GPS and altimeter, Strava doesn’t give a crap and automatically discards the embedded elevation data that the Garmin Oregon records and replaces it with its own estimate based on the DEM. No bueno. Living out here in the foothills of Colorado, this issue means that for almost every ride, Strava is under-reporting my elevation gained. I have seen plenty of reports of people having up to 50% over-reporting on elevation gain too. It should be noted that the same thing happens when you use the Strava app on your phone (even if you phone has a built-in barometric altimeter like the iPhone); the Strava app does not record altimeter data.
In the above screenshots, you’re looking at exactly the same ride data recorded by my Garmin Oregon 750t. On the left is the Garmin Connect page showing exactly what the GPS device itself showed. On the right is what happened when I uploaded this same file to Strava. I even tried changing the device name, which didn’t work (see below). I lost 467’ in elevation gain when uploaded to Strava. While that’s not a ton on it’s own, consider that that is almost a 30% difference. When that happens on every ride, your year-end Strava stats are going to be very off, and if your stats aren't accurate, what is the point of using Strava to begin with?!
Technical note specifically regarding the Garmin Oregon 7xx series: Apparently Garmin does not save the "Device ID" inside of the activity FIT it creates once you save your ride/run. Because of this, Strava has no way of knowing what device recorded it. Furthermore, since a device must be on the "approved" list to enable altimeter data to be used on Strava, if there is no device listed, it is automatically discarded. To get around this, I was using Fit File Tools for many months to edit the FIT file and change the device name. This would allow me to trick Strava into thinking I used an "approved" device like the Garmin Fenix 3 or Edge 810, and would allow the barometric altimeter data. As of December 2017 this quietly stopped working and it was several weeks before I noticed. Aside from extreme irritation with both Garmin and Strava on this issue, that has precipitated me to get the new Garmin Fenix 5X watch, more on that in a later post.
Sorry, if I am a bit off-track. Would you or any of your readers be in a position to advise on the following issue I have with my Fenix 5x. The data it records for a bike ride normally includes temperatures (maximum, average and minimum). The issue I have is that these are my body temperatures and not the ambient temperatures of the ride. Is there any where in the bike activity profile where this can be tweaked? Thank you.
Hey Emeka. This cannot be tweaked, unfortunately. Since the temperature sensor is built-in to the watch body, which sits against your skin, there is no way for it to know what your body temperature is versus the ambient air. I’ve had other watches (like higher-end Casio G-Shocks) with the same issue. It’s more an issue of physics than poor design. To measure air temperature accurately, the sensor must be away from your body heat.
There are only two solutions: wear the watch off your body (like strapped to a pack), or get an external sensor. Wearing the watch off your wrist defeats the purpose in my opinion, but some riders do strap it to their handlebars (Garmin even makes a mount specifically for that). Or you can get Garmin’s wireless temperature sensor, which you can mount to your pack or shoe and leave the Fenix 5 on your wrist.
On your Strava elevation profile, approximately the first and last miles are symmetrical, as I suspect they should be. On your Garmin elevation profile, they’re not close to being symmetrical. I would thus be more inclined to trust the Strava data than the Garmin data in this case. But let’s face it, either way it’s some sort of educated guess.
I have a Garmin Vivoactive 3 and get flaky readings from it as often as not. It’ll think my driveway is 50 to 100 feet higher or lower at the end of a 90-minute ride than it was at the beginning. Barometric pressure can change without you moving an inch.
Hey Joseph. I’m opposite. I don’t think Strava’s digital elevation model (DEM) is all that accurate for trail riding/running/hiking, in my experience. Neither is Garmin’s (their online course mapping) or other services like Plotaroute for that matter. The trick is that while DEM data isn’t “wrong”, it’s not detailed enough for off-road trails. As mentioned in this post, Strava’s DEM is only accurate to 10m blocks. A lot can happen within 10m on the trail, including switchbacks, drops, log crossing, rock features, gullies, etc. And while a single one of those occurrences may only lead to 2-6 foot elevation error, that happens hundreds of times on long rides. Those tiny errors add up. Plotting courses online often shows me elevation gain that is 30% or more off from recorded barometric/GPS altimeter readings.
With Garmin’s continuous auto-calibration of the barometric altimeter during an activity, I find it’s generally pretty accurate. I’m almost always within +/- 2-3% of anyone else I ride with who also recorded the ride. And yes, sometimes the elevation gained does not match the elevation lost (not symmetrical, as you noted), but it’s usually not more than 50-feet off for me. I look at the elevation gain vs. loss as a check balance. The altimeter is always recording the ups and down, and if the ups AND downs totals generally match, I figure it’s a fairly accurate and consistent reading. I agree that barometric pressure is a very complex thing and isn’t 100% accurate, but I figure that it paired with GPS is still the most accurate option at this time.
Just because Strava’s DEM is always symmetrical doesn’t mean it’s more accurate. Given it’s a static data set, it HAS to be symmetrical, because the elevation at any point on your route is already “known.” The static elevation for a trailhead in Strava’s DEM is always the same, therefore it’d be impossible for the calculated loss vs. gain to be any different. With a barometric altimeter, when you leave the trailhead and come back 4 hours later, there have likely been small changes in atmospheric pressure that have influenced its calculated elevation, admittedly. But again, that before/after difference is usually very small in my experience. Far far smaller than the discrepancy of DEM data vs. recorded elevation data. YMMV.
Hi, I read your blog with interest as I noticed some discrepancies in my elevation data in Strava. How would you explain the exact same route, cycled on different days, IN THE SAME DIRECTION, tracked using my Garmin Instinct I, having a large variance in elevation? Here are the stats: ride on Aug 5th was 1253ft, Aug 16th was 574ft, Aug 26th was 403ft (I think this is the most accurate, it’s pretty flat where I ride) and Aug 3th was 945ft. This is really frustrating. If, as you say Strava uses it’s own DEM to calculate elevation, then why isn’t it consistently giving me that same (or very close to the same) readings?
Hey Brad. That is a rather huge variation, and not one that I’ve ever seen on any Garmin device. Especially that 1253′ vs 403’… that’s an 850′ and almost 300% difference! First off, I don’t think Strava and it’s DEM have anything to do with it. The Garmin Instinct has a built-in barometric altimeter, and Strava is honoring that device’s reported elevation gain/loss from an activity. A quick confirmation of this would be to go to each of those rides on Strava, and select the “Correct Elevation” option. The mere presence of this option within an activity is proof that Strava is using the device’s altimeter data, not it’s own DEM. More info on that here. After you do that, are all the rides reporting the same elevation? They should be. If they’re not, your route is different between them, which could explain some of that.
So the second part of that is there’s something terribly off about your Instinct’s altimeter. Have you checked out Garmin’s troubleshooting page for the Instinct’s altimeter? Definitely make sure that auto correction is turned on for the altimeter. I have definitely had some minor discrepancies with my Garmin’s total elevation gain vs. loss, especially on longer rides. This is likely due to weather and changing pressures throughout a ride. I have a suspicion that wind, including the prolonged wind from higher speed road riding for example, could theoretically have a local effect on air pressure at the device, thus tampering with the barometric altimeter’s readings. But that is where it’s periodic GPS/DEM calibration during activity would come into play, hopefully.
If none of that solves anything, I’d go back to Garmin with those ride variations and see if they’ll replace the device. Perhaps it’s malfunctioning?
Hi, thanks so much for the reply, using the DEM to recalculate elevation has fixed the discrepancies in Strava. I’ll check out the Garmin troubleshooting link shortly. Many thanks SpokeTwist!
Glad to help! Good luck!
Working with a AW Ultra, I’m not new to strava, but with Apple finally bringing their workout app to the times I’ve been using Apple workouts importing to strava and the the elevation delta is astonishing especially if you are going off trail at all. My Mt hood trip showed a decent elevation profile but it said it was 12 miles which it is at most 9 on timberline approach. And just this weekend on my AW the elevation was 3,300ft which given just looking at the elevation profile passes the sanity check, but on strava it shows 4,700ft. Not even in the ball park. Even if strava has a “little black book” why the heck is not at a minimum supporting Apple watches and garmin. Make it make sense. At this point I’m just using strava as workout social media more than meaningful training data.
That’s a bummer! For what it’s worth, it highly depends on the route on how far Strava DEM data strays from altimeter data. Most of the time in my area, Strava underestimates Garmin elevation by ~10%. The devil’s advocate response is that altimeter/GPS elevation data isn’t without fault either. I never get the same elevation reading from the same route twice, sometimes with several hundred foot differences.
That said, I would expect that Strava will eventually support the AW Ultra as a “trusted” device soon. I just went through this again with the new Garmin Enduro 2 watch. It took Strava almost 10 weeks after public release of that device for them to register it as a trusted device. You’ll know when this happens because on your activities it will display the device name used, next to where the bike/equipment is listed. If that area is blank and there’s no device name, Strava still hasn’t done their job.