— Developer Tools

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.

— Samples
Points 61Distance 4.22 kmWaypoints 1Valid
Live

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.

1

Export the GPX

Garmin Connect, Strava and Komoot each offer Export GPX on an activity or route page.

2

Open It

Use Open .gpx file or paste the XML. The map and elevation profile appear above the output.

3

Read the Summary

Each track shows distance, time, pace, climbing and heart rate. Routes and waypoints are listed below.

4

Check Splits or Export

Splits shows each kilometre. To GeoJSON converts the file for web maps and GIS tools.

Worked Examples

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.

REF_001Summary of a timed walk

“<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>”

REF_002Splits of a 2 km run

“<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>”

REF_003Summary of a planned route

“<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>”

REF_004Waypoints to GeoJSON

“<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>”

REF_005A GPX 1.0 hike

“<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>”

REF_006Splits with no timestamps

“<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>”

REF_007Two segments, gap not counted

“<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>”

REF_008A trkpt left open

“<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>”

REF_009Latitude out of range

“<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>”

REF_010KML instead of GPX

“<kml xmlns="http://www.opengis.net/kml/2.2"><Placemark><name>Pier</name><Point><coordinates>-122.39,37.79</coordinates></Point></Placemark></kml>”

GPX Elements

What’s Inside a GPX File

GPX 1.1 is a small XML schema from TopoGrafix. These ten elements are the ones that matter.

01 / GPX

gpx

The root element, with version 1.0 or 1.1 and a creator naming the device or app.

“Which attribute names the app?”

02 / TRK

trk

A track: what was recorded while moving. It has a name and one or more segments.

“Is a track recorded or planned?”

03 / TRKSEG

trkseg

A continuous run of points. A new segment starts after signal loss or a paused recording.

“Is distance counted between segments?”

04 / TRKPT

trkpt

One recorded point, with lat and lon attributes in WGS 84 degrees.

“Are lat and lon elements or attributes?”

05 / ELE

ele

Elevation in metres above sea level, from GPS or a barometric altimeter.

“What unit is ele in?”

06 / TIME

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?”

07 / RTE

rte and rtept

A route: points to follow, usually planned in an app, with no times.

“Does a route have segments?”

08 / WPT

wpt

A standalone point of interest, such as a summit or a water stop, with a name.

“Is a waypoint part of a track?”

09 / EXTENSIONS

extensions

Vendor data inside a point. Garmin’s TrackPointExtension adds heart rate, cadence and temperature.

“Where is heart rate stored?”

10 / METADATA

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.

Tip 01

Garmin Connect

Open an activity, choose the gear menu, then Export to GPX. Courses export from their own page.

Tip 02

Strava

On an activity, open the three-dot menu and choose Export GPX. Routes have an Export GPX button too.

Tip 03

Komoot

Open a tour and choose Download, then GPX file. Planned tours export as routes without times.

Tip 04

Apple Watch and iPhone

Workouts don’t export GPX directly. Apps such as HealthFit or RunGap convert them.

Tip 05

OsmAnd and Gaia GPS

Recorded tracks and saved points export as GPX from the track or folder menu.

Tip 06

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.

Tip 01

GPS Elevation Is Noisy

GPS altitude wanders by several metres. Without smoothing, a flat run shows hundreds of metres of climbing.

Tip 02

Sparse Recording

Smart recording logs fewer points on straight lines, which cuts corners and shortens the measured distance.

Tip 03

Auto-Pause Differences

Each app uses its own stop threshold, so moving time differs even when total time matches.

Tip 04

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.

Tip 05

Routes Aren’t Activities

A planned route has no times or heart rate, so only distance and climbing can be shown.

Tip 06

Privacy of Home Locations

Tracks that start at home reveal your address. Trim the start and end before sharing a file.

Frequently Asked Questions