Why your elevation gain is different in every app

Upload the same hike to three places and you can get three elevation gain figures, sometimes hundreds of metres apart. All three can be honest. Elevation gain is not measured directly. It’s calculated from a stream of altitude readings, and every step of that calculation involves a choice.

Where the altitude readings come from

A barometric altimeter. Many watches and bike computers have a pressure sensor. Air pressure drops as you climb, so the device converts pressure to altitude. It’s precise over minutes, which makes it good at small climbs. Its weakness is weather: near sea level, a pressure change of 1 hPa reads as roughly 8 metres of altitude, and pressure can drift by several hPa over a long day out.

GPS altitude. Devices without a barometer use the altitude from the satellite fix. GPS is noticeably less accurate vertically than horizontally, so the altitude line wobbles even when you’re on flat ground.

A correction applied afterwards. Some platforms recalculate elevation on their servers once the activity is uploaded. For Garmin-synced activities, FitKeep receives Garmin Connect’s own elevation totals and elevation samples, which can differ a lot from the figures in the FIT file the watch wrote.

Why adding up small climbs inflates the total

Elevation gain is the sum of every climb in the activity. Add up every tiny rise in a noisy altitude line and the noise turns into fake climbing.

Here’s the arithmetic. Say your altitude reading wobbles up and down by 1 metre every 10 seconds while you walk along a flat canal path. That’s 180 one-metre rises in an hour. A one-hour walk with no real climbing picks up 180 metres of elevation gain.

So every platform smooths the line or ignores rises below a threshold before adding them up. Each makes its own choice of threshold and smoothing, and those choices are the main reason two apps disagree about the same file.

The numbers FitKeep shows

Total elevation gain is the figure your device wrote into the FIT file’s session summary. FitKeep doesn’t recalculate it.

For Garmin-synced activities, Garmin Connect’s total replaces the FIT figure when Garmin sends one. FitKeep keeps the FIT figure too. When they differ, a tooltip next to the elevation gain shows both, so you know which number you’ll see if you export the FIT file somewhere else.

The elevation chart uses Garmin’s elevation samples, as Garmin sends them, when they’re available. Otherwise it uses the altitude in the FIT file, cleaned in two steps:

  1. Readings below -500 m or above 8,000 m are dropped. The Dead Sea shore is above -500 m and only the highest Himalayan summits are above 8,000 m, so readings outside that range are treated as errors
  2. Each remaining reading is compared with the 11 readings around it (5 either side, plus itself). If it’s further from their median than 50 m, or 3 times their average distance from the median if that’s larger, it’s replaced by the median. The first and last 5 readings are left as they are

That second step catches spikes, like a single reading 200 m above its neighbours. It doesn’t touch ordinary barometric drift or GPS wobble of a few metres, and it only changes the chart. The total elevation gain is still your device’s figure.

Laps work the same way: each lap’s ascent is the figure your device recorded for that lap.

Which number to trust

For comparing your own activities with each other, use one source and stick with it. A consistent figure is more useful than a perfectly accurate one, since you’re looking at changes.

For a single route, an activity recorded with a barometric altimeter on a day with steady weather, or a total corrected on the platform’s servers, is usually closer to the truth than raw GPS altitude.

If a total looks far too high, open the elevation chart. A line that never stops wobbling on a route you know is flat means the total includes noise.


See Read Your Activity Details for the elevation chart and the other charts on an activity page.