AnyFormat

00 GPX → GeoJSON

GPX to GeoJSON

Keeps the per-point timestamps KML throws away.

01GPX in
02GEOJSON out
03Options 1

0 keeps full precision. Six places is about 10 cm — beyond that is noise from consumer GPS.

  • No upload The conversion runs in this tab. Your file never travels — not to us, and not to the advertising.
  • No sign-up, no email, no daily cap There is no account system to sign up to.
  • No size limit we invented Only your device's memory — about ~2 GB on a desktop browser, ~400 MB on a phone.
  • Turn your Wi-Fi off and convert anyway The conversion needs nothing but this page. Ads will not load without a connection; your file will still convert. That is the whole claim, and it takes five seconds to check.

Converts GPS data to GeoJSON — the format Leaflet, Mapbox, QGIS and essentially all modern web mapping speak natively. Of the three common exchange formats, this is the one that keeps the most of what a GPX contains.

Why this loses less than KML does

GeoJSON gives every feature a free-form properties object, so anything the GPX carried has somewhere to go: names, descriptions, timestamps, and elevation as a third coordinate. KML has no equivalent for per-point time outside an extension most viewers ignore.

Waypoints become Points, routes and tracks become LineStrings, and a multi-segment track becomes a MultiLineString so the gaps where the GPS lost signal stay gaps.

Coordinate order and the specification

GeoJSON positions are [longitude, latitude, elevation]. Longitude first — the reverse of how people say coordinates aloud and the reverse of GPX's attributes. RFC 7946 is unambiguous about it, and it is the source of a great many bugs.

The same document also requires WGS84 and drops the old crs member entirely: GeoJSON coordinates are always longitude/latitude in degrees. If a file arrives declaring a projected system, you are warned — the numbers cannot be fixed without the projection parameters.

File size, and the precision option

A recorded track logs a point every second or two, so an hour's run is a few thousand points with seven decimal places each. That is centimetre precision from a device accurate to about five metres — pure noise, and it can double the file size.

Rounding to six decimal places is about 10 cm and loses nothing real; five is about a metre and is plenty for a map. The option is there for when the file is going over a network.

Other names for this

Also searched as “gpx to json”, “gps track to geojson”.

Questions

Which comes first, latitude or longitude?
Longitude. GeoJSON is [lon, lat, ele] by specification, which is the opposite of how coordinates are usually spoken.
Are timestamps kept?
Yes — as feature properties. This is the main advantage over converting to KML.
How do I display the result?
Leaflet: L.geoJSON(data).addTo(map). Mapbox GL: add it as a geojson source. QGIS opens the file directly.
Is my file uploaded?
No. Everything runs in this tab. That matters more here than almost anywhere else on the site — a calendar is your movements, an address book is other people’s personal data, and a GPS track is where you live and where you run. None of it is sent anywhere.