Convert GeoJSON to GPX

Your file never leaves your device — conversion happens here in your browser.

A route built in a web map, exported from QGIS, or generated with a script usually comes out as GeoJSON — a LineString with a coordinateProperties block carrying your timestamps and sensor readings. That's a natural shape for Leaflet or Mapbox, but a Garmin head unit, a Wahoo, or Strava's upload form won't touch it; they want GPX. This tool reads the geometry and the coordinateProperties arrays together and writes a standard GPX track, one trkpt per coordinate, so the file opens on essentially any GPS device or fitness platform in existence — GPX is the closest thing this space has to a universal format, and it's the safest target when you don't know exactly what will open the file next. Position, elevation, and timestamps carry over exactly, and heart rate and cadence transfer cleanly into GPX's extension schema. Two things don't survive the trip, not because of a bug but because GPX itself has no place for them: distance and speed are dropped, since GPX never defines fields for either, and power is downgraded, carried in a vendor extension that some older tools ignore rather than a first-class field. If your source GeoJSON has no sensor data at all — just a plain route with coordinates — you'll get a clean track-only GPX, which is exactly what most navigation apps expect anyway. Everything happens locally: the parsing, the unit conversion, the XML writing, all in a background worker in your browser, so a route with hundreds of thousands of points doesn't freeze the tab, and the file itself never touches a server.

Questions

Will my GeoJSON route open on my Garmin or Wahoo after converting to GPX?

Yes — GPX is the standard nearly every GPS device and fitness platform accepts for navigation. That universal support is the main reason to convert to GPX rather than keep the file as GeoJSON.

What happens to power, distance, and speed?

Distance and speed are dropped entirely, because GPX has no field for either regardless of source. Power is carried through in a GPX extension, which most modern tools read but a few older ones may ignore — treat it as lossy, not guaranteed.

Does my GeoJSON need a coordinateProperties block for this to work?

No. Plain GeoJSON geometry with just coordinates converts to a track-only GPX file. The coordinateProperties block is only needed if you want heart rate, cadence, or power carried into the output.

Is there a size limit on the GeoJSON file?

Free use covers files up to 25 MB, three at a time. Supporting the project removes that limit and unlocks elevation-gap repair.