"Why Is My Elevation Gain Report Always Wrong?" (Answered Once And For Good)

Stefan Mikes

Gravel e-biker
Region
Europe
City
Mazovia, PL
To be able to determine the elevation gain of our ride, we need an altimeter. These are the altimeters that we can use for e-biking:
  • E-bike barometric altimeter (available on some advanced e-bikes)
  • Smartphone altimeter (will work with ride trackers such as Strava, Komoot, RideWithGPS, or a specific application of your e-bike)
  • Bike GPS computer (Garmin, Wahoo, Hammerhead...)
Any barometric altimeter method of determining the elevation gain for the ride will be wrong. And the problem is unsolvable today (it might be solved in the future though).

The Aviation Altitude Measurements
An aircraft that is cruising at a high altitude (such as 36,000 to 41,000 ft) has the reference pressure of 1 atm, or 1013.25 hPa set. At high altitudes, the ambient pressure is only depending on the altitude. Is the actual altitude of the aircraft 40,000 or 40,100 ft is unimportant. All aircraft have their reference pressure set to 1013.25 hPa or 29.92 in Hg. Therefore, the vertical separation between different airplanes can be easily determined.

Once the airplane is on the descent and approach towards the airport, the Air Traffic Control always informs airline pilots about the updated QNH, which is the actual pressure at the airport runway. The barometric altimeter of the aircraft is updated with the current reference pressure. Therefore, the barometric altimeter knows exactly how high the aircraft is above the runway. To make the altitude measurement top accurate, the radio altimeter kicks in at a very low altitude. GPS is the third source of information ('Terrain! Pull up! Pull up!')

The Cycling Elevation Gain Measurement

In almost all situations, the current air pressure readout is taken as the reference by the e-bike, smartphone or GPS bike computer and set as a constant value when we push the START button. Now, as we climb, the ambient pressure will drop with the altitude, which is measured as the elevation gain. However, the ambient pressure at the altitudes we ride varies with the weather. If the outside pressure drops because of the weather, the barometric altimeter will record big elevation gain; or, the pressure might increase (weather improving), recording a low elevation gain.

The barometric altimeter used on a bike will always be wrong, especially on a long ride with variable weather.

How Can We Solve It Now?
Upload your ride to Strava. In the website (computer), you will see this:
1725614102241.png

Then, click
1725614132732.png

Strava will correct the elevation gain to the ride map. Example:

1725614191373.png

As measured by a barometric altimeter...
1725614241886.png

As measured on the map.


In the smartphone Strava app, click the "hamburger" icon next to your ride, then 'Adjust elevation'.

How Could It Be Fixed In The Future
Any GPS bike computer has access to the maps. A Garmin Edge or Wahoo ELEMNT know everything about your route, or where and at what altitude you currently are. For instance, you can see the map of all upcoming climbs on the route! Why not to do the elevation calculation based on the map? Could be done in the future but it looks neither Garmin nor Wahoo are really interested... Your life doesn't depend on that! (Several years ago the GPS bike computer maps were 2D, so all the development went into the barometric altimeter).

After reading the above, I hope none of you will need to ask again why the Elevation Gain data you got from your ride were wrong... :)
 
Last edited:
I had to Google if smart phones have a barometer built in, I would have guessed they didn’t. Turns out they do at least Apple phones do. If the barometric pressure remains steady during your ride it might be close on your elevation gain. Of course this is never perfect and the barometric pressure can change during your ride.
 
Nearly all GPS tracking applications do something similar. Actual altitude on the device is often incorrect, but the elevation profile is corrected when the activity is saved to the cloud. I suspect this is due to both limited storage and compute resources on edge devices and how maps are represented and rendered on those devices.

Elevation errors from a more-or-less correctly calibrated barometric altimeter are, on average, modest for purposes of cycling and hiking. Usually less than 100m. Since those errors can accumulate in weird ways elevation gain and loss might be much less accurate.

Typical DEM datasets store elevation on a 1x1 meter grid, so as you can imagine that can require enormous amounts of storage (a not very large square 1000km on each side would require a trillion entries). There are fancier ways to store elevation data but they all, on the average, require more storage and compute power (with many tradeoffs between storage size and compute power to lookup the elevation at a location) than you'd put into a typical smartphone or GPS.
 
RideWithGPS consistently reports actual sea level at 100 ft below.

Screenshot_20240911_202227_Ride with GPS.jpg

Despite my best efforts to stay above water, that makes most of my coast miles submarine. Per Google Earth spot-checks, all other RideWithGPS elevations are also 100 ft too low.

This error in absolute elevation appears to reside in the barometric altimeter in my Android phone (Samsung Note20), as 2 other apps that also rely on this sensor make exactly the same mistake. And all this on both of the Note20s I've owned. Surely there must be a way to recalibrate these phones, but I have yet to find it.

HOWEVER, the elevation gains and losses reported by RideWithGPS square pretty well with Google Earth spot-checks.

So in practice, my absolute elevations are way off by a consistent amount, but my relative elevations seem close enough.
 
Last edited:
Back