- Home
- GeoJSON to GPX Converter
100% private — files never leave your browser
GeoJSON to GPX Converter
Turn .geojson line features into universal .gpx tracks that open in any mapping or navigation app. LineStrings and MultiLineStrings convert with elevation, timestamps from coordinateProperties survive, and everything happens locally on your device.
How to convert to GPX
- 1
Drop your file
Drag a FIT, GPX, TCX, KML, KMZ or GeoJSON file onto the box above, or click it to browse. The source format is detected automatically from the file contents.
- 2
Wait a beat
The conversion runs in a background worker on your device. Typical activities finish in well under a second; even 50 MB files process without freezing the page.
- 3
Check the preview
Distance, duration, ascent and average heart rate are shown alongside a map of the converted track, so you can confirm nothing was lost before downloading.
- 4
Download
Click the download button and the .gpx file is saved straight from memory. Nothing was uploaded, so there is nothing to clean up.
What is a GeoJSON file?
GeoJSON (RFC 7946) is the JSON dialect of geography — the format the modern web speaks natively. Mapping libraries (Leaflet, Mapbox GL, D3, Deck.gl), data-journalism tools (Datawrapper, Flourish), GIS suites (QGIS, PostGIS) and half the data-science Python stack all consume it without ceremony. A file is a FeatureCollection of geometries, coordinates are written as [longitude, latitude] pairs, and properties ride along as plain JSON.
Like KML, GeoJSON is about geography rather than training. It has no native slots for heart rate or power, though tools freely attach custom properties — the widely used togeojson convention stores per-point timestamps in coordinateProperties.times, which this converter both reads and writes. If the destination is a web map, a dashboard or a data pipeline, GeoJSON is almost always the shortest path.
What is a GPX file?
GPX (GPS Exchange Format) is the universal, open XML format for GPS data, standardized by TopoGrafix and supported by essentially every mapping application on earth — Strava, Google Earth, Komoot, RideWithGPS, Garmin BaseCamp, QGIS and hundreds of others. A GPX file stores waypoints, routes and tracks as latitude/longitude pairs, optionally with elevation and timestamps, and Garmin's TrackPointExtension carries heart rate, cadence and power alongside each point.
Because GPX is plain text XML, it is readable, diffable, scriptable and trivially editable — which makes it the lingua franca when a track needs to move between ecosystems. The cost is size: the same activity as GPX is typically 5-10× larger than FIT, and consumer-oriented apps sometimes ignore the extension channels. For archiving, editing and cross-platform sharing, though, GPX remains the safest long-term bet.
Why convert GeoJSON to GPX?
GeoJSON is where data lives; GPX is where it travels. A trail dataset exported from a GIS project, a route produced by a data pipeline, a line feature grabbed from OpenStreetMap tooling — all of it is easy to hold in GeoJSON and awkward to use on a device or in consumer mapping apps. One conversion turns the feature into a track your watch, planner or GPX viewer understands.
The bridge also serves web teams: a map product keeps its geometry as GeoJSON for rendering, and the field team needs the same route on standalone GPS units for the day the cell network doesn't come along. Same data, two audiences, one conversion step.
How the geometry maps across
Each LineString becomes one GPX track segment; MultiLineStrings become one segment per line, in order; a FeatureCollection contributes all of its line features. Coordinates are read in the standard GeoJSON order — longitude first — and written as GPX latitude/longitude points with elevation when the third coordinate exists. Feature names become the track name when present.
Timestamps: if features carry coordinateProperties.times (the convention Mapbox's togeojson writes and this site's GeoJSON output uses), they map to per-point <time> elements. Features without times produce a GPX without times — valid for routes, and honestly reported rather than invented. Points and polygons in the file are not line geometry and are skipped.
Your files never leave this browser
This tool — like every tool on this site — runs entirely as client-side JavaScript. The file you drop is parsed in a Web Worker on your own device, converted in memory and handed straight back to you as a download. There is no upload endpoint, no server-side conversion service and no temporary storage: you can watch the network tab in your browser's developer tools and confirm that no file bytes are transmitted anywhere.
That matters more with fitness data than with most files. A GPS track is a precise log of where you were, at what time, and how hard your heart was working — home address, training habits, favorite routes and race schedule all in one file. Keeping conversion on-device means third-party converters never get a copy of that log, and the tool keeps working identically on a plane, in a basement, or anywhere else without signal.
GeoJSON vs GPX at a glance
| Aspect | GeoJSON | GPX |
|---|---|---|
| Format type | JSON (RFC 7946) | GPS exchange XML (universal) |
| Typical use | Web maps, GIS, pipelines | Navigation apps, watches, sharing |
| Line geometry | LineString / MultiLineString | trkpt segments |
| Timestamps | coordinateProperties.times | Per point when present |
| Properties | Arbitrary JSON | Name and type only |
| Best for | Data and rendering | Devices and consumer apps |
Frequently asked questions
Yes — that ordering is the GeoJSON standard, and the converter expects it. Longitude first is correct input here; the resulting GPX has proper lat/lon in the places GPX readers expect.