GPX Explorer
Upload a GPX file to see your route on an interactive map, explore the elevation profile and gradient heatmap, and get trail race stats calculated instantly.
Try a famous race
Drop a GPX file here, or click to browse
Supports GPX 1.0 and 1.1 - max 10 MB
A GPX explorer lets you upload a GPX track and instantly see distance, elevation gain and loss, climb segments, and grade distribution on an interactive map and elevation profile. TrailMath's free explorer also predicts your finish time, your splits and your cutoff margins from a course file that has never been run - no timestamps needed, just a recent race result or your flat pace and climbing rate. It runs entirely in your browser - your file never leaves your device. Once a route loads, you can turn it into a training plan pre-filled with its distance, its D+ and, for a recognised race, its date.
How the stats are calculated
km-effort is based on the ITRA (International Trail Running Association) effort unit, which uses distance + gain/100. TrailMath extends this by adding descent cost (+ loss/150) to reflect real eccentric muscle load on steep descents. A route with 50 km and 3,000 m of total elevation change scores roughly 70 km-effort - equivalent in effort to running 70 km flat.
Gradient heatmap is computed from the smoothed elevation profile rather than from raw point pairs. Horizontal distance comes from the haversine formula; grade is then measured over 100 m windows of the resampled profile, which keeps the colours describing the slope rather than flickering with GPS jitter. Sections are colour-coded from blue (steep descent) through green (flat) to red (steep ascent), matching the conventions used by trail running apps and race course maps.
Elevation profile plots the altitude (from GPS elevation data) against cumulative horizontal distance along the route. Hover over the chart to highlight the corresponding position on the map. Note that GPS elevation accuracy varies by device - altimeter-equipped devices (most trail watches) are more accurate than phones.
Elapsed time and UTMB Index are only shown when your GPX file contains timestamps (i.e. it is a recorded activity, not a planned route). The elapsed time is the difference between the first and last recorded timestamp. The index estimate comes from the same calibrated model as the ITRA/UTMB index calculator - a log-linear fit of score against flat-equivalent speed and course size, trained on results read from public utmb.world profiles. It is an estimate with a stated range, not an official score.
ITRA. km-effort definition. itra.run - Minetti et al. (2002). Energy cost of walking and running at extreme uphill and downhill slopes. J Physiol.
Frequently asked questions
Can TrailMath build a training plan from my GPX?
Yes. Once your route loads, the card under the stats opens a training plan already filled in with the route's distance and D+. For a recognised race you confirm, it uses the organiser's official figures and the race date instead, so every week of the plan counts back from the start line. Creating an account needs no card, and the 14-day Premium trial starts when your plan is generated. Your GPX file still never leaves your device - only those numbers travel in the link.
Can I use this for a race I have not run yet?
Yes - that is what it is for. A course file downloaded from the organiser has no timestamps, so there is no elapsed time to report, but that was never the interesting number. Enter a recent race result, or your flat pace and your climbing rate, and the tool predicts your finish time, your split at every aid station, and how much margin you have on each cutoff. Recognised races use the organiser's own checkpoints and barriers.
How accurate is GPS elevation data?
GPS barometric altitude is typically accurate to ±5-15 m per point, and summing every raw point-to-point change turns that noise into phantom climbing - usually 10-20% of it. This tool conditions the elevation series first: it resamples the profile to a uniform 20 m horizontal spacing, so the answer does not depend on how densely your device recorded, then accumulates gain and loss through a 3 m deadband that ignores reversals smaller than the sensor can resolve. Measured against the 17 bundled courses with verified official figures, that brings the average error down from 5.3% to 2.7%. Altimeter-equipped watches (Garmin, COROS, Suunto) still give a better starting signal than phone GPS. Use the result to compare courses rather than for precise elevation certification.
Why does my km-effort differ from the official ITRA value?
ITRA computes km-effort from verified, smoothed course profiles - not recorded GPS tracks. Your GPS track includes noise, slightly different lines, and may cover a longer distance than the marked course. The formula (distance + gain/100 + loss/150) is identical, but the inputs differ. Treat this tool's km-effort as 'your experience of the course' rather than the official race difficulty.
What is the difference between D+ from GPS and from a topo map?
Topo-derived D+ uses a digital elevation model (DEM) sampled along the planned course line. GPS-recorded D+ sums elevation changes from every sensor reading, including noise. Over a 100 km ultra, this noise can add 500-2000 m of phantom gain. Some GPS devices apply Kalman filtering to reduce this. If you want to compare courses objectively, use map-derived elevation profiles (AllTrails, Strava route builder) rather than recorded activities.
Can I use a planned route GPX (not a recorded activity)?
Yes. Route GPX files (no timestamps) work fully - you get distance, elevation profile, km-effort, gradient heatmap, climb analysis, and the 2D/3D map. The only features that require timestamps are elapsed time and the UTMB Index estimate, which are based on your actual pace.
What does the steep grade figure mean?
It is the 95th percentile of the gradient measured over 100 m sections - roughly, how steep the steepest twentieth of your route is. Measuring grade between consecutive track points does not work: recorded points can sit anywhere from 5 m to 500 m apart, so a short segment with a few metres of elevation error reads as a 100%+ wall, and an unweighted percentile lets those short segments dominate. Measuring over fixed 100 m windows of the smoothed profile makes every sample cover the same ground, so the percentile describes the terrain instead of the recorder. It is reported for each direction - climb and descent - because the two are different demands to train for: climbing is mostly a metabolic cost, while descending is mechanical, loading the quadriceps eccentrically and causing the muscle damage that makes a steep descent hurt for days afterwards. A course can be far steeper one way than the other. For reference, CCC comes out around +32% climbing and -28% descending, while a rolling course like Kullamannen sits near 10% both ways.
Which famous races can I use to compare difficulty?
Five sample courses are bundled, each loading the organiser's own GPX. Their official figures, with both km-effort forms (TrailMath includes descent, ITRA is gain only): UTMB 174 km / 10,000 m D+ - 341 TrailMath, 274 ITRA. Hardrock 100 161 km / 10,000 m - 328 / 261. Western States 100 161 km / 5,600 m - 264 / 217. TDS 148 km / 9,300 m - 304 / 241. CCC 108 km / 6,200 m - 212 / 170. A standard road marathon scores about 42 km-effort. The figures the tool reports come from the GPX track itself, so they land within a percent or two of these rather than matching exactly - a course file is a recording, not the official measurement.
Got a course file? Build the training block for it.
TrailMath uses these models to build periodized plans adjusted to your goals and terrain.
Start free