Why your ride altitude lies, and how to clean it
Your head unit says 1,240 m of climbing, your app says 1,410 m, and a short climb shows a 32 % maximum gradient. None of it is magic: altitude is the weakest signal in a ride file, and here is why.
Two ways a device measures altitude
A cycling computer gets height in one of two ways. Most modern units have a barometric altimeter: a pressure sensor that converts air pressure into altitude. It is very precise over short distances (a few decimetres from one second to the next) but it knows nothing about absolute height, so it must be calibrated, and weather changes pressure all day. Older watches, such as the Forerunner 205, 305, 310XT, 405, 410 and 610, have no barometer and take altitude from the GPS, which is absolute but noisy: vertical GPS error is typically two to three times worse than horizontal.
The two fail in opposite ways. A barometer is smooth but can drift or jump; GPS altitude does not drift but wobbles. Once you know which one produced a file, most oddities become predictable.
Barometric problems: recalibration and start-up
Two situations create the biggest errors in barometric files:
- Recalibration after a stop. Many devices correct their reading when they find a better reference, for example after a long café stop or when GPS gets a good fix. The reading then moves to the new value in one go. In a real file from a ride in the Pyrenean foothills, the altitude rose by 130 m in 24 m of distance after a stop: a gradient of over 500 % in one sample, and a "maximum gradient" of 135 % for that ride.
- Convergence at start-up. A unit that has just been switched on may start from a wrong value and converge during the first minutes. In another file the altitude went from 176 m to 620 m over 50 m of riding, in a town where the true height was around 600 m.
In both cases the shape of the profile is fine before and after the jump; only the step is wrong. If you trust the total ascent, such a step adds hundreds of metres that nobody climbed.
GPS-only altitude: the fake ramp
GPS altitude is the opposite problem. It oscillates by roughly ±20 m over distances of hundreds of metres, which at a cyclist's speed is minutes. A sine wave of ±20 m over 400 m has a peak gradient of well over 20 %: your profile shows a 25-30 % wall on a road that never exceeds 10 %. In a set of rides recorded between 2009 and 2013 on three well-known Madrid-area climbs, maximum gradients of 20-32 % were reported on roads that stay under 10 %. No physical limit separates such a wobble from a real steep ramp, because a real ramp can also climb 3 m in a few seconds.
The tell-tale sign is a noisy altitude trace on a smooth road, with the average gradient correct and the maximum gradient absurd. Averages and total gain survive because noise cancels out over a long stretch, which is also why the next section's fix works.
How to clean it
There is no perfect cleaning, only methods that remove the physically impossible while keeping real climbing. These are the ones we use in GearWatts, and you can apply the same ideas to any file:
- Physical limits per 10-second window. In any window of 10 s, altitude cannot change by more than 30 % of the distance covered, nor climb faster than 1 m/s at under 54 km/h (0.5 m/s in the first five minutes, while a barometer is still converging), with a 2 m margin. What exceeds that is discarded, and the altitude the ride ends with is preserved, because the value after a recalibration is the good one.
- Despiking single samples. A one-sample spike is interpolated away. Treating it as two big steps instead leaves a false step in the profile.
- No per-sample cap. A tempting rule such as "never accept more than 1 m between samples" is wrong: barometers quantise, holding a value for a few seconds and then jumping 2-3 m. In a test on 796 files, that rule removed real ascent from 111 of them.
- Heavier smoothing for GPS altitude. When altitude comes from the GPS (known by the device name or by noise: the RMS of altitude around its ±100 m mean above 1 m, where barometric units stay under 0.5), the profile is smoothed over ±100 m instead of ±20 m, and the maximum gradient is measured over 500 m instead of 100 m.
The result on those 796 files: out of 58 climbs with a maximum gradient above 20 %, none remained, while averages and categories hardly moved. Details of how climbs are then found are in our guide to climb detection and categories.
Why apps disagree on total ascent
If two services show different totals for the same ride, expect one or more of these:
| Cause | Effect |
|---|---|
| Using the device's own total or recomputing from samples | Recomputing adds every wobble; the device's figure is usually already filtered |
| Smoothing and a minimum-step threshold | Stronger filtering lowers the total, weaker raises it |
| Replacing recorded altitude with a map elevation model | Cleans noise and jumps, but can miss bridges, tunnels and cuttings |
| Barometer vs GPS source | GPS-only files can differ noticeably in either direction |
| Recalibration jumps kept or removed | Can swing the total by hundreds of metres |
For a worked example, imagine 1,000 samples with a ±1 m noise that sums 0.5 m per sample on average: that is 500 m of fake ascent over the ride, which is why recomputing from raw barometric data without any threshold overshoots. GearWatts keeps the device's own total ascent when the FIT file includes it, and uses the cleaned altitude for profiles, climbs and gradient bands; that is a choice, not a universal truth.
Practical tips for better data
- Prefer a device with a barometric altimeter if you care about gradients and climbs. It is the single biggest improvement.
- Let the unit settle. Switch it on, wait for a good GPS fix and a couple of minutes before you roll out, and do not start a ride in a basement garage.
- If your head unit offers it, set the starting altitude or use automatic calibration against a known reference. Do it once, not mid-ride.
- Avoid power-cycling mid-ride; every restart is a new calibration.
- Keep the unit out of strong draughts, such as a bag in the wind, because pressure sensors react to airflow.
- When comparing climbs, use the average gradient and the total gain, which are robust, and treat the maximum gradient with scepticism.
Our other guides assume reasonably clean altitude, for example the one on gear development.