Free GPX Viewer
Open a GPX file to see the route on a map with distance, moving time, pace, climbing and heart rate, split by kilometre.
What is a GPX Viewer?
GPX is the XML format GPS watches, phones and route planners use to save tracks, routes and waypoints. This viewer draws a GPX file on a map and works out the numbers an activity app would show you.
It reads GPX 1.0 and 1.1 from Garmin, Strava, Komoot, OsmAnd and handheld units, including Garmin’s heart rate and cadence extension. Distance, moving time, pace, climbing and per-kilometre splits are calculated in your browser, and the file can be exported as GeoJSON.
Key Features
Track on a Map
Tracks, routes and waypoints are drawn on a map, with an elevation profile above. The OpenStreetMap street map loads when you ask for it.
The Numbers You Expect
Distance in km and miles, total and moving time, speed and pace, elevation gain and loss, and heart rate.
Kilometre Splits
Time, pace and elevation change for each kilometre, with the final part-kilometre shown separately.
GPX to GeoJSON
Export tracks as MultiLineStrings, routes as LineStrings and waypoints as Points for web maps.
Read Locally
The file is parsed in your browser and never uploaded. Only map tiles are loaded from OpenStreetMap.
Perfect for everyone
- Runners
- Cyclists and hikers checking an activity
- People planning routes
- Developers working with GPS data
How to Use the GPX Viewer
Open a GPX file and read the map, the summary and the splits.
Export the GPX
Garmin Connect, Strava and Komoot each offer Export GPX on an activity or route page.
Open It
Use Open .gpx file or paste the XML. The map and elevation profile appear above the output.
Read the Summary
Each track shows distance, time, pace, climbing and heart rate. Routes and waypoints are listed below.
Check Splits or Export
Splits shows each kilometre. To GeoJSON converts the file for web maps and GIS tools.
GPX Files, Measured
Each row is a GPX file trimmed to a few points, and each answer is this viewer’s output in the mode on the chip. Estimate the distance before you reveal it.
“<gpx version="1.1" creator="Strava"> <trk><name>Lunch walk</name><trkseg> <trkpt lat="40.7681" lon="-73.9819"><ele>24</ele><time>2026-10-25T12:00:00Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>98</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt> <trkpt lat="40.7708" lon="-73.98"><ele>27</ele><time>2026-10-25T12:03:40Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>104</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt> <trkpt lat="40.7735" lon="-73.9781"><ele>31</ele><time>2026-10-25T12:07:15Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>109</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt> <trkpt lat="40.7762" lon="-73.9762"><ele>30</ele><time>2026-10-25T12:10:55Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>111</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt> </trkseg></trk> </gpx>”
“<gpx version="1.1" creator="Strava"> <trk><name>Riverside 2 km</name><trkseg> <trkpt lat="51.48" lon="-0.17"><ele>6</ele><time>2026-10-25T07:00:00Z</time></trkpt> <trkpt lat="51.4845" lon="-0.17"><ele>6</ele><time>2026-10-25T07:02:30Z</time></trkpt> <trkpt lat="51.489" lon="-0.17"><ele>7</ele><time>2026-10-25T07:05:05Z</time></trkpt> <trkpt lat="51.4935" lon="-0.17"><ele>6</ele><time>2026-10-25T07:07:35Z</time></trkpt> <trkpt lat="51.498" lon="-0.17"><ele>8</ele><time>2026-10-25T07:10:10Z</time></trkpt> </trkseg></trk> </gpx>”
“<gpx version="1.1" creator="Komoot"> <rte><name>Arthur’s Seat climb</name> <rtept lat="55.9486" lon="-3.1999"><ele>130</ele></rtept> <rtept lat="55.9470" lon="-3.1802"><ele>60</ele></rtept> <rtept lat="55.9441" lon="-3.1618"><ele>251</ele></rtept> </rte> </gpx>”
“<gpx version="1.1" creator="OsmAnd"> <wpt lat="46.5585" lon="7.8350"><ele>2061</ele><name>Kleine Scheidegg</name></wpt> <wpt lat="46.5475" lon="7.9850"><ele>3454</ele><name>Jungfraujoch</name></wpt> </gpx>”
“<gpx version="1.0" creator="eTrex 30"> <trk><name>Ridge</name><trkseg> <trkpt lat="54.4540" lon="-3.2110"><ele>520</ele><time>2026-10-25T09:00:00Z</time></trkpt> <trkpt lat="54.4560" lon="-3.2150"><ele>610</ele><time>2026-10-25T09:04:00Z</time></trkpt> <trkpt lat="54.4575" lon="-3.2190"><ele>720</ele><time>2026-10-25T09:09:00Z</time></trkpt> </trkseg></trk> </gpx>”
“<gpx version="1.1" creator="Garmin BaseCamp"> <trk><name>Planned loop</name><trkseg> <trkpt lat="48.8584" lon="2.2945"></trkpt> <trkpt lat="48.8606" lon="2.297"></trkpt> <trkpt lat="48.862" lon="2.293"></trkpt> </trkseg></trk> </gpx>”
“<gpx version="1.1" creator="Strava"> <trk><name>Through the tunnel</name><trkseg> <trkpt lat="47.3769" lon="8.5417"><ele>410</ele><time>2026-10-25T08:00:00Z</time></trkpt> <trkpt lat="47.379" lon="8.544"><ele>412</ele><time>2026-10-25T08:02:00Z</time></trkpt> </trkseg><trkseg> <trkpt lat="47.39" lon="8.555"><ele>415</ele><time>2026-10-25T08:08:00Z</time></trkpt> <trkpt lat="47.3921" lon="8.5573"><ele>418</ele><time>2026-10-25T08:10:00Z</time></trkpt> </trkseg></trk> </gpx>”
“<gpx version="1.1" creator="Strava"> <trk><name>Cut short</name><trkseg> <trkpt lat="40.7681" lon="-73.9819"><ele>24</ele> </trkseg></trk> </gpx>”
“<gpx version="1.1" creator="script"> <trk><trkseg> <trkpt lat="40.7681" lon="-73.9819"></trkpt> <trkpt lat="140.7708" lon="-73.9800"></trkpt> </trkseg></trk> </gpx>”
“<kml xmlns="http://www.opengis.net/kml/2.2"><Placemark><name>Pier</name><Point><coordinates>-122.39,37.79</coordinates></Point></Placemark></kml>”
What’s Inside a GPX File
GPX 1.1 is a small XML schema from TopoGrafix. These ten elements are the ones that matter.
gpx
The root element, with version 1.0 or 1.1 and a creator naming the device or app.
“Which attribute names the app?”
trk
A track: what was recorded while moving. It has a name and one or more segments.
“Is a track recorded or planned?”
trkseg
A continuous run of points. A new segment starts after signal loss or a paused recording.
“Is distance counted between segments?”
trkpt
One recorded point, with lat and lon attributes in WGS 84 degrees.
“Are lat and lon elements or attributes?”
ele
Elevation in metres above sea level, from GPS or a barometric altimeter.
“What unit is ele in?”
time
When the point was logged, in UTC as an ISO 8601 date. Planned routes usually leave it out.
“Which time zone are GPX times in?”
rte and rtept
A route: points to follow, usually planned in an app, with no times.
“Does a route have segments?”
wpt
A standalone point of interest, such as a summit or a water stop, with a name.
“Is a waypoint part of a track?”
extensions
Vendor data inside a point. Garmin’s TrackPointExtension adds heart rate, cadence and temperature.
“Where is heart rate stored?”
metadata
File-level details: name, author, time and bounds. Viewers can ignore it safely.
“Is metadata required?”
How the Numbers Are Worked Out
Activity apps disagree because they calculate differently: each smooths GPS noise, detects stops and rounds in its own way. These are this viewer’s rules, so you can compare like with like.
Distance
The haversine distance between consecutive points on a 6,371 km sphere, summed within each segment.
Moving Time
Time between points counts as moving when the speed is at least 0.5 m/s, so stops at lights are left out.
Pace and Speed
Distance divided by moving time, shown as km/h and as minutes per kilometre.
Elevation Gain
A climb or descent is counted once it passes 3 m, which stops GPS altitude jitter from adding up.
Splits
Each split ends at the first point past the next whole kilometre, so splits are slightly over 1 km on sparse tracks.
Heart Rate
The average and maximum of every heart rate value in Garmin’s extension, without weighting by time.
Total Time
From the first timestamp to the last, stops included. It matches the elapsed time most apps show beside moving time.
Getting a GPX File
Most apps and devices export GPX, though the button is often tucked away in a menu. Export the original activity rather than a screenshot or a summary, so every point and timestamp comes with it.
Garmin Connect
Open an activity, choose the gear menu, then Export to GPX. Courses export from their own page.
Strava
On an activity, open the three-dot menu and choose Export GPX. Routes have an Export GPX button too.
Komoot
Open a tour and choose Download, then GPX file. Planned tours export as routes without times.
Apple Watch and iPhone
Workouts don’t export GPX directly. Apps such as HealthFit or RunGap convert them.
OsmAnd and Gaia GPS
Recorded tracks and saved points export as GPX from the track or folder menu.
Handheld GPS Units
Garmin eTrex and GPSMAP units save GPX files you can copy over USB from the GPX folder.
When to Open a GPX File
Whenever you want the numbers from a GPS file without uploading it to another account, installing desktop software, or signing in to the app that recorded it.
Checking a Race Course
Load the organiser’s GPX to see the distance and how much climbing there is before race day.
Comparing Devices
Open the same run from a watch and a phone to see why their distances differ.
Planning a Hike
See a downloaded route on the map with its length and elevation before you set out.
Putting a Track on a Website
Convert to GeoJSON and drop it into Leaflet, Mapbox or a static site.
Debugging GPS Code
Check what your app writes, from point spacing to timestamps and extensions.
GPX Pitfalls
Why two apps show different numbers for the same activity, and what to watch for before you share a file that came from your watch or phone.
GPS Elevation Is Noisy
GPS altitude wanders by several metres. Without smoothing, a flat run shows hundreds of metres of climbing.
Sparse Recording
Smart recording logs fewer points on straight lines, which cuts corners and shortens the measured distance.
Auto-Pause Differences
Each app uses its own stop threshold, so moving time differs even when total time matches.
Times Are UTC
GPX times carry no local time zone. A 7 a.m. run in New York reads 11:00 or 12:00 UTC.
Routes Aren’t Activities
A planned route has no times or heart rate, so only distance and climbing can be shown.
Privacy of Home Locations
Tracks that start at home reveal your address. Trim the start and end before sharing a file.