§ II · GPX Guide

D+, D−, VAM, net gradient: the 12 measures of a GPX track explained

A good GPX track is twelve numbers that, together, tell the story of an outing. Here is what they really say, and what they don't.

9 min read

I.Why twelve, and not more

A raw GPX track is a long sequence of points — position, elevation, instant. As they are, those points say nothing. It's the measures derived from them that tell the story of the outing: how long, over what distance, through what relief, at what intensity, with what heart. GPXchunk computes twelve of them, and each one lights up a different corner of the same picture.

Why exactly these twelve? Because they share a useful property: every one of them changes meaning when you isolate a portion of the track rather than looking at the whole outing. The average speed of a three-hour ride isn't the same as that of the climb in the middle. The total elevation gain of a long route blurs the gain of the climb you actually want to study. Twelve numbers that allow themselves to be reframed — that's what you need to move from « overall summary » to « the part that matters ».

Fewer, and you miss things (without negative gain, you can't tell a flat outing from a roller-coaster where you climb back what you came down). More, and the dashboard becomes unreadable. Twelve is the compromise that covers the four essential dimensions: distance, relief, time, and body.

II.Distance and time: the foundation

The distance of a segment is the sum of all the small horizontal moves between consecutive points on your track. Not the straight line between start and end: the zigzags of the trail count, the switchbacks of a pass too. On a hairpin climb, the distance covered can be twice the « as the crow flies » figure. That's the distance GPXchunk shows, and it's the one that matches what you actually walked or rode.

The segment time is the duration between the first and last point selected. Simple — except for one trap: if you took a long break in the middle and your watch didn't auto-pause, the break is included. On a cleanly recorded track, this isn't a problem. On a track that includes a one-hour lunch, it is. Worth keeping in mind when the average speed looks oddly low.

Distance and time are the two foundations. Every other measure derives from them — speed, pace, climbing speed. The quality of your reading therefore depends on the quality of those two, and especially on a precise selection of your bounds.

III.Relief: D+, D−, and the two extremes

Four measures cover the relief. They look redundant, and they are not at all.

Positive elevation gain (D+) sums all the climbs in the segment. Not the difference between starting and ending elevation — the accumulation of every move upward. On a ridge that climbs and drops fifty times, D+ can be huge even if you finish at the same elevation you started. It's the favourite measure of trail runners and hikers because it reflects the actual work of the legs. How this number is computed deserves its own article — the value depends on a noise threshold, and that's what explains the gaps between Strava, Garmin and the rest.

Negative elevation gain (D−) does the same work in the other direction: the accumulation of every descent. On a loop that returns to the start, D+ and D− are almost equal. On a point-to-point where you finish high, D+ is much larger. On a pure descent, the reverse. The D+/D− pair therefore tells you the overall profile of the segment: ascending, descending, or cyclical.

Maximum and minimum elevation are the two vertical bounds of the portion — the highest and lowest points you touched. Their difference gives what you might call the « span » of the segment. And here, beware the trap: this span almost never has anything to do with D+. A ridge segment between 1 800 and 2 000 m can show 200 m of vertical span and 800 m of D+ — because the ridge zigzags up and down. D+ tells the effort, span tells the territory.

IV.Speed and pace: the same thing, two languages

Here's a quirk: two measures, the same information exactly, expressed in two opposite ways. Average speed is distance divided by time — expressed in kilometres per hour. Average pace is time divided by distance — expressed in minutes per kilometre. Both say strictly the same thing. The choice depends on your discipline.

Cyclists think in speed: the values are large (20, 30, 40 km/h), they vary a lot, comparison is easy. Runners and hikers think in pace: the values are more granular at slow speeds, and the grammar « 5 minutes per kilometre » is universal in running. A cyclist at 30 km/h and a runner at 2'00 per km are moving at the same speed — but neither translates naturally into the other's unit.

The trap, in both cases: it's an average. On a rolling segment, the average pace hides huge variations between climbs and descents. Reading the elevation profile alongside lets you spot where the time was lost — which is exactly what GPXchunk synchronises across its three views.

V.Net gradient and VAM: the difficulty of the climb

Two measures for characterising the climb. Once again, they don't say the same thing.

Net gradient is the elevation difference between the start and end of the segment, divided by the horizontal distance covered. It's expressed as a percentage. A net gradient of 7 % means: starting from A, you arrived at B with seven extra metres of elevation for every hundred metres covered. Useful for saying « this climb has an average gradient of 7 % ». But — and this matters — it's a net gradient, not an average felt gradient. On a yo-yo that drops, climbs, drops, climbs, the net gradient can be 0 % even though the legs did plenty of work. That's where D+ steps in to complete the reading.

VAM — for Vertical Ascent in Metres per hour, originally an Italian cycling term — is the real measure of climbing performance. It's computed as D+ divided by time, and expressed in metres per hour. Not metres per kilometre, not as a percentage: how many metres of climb you absorb in an hour. Period. It's the reference measure of mountain cycling.

A few benchmarks to calibrate: in cycling, a professional climber sustains 1 600–1 800 m/h on a long ascent. An experienced trail runner hovers around 800–1 200 m/h on a steep climb. A fit hiker moves between 300 and 500 m/h on sustained elevation. Reading the VAM of a segment is reading your level in the universal language of climbing sports — and it's what lets you, on a trail outing, sort the climbs to find which one actually broke you.

VI.Heart: average HR and max HR

Two final measures, and they aren't always there: the average heart rate and the maximum heart rate of the segment. For these to show up, your watch has to have recorded heart rate data in the file — most sport watches do, smartphones rarely. If the track doesn't carry the information, GPXchunk silently skips these two lines: no invented number.

Average HR is the arithmetic mean of all heart rate values recorded over the portion. It tells you which effort zone you were in — easy aerobic, threshold, anaerobic. Max HR is the highest value reached — it reveals a sprint, a final steep pitch, a moment of real tension.

The trap: average HR on a short segment with big variation tells you very little. Three minutes of cruising followed by thirty seconds of sprint give an intermediate average that never existed at any real moment. That's when max HR becomes more meaningful. And that's also where segment-by-segment analysis comes back into its own: isolate just the sprint, and its average HR matches the experience.

VII.Reading the twelve together

Taken in isolation, each of these numbers says little. It's their conversation that tells the outing's story. Picture a segment: 5 km in 30 minutes, or 10 km/h average. Not spectacular. But add the others: 350 m of D+, VAM of 700 m/h, net gradient of 7 %, average HR 165 bpm, max HR 178 bpm. Suddenly the picture composes itself: this is a real climb, sustained (the 700 m/h VAM confirms it), pushed seriously (average HR in the threshold zone), with a kick at the end (max HR 178). « Slow » no longer means anything — you read 10 km/h in the context of 350 m of climbing.

A track doesn't reduce to a single number. It reads in the conversation between the twelve.

This is exactly what GPXchunk surfaces when you isolate a segment. Load a file, drop the two handles, read the twelve side by side: you move from a global average that says nothing to a precise reading of the part that matters. The same track holds as many stories as you ask it questions.

Once the meaning of the figures is clear, two questions tend to follow. Where does the analysis happen? On GPXchunk, in the browser alone: the file never leaves your machine, and we explain why this matters beyond a technical detail. And how do market tools compare to this segment-aware approach? GPXchunk vs Strava vs Garmin Connect spells out what each tool does, and what it refuses to do.

Frequently asked questions

Why does my D+ vary from one tool to another for the same file?
Because each tool applies its own altimeter noise threshold. Strava uses roughly 3 m, Garmin Connect even rewrites elevation through a digital terrain model, GPXchunk applies a strict 1 m. On a 1 000 m elevation outing, the gap can reach 150 to 300 m depending on the tool. The dedicated guide on D+ computation walks through all three methods.
What's the difference between average speed and average pace?
None in information — both say the same thing in inverse units. Speed in km/h (or mph) is the cyclist convention: « I rode at 28 km/h ». Pace in min/km (or min/mi) is the runner convention: « I ran at 4:30/km ». GPXchunk shows both side by side so you don't have to choose.
What is V.A.M. (average climbing speed) used for?
To measure climbing performance independently of distance. V.A.M. = D+ ÷ duration, expressed in metres per hour. An amateur runner climbs at 600–800 m/h on a sustained ascent; a Tour de France pro approaches 1 800 m/h on a Cat. 1 col. It's the metric that lets you compare two climbs of different lengths, or your own climb day to day.
Why is max HR on a segment more telling than average HR?
On a short segment, average HR remains a fair indicator of sustained intensity. But on a segment that contains an attack, a climb or a final sprint, max HR reveals the effort peak that the average dilutes. Reading both together — as GPXchunk shows them — gives the cardiac profile of the segment, not just its mean level. Max HR is extracted only if the track contains gpxtpx:hr tags from Garmin TrackPointExtension.

← All guides