GeoJSON (RFC 7946) is the standard format for web maps and GIS, while GPX is what Garmin devices, Strava, Komoot, and most GPS hardware import. This free converter remaps GeoJSON features to GPX in your browser, so you can take a route designed in a web tool and load it onto a device without uploading your private geographic data anywhere.
When you need this converter
The two formats serve different purposes. GeoJSON is designed for the web: easy to embed in JavaScript, readable as plain text, supported by every modern mapping library. GPX is designed for portability: it is the interchange format that GPS receivers, fitness trackers, and route-planning apps export and import. If you plan a route on a web mapping tool, download a GeoJSON, and then want to load it onto a Garmin Edge, a Wahoo, or Strava, you need this conversion step — because those devices and apps read GPX, not GeoJSON.
How it works
The converter normalises the input and rebuilds it as GPX 1.1:
- The JSON is parsed and reduced to a list of features, whether you paste a
FeatureCollection, a singleFeature, or a raw geometry. - Each geometry is mapped:
Point→ a waypoint (wpt)LineString→ a track with one segment (trkseg)MultiLineString→ a track with one segment per linePolygon→ a track built from its outer ring (GPX has no polygon type)
- Coordinates are read as
[lon, lat, ele]— longitude first per RFC 7946 — and written into GPX’s separatelat/lonattributes with anelechild when a third value is present. properties.nameandproperties.desccarry over as the GPX name and description.
The coordinate-order trap
The single most common error when converting between GeoJSON and GPX is coordinate order. GeoJSON stores positions as [longitude, latitude] — that is, x before y, west-east before south-north. GPX stores them as separate attributes with latitude first. The converter always reads GeoJSON index 0 as longitude and index 1 as latitude, then writes them into the correct GPX slots.
A GeoJSON point feature with "coordinates": [16.3738, 48.2082] (central Vienna) becomes:
<wpt lat="48.2082" lon="16.3738"></wpt>
If a track you convert appears in the wrong location — often mirrored diagonally across the globe — the cause is almost always that the source GeoJSON itself had lat/lon swapped. Check the raw coordinates before converting.
Elevation data
If your GeoJSON coordinate arrays include a third value (elevation in metres), the converter carries it into GPX as <ele> child elements on each track point:
<trkpt lat="48.2082" lon="16.3738"><ele>165</ele></trkpt>
Most GPS devices and cycling/running apps display this as elevation profile data. If your source GeoJSON lacks elevation, the GPX output will simply omit the <ele> elements, which is valid GPX 1.1.
Importing the result
Once you have the GPX file:
- Garmin devices: connect via USB, copy to the
/Garmin/GPX/folder, and the device finds it on next restart. - Strava: use the manual activity upload (the upload icon on the dashboard) and select your
.gpxfile. - Komoot: from the route planner, use the import option and select GPX.
- Google Maps: GPX import is available in My Maps, not the main app — import as a layer and convert waypoints to map pins.
All processing is local; your GeoJSON never leaves your browser.