How to get a race's elevation profile and D+ from its GPX
To get a race's elevation profile and total climbing, download the organiser's GPX from the race page and open it in a tool that reads the height of every point, such as the free GPX course analyzer: it plots height against distance and adds up every rise into the total climbing, or D+. That total isn't stored in the file. It's counted, and the method moves it: on the 12 organisers' files on Pendio's race pages, two counts of the same file differed by up to 8.6 %. This post gives the steps, shows why the counts differ, which number to plan with, and what the profile says that the total doesn't.
TL;DR
- A GPX file holds points with a latitude, a longitude and usually an elevation, and no total for the climbing: the profile and the D+ are worked out by whatever tool opens it.
- Take the organiser's own file for the edition you're running, drop it into a GPX analyzer, and check its distance and D+ against the organiser's figures.
- D+ depends on how it's counted. On 12 organisers' files, a smoothed count and a count that ignores rises under 3 m differed by 0.0–8.6 %.
- UTMB's 2026 page gives 9,700 m in its header and about 10,000 m in its text, with no method; Pendio's count of the organiser's file is 10,112 m.
- Compare courses counted the same way, then look past the total: on UTMB's file the 10 km slices hold anything from 114 m to 913 m of climbing.
What is in a race’s GPX file?
A GPX file is a list of points, each with a latitude, a longitude and, usually, an elevation; the format has no field for total climbing. In GPX 1.1, coordinates are relative to the WGS84 datum, all measurements are metric, and the elevation (ele) is optional on every point (GPX 1.1 schema).
The points come as a track, “an ordered list of points describing a path”, or as a route, “an ordered list of waypoints representing a series of turn points leading to a destination” (GPX 1.1 schema). The GPX course analyzer reads the track points, or the route points when the file has no track (GPX course analyzer).
Everything else is worked out by the tool that opens the file:
- Distance: the gaps between consecutive points, added up.
- The elevation profile: each point’s height plotted against the distance so far.
- D+ and D−: D+ is the total height climbed over the course, in metres; D− the total height descended. Both are the rises and drops between points, added up.
How do you get the profile and D+ from the file?
Download the organiser’s file, drop it into an analyzer, read the numbers and check them against the organiser’s figures:
- Download the organiser’s file from the race page, for the edition you’re running. The 2027 page of the Ultra Trail Chianti Castles, for example, links a GPX named for the 2027 race (chianti.utmb.world). A copy from anywhere else may be another year’s course.
- Drop it into the GPX course analyzer. It reads the file in your browser and never uploads it; any .gpx up to 25 MB with elevation in it works.
- Read the numbers: the distance, D+ and D−, and the profile with the hardest climb and descent marked. Drag across the profile to read the distance, altitude and gradient at any point.
- Check them against the organiser’s figures. A few per cent apart is normal, as the next two sections show. A distance far from the organiser’s suggests another course’s file: Pendio’s own race pages refuse a file that measures more than 8 % away from the organiser’s distance (how Pendio measures courses).
Why does the same GPX give different totals?
The same GPX gives different totals because D+ is a sum of every rise, and each tool decides what counts as one: how much it smooths the heights first, and how big a rise must be before it’s added. Small errors in the heights look like small climbs, and the sum keeps every one it lets through.
Strava describes these choices for activities. It calls the elevation gain of an activity “an estimate”, does “some smoothing to the data, which includes discarding outliers to reduce noise”, and applies “a threshold that we use for determining whether or not you have gained elevation” (Strava Support).
The GPX course analyzer resamples the course every 10 m and smooths its elevation over 70 m before adding anything up; the D+, D−, gradients and grade bands all come from that smoothed line (GPX course analyzer). Its D+ per 10 km panel counts differently: on the file’s own elevation, ignoring rises under 3 m. So one page gives you two counts of the same file: the headline D+, and the D+ per 10 km slices added up. (The other numbers it shows, such as flat-equivalent distance, are explained in trail running calculators.)
How much does the method change a real race’s D+?
On the 12 organisers’ files measured for Pendio’s race pages, as of October 2026, a smoothed count and a 3 m count of the same file differed by 0.0–8.6 %. On UTMB and TDS they agree within 1 %; on four courses the 3 m count is at least 6 % higher.
| Course (year of the organiser’s file) | D+, smoothed | D+, 3 m count | 3 m count higher by |
|---|---|---|---|
| TDS (2026) | 9,421 m | 9,424 m | 0.0 % |
| UTMB (2026) | 10,112 m | 10,159 m | 0.5 % |
| OCC (2026) | 3,363 m | 3,415 m | 1.5 % |
| CCC (2026) | 6,017 m | 6,141 m | 2.1 % |
| Eiger E35 (2026) | 2,422 m | 2,475 m | 2.2 % |
| Eiger E101 (2026) | 6,373 m | 6,531 m | 2.5 % |
| Eiger E51 (2026) | 2,874 m | 2,970 m | 3.4 % |
| Chianti Marathon Trail (2027) | 1,650 m | 1,733 m | 5.0 % |
| Lavaredo 50K (2024) | 2,555 m | 2,712 m | 6.1 % |
| Val d’Aran PDA (2026) | 3,239 m | 3,455 m | 6.7 % |
| Chianti Ultra Trail (2027) | 2,843 m | 3,043 m | 7.0 % |
| Ultra Trail Chianti Castles (2027) | 5,006 m | 5,437 m | 8.6 % |
Each course page links the organiser’s race page and file, with the file’s SHA-256. The pages are unofficial: Pendio isn’t affiliated with these races.
Most of the difference is the short ups and downs: the 70 m smoothing flattens them, the 3 m count keeps them. The file can’t say whether they are real bumps in the ground or noise in its heights, so neither count is the true one. On the Ultra Trail Chianti Castles the two are 431 m apart. Treat any single D+ figure as good to a few per cent, and compare two courses only when both were counted the same way.
Which D+ should you plan with: yours or the organiser’s?
Use the organiser’s figure to talk about the race, and your own count, made the same way for every course, to compare races and plan. The two organiser pages below give their figures without a method, and one gives two figures. As checked on 22 October 2026:
- UTMB 2026: the page gives 174 km and 9,700 m (31,824 ft) in its header, and “approximately 170 kilometers and 10,000 meters of positive elevation gain” in its text (montblanc.utmb.world). Pendio measures the organiser’s 2026 file at 173.8 km and 10,112 m (33,176 ft), or 10,159 m with the 3 m count (UTMB course page).
- Ultra Trail Chianti Castles 2027: the page gives 5,200 m in its header and in its text (chianti.utmb.world). Pendio counts the organiser’s 2027 file at 5,006 m smoothed and 5,437 m with the 3 m count, so the organiser’s figure sits between the two.
These gaps, 1–5 %, are smaller than the 8.6 % two counting methods can open up on one file, so a gap that size doesn’t tell you which figure is right. Pendio’s race pages print the organiser’s figures next to Pendio’s, and say where the organiser publishes more than one (how Pendio measures courses).
What does the profile show that the total doesn’t?
Where the climbing sits, and how steep it is. A total says how much there is to climb; the profile says where. On the organiser’s 2026 UTMB file (UTMB course page):
- D+ per 10 km: about 580 m on average, but the full 10 km slices range from 114 m (110–120 km) to 913 m (40–50 km).
- Hardest climb and descent: ↑866 m in 6.0 km from km 39.3 of the file, 14.4 % on average; then, from km 46.2, ↓942 m in 5.4 km at −17.3 %.
- Terrain: 15.4 km of the file climbs steeper than +20 % and 15.6 km descends steeper than −20 %; 7 % of it is flat, within ±1 %.
The analyzer shows the same read-outs for any file you drop in, with up to five of the biggest climbs and descents, each with its length, height, average gradient and steepest 100 m (GPX course analyzer). That is what you plan around: where the long climbs and descents fall, and how much of the ground is steep. To keep a course, pendio.app/app reads an imported GPX with the same method as the app, “so the numbers match the phone to the metre” (guide).
Sources
- TopoGrafix. “GPX 1.1 Schema Documentation.” Checked 22 October 2026. topografix.com
- Strava Support. “Elevation.” Checked 22 October 2026. support.strava.com
- UTMB Mont-Blanc. UTMB race page, 2026 edition. Checked 22 October 2026. montblanc.utmb.world
- Chianti Ultra Trail by UTMB. Ultra Trail Chianti Castles race page, 2027 edition. Checked 22 October 2026. chianti.utmb.world
- Pendio. GPX course analyzer: what it shows and how it reads a GPX. pendio.app/tools/gpx-course-analyzer
- Pendio. “How Pendio measures race courses.” pendio.app/blog/races/how-we-measure
- Pendio. Race course pages: each organiser’s file measured with Pendio’s engine, October 2026. pendio.app/blog/races
- Pendio. “How Pendio works”: courses and the course page. pendio.app/guide
Questions
Why is the elevation gain on my watch different from the race's GPX?
Because they are two different measurements. Your watch records its own heights as you run, from a barometer or from GPS, and counts them its own way; the GPX is the organiser's line, counted by your tool's method. Strava, for one, generally treats barometric data as higher quality than heights derived from GPS (Strava Support). Compare watch figures with watch figures, and files with files counted the same way.
Can I get an elevation profile from a GPX file with no elevation in it?
Not from the file alone: in the GPX format the elevation of each point is optional, and without it the file is a flat line on a map. Some tools look heights up in their own data instead; Strava's Route Builder, for example, calculates route elevation from Strava's own database. The GPX course analyzer reads the heights in the file, so it needs them there.
Is the higher D+ figure the more accurate one?
Not necessarily. A count that keeps more of the small ups and downs comes out higher, whether those bumps are real ground or noise in the heights. On the 12 organisers' files on Pendio's race pages, the 3 m count was 0.0–8.6 % above the smoothed one. For planning, what matters is counting every course the same way.
The bottom line
To get a race's profile and D+, take the organiser's GPX for your edition, drop it into the free GPX course analyzer and check the distance and D+ against the organiser's figures. Expect a few per cent between any two counts, the organiser's included, and count every course you compare the same way. Then plan from the profile, not the total: where the biggest climbs and descents fall, and how the climbing is spread over the distance.