Analyze a GPX track

Drop the file from your watch, your phone or a trail portal and see how long it really is, how much it climbs and how long it took you. The file stays on your device.

🗺️ Tap here or drop your track

A .gpx or .tcx file, gzipped ones too. They stay on your device

You can change threshold, stop speed and units after loading the file too, the numbers update right away.

🔒 Your track never leaves your device: the browser reads and measures it, with no upload at all.

What it opens and what it shows

Drop the file your watch, your phone or a trail portal gives you (.gpx or .tcx, gzipped ones too) and the page opens it inside your browser: no upload, no account, the file stays where it is. Out come distance, elevation gain and loss, lowest and highest point, average and extreme gradients, elapsed and moving time, average speed and pace, the elevation profile and the per kilometre splits, which you can download as CSV to open in a spreadsheet.

Why every website gives you a different elevation gain

Everybody asks this, and the answer is the threshold. A GPS receiver gets elevation wrong by a few metres all the time, so a track recorded standing still in a square still goes up and down: adding up every single difference produces hundreds of metres you never climbed. The filter here works like this: while elevation wobbles inside the threshold nothing is counted, and as soon as the wobble exceeds it the whole difference from the last peak or valley is counted, threshold included. At 3 m, the recommended value, a real climb stays whole and the jitter disappears; with «No threshold» you get the raw sum, which is the highest number but not the truest one. When comparing with Strava or Komoot, remember they often replace GPS elevation with a terrain model, and that number simply is not in your file.

How distance, time and gradients are computed

Distance is the sum of the distances between consecutive points using the haversine formula on the mean Earth radius of 6,371,008.8 m, measured horizontally the way watches and portals do (adding the vertical component would change the total by less than one part in a thousand even in the mountains). Jumps between one segment and the next are not added, because in a GPX a new segment means exactly that the recording had stopped. Elapsed time is the difference between the last and the first timestamp, breaks included; moving time only adds up the stretches covered above the speed you set, usually 1 km/h on foot and 3 or 4 km/h on a bike. The steepest gradient is never the one between two neighbouring points, which noise would turn into absurd percentages: it is measured over windows of at least 100 horizontal metres and on the elevation already cleaned by the threshold.

The limits, stated plainly

Elevation in the file comes from the GPS or from a barometric altimeter and is usually 10 or 15 m off, which the filter reduces but does not remove: these numbers are good for comparing two outings, not for arguing about ten metres. Distance depends on how often the device records: one point per second cuts corners less than one point every ten, and in woods or between tall buildings the signal zigzags and always adds a little. Splits use the time elapsed inside that kilometre, breaks included, so a slow split may only mean you stopped for water. Heart rate, power and cadence are not read, and .fit watch files are not XML and must be exported to GPX from the brand portal first.

Typical mistakes, and what an empty result means

If the file is a route planned at a desk (rte) rather than a recorded track, the points are few and far apart: distance comes out shorter than the real path, and the page says so. If the workout was indoor, treadmill or trainer, there are no coordinates inside and nothing to measure. If the portal exported without elevation, gain and profile do not appear, and exporting again while asking to include elevation almost always fixes it. Finally, points that would imply more than 250 km/h with a jump longer than 100 m are thrown away as receiver glitches, and you are told how many there were.