GeoJSON to GPX Converter

Convert GeoJSON Features and FeatureCollections to valid GPX 1.1

Free GeoJSON to GPX converter that runs entirely in your browser. Maps Point, LineString, MultiLineString and Polygon geometries to GPX waypoints and tracks, reading RFC 7946 [lon, lat] order. No backend, no upload, no location-data exposure. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

Which GeoJSON geometries are supported?

Point becomes a GPX waypoint. LineString becomes a track with one segment. MultiLineString becomes a track with one segment per line. A Polygon's outer ring is exported as a track, since GPX has no polygon type.

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:

  1. The JSON is parsed and reduced to a list of features, whether you paste a FeatureCollection, a single Feature, or a raw geometry.
  2. Each geometry is mapped:
    • Point → a waypoint (wpt)
    • LineString → a track with one segment (trkseg)
    • MultiLineString → a track with one segment per line
    • Polygon → a track built from its outer ring (GPX has no polygon type)
  3. Coordinates are read as [lon, lat, ele]longitude first per RFC 7946 — and written into GPX’s separate lat/lon attributes with an ele child when a third value is present.
  4. properties.name and properties.desc carry 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 .gpx file.
  • 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.