Convert GPX to GeoJSON
Your file never leaves your device — conversion happens here in your browser.
Most web-mapping libraries — Leaflet, Mapbox GL, deck.gl — expect GeoJSON, not the XML-based GPX your GPS device actually wrote, so this converter exists to close that gap without you writing a parser yourself. The track becomes a LineString feature, and every trackpoint's heart rate, cadence, power, and temperature — whatever your file actually contains — travels along in a coordinateProperties object, following the same convention the popular togeojson library uses, so tools built to read that structure will find your sensor data exactly where they expect it. Position and elevation are preserved to full precision, and timestamps gain millisecond resolution in the output even though GPX itself only ever stores whole seconds — the extra digits are simply zero-filled, not invented data. One thing that won't appear no matter how the conversion runs: distance and speed columns. That's not a limitation of this tool: GPX has no distance or speed element at all, so there is nothing to carry forward — a GeoJSON built from a FIT or TCX source could include those, but one built from GPX genuinely cannot, because the source never had them. Laps are absent for the same underlying reason on the GPX side, and GeoJSON has no lap concept regardless. This runs the same as every conversion on this site: entirely in your browser, in a background worker, so a route with hundreds of thousands of points doesn't lock up the page, and the file itself never leaves your device — useful if the route is a training location you don't want passing through a third-party server just to change format.
Questions
Where does the sensor data live in the GeoJSON output?
In a coordinateProperties object attached to the LineString feature, following the same convention used by the togeojson library — the standard most web-mapping tools expect.
Why is there no distance or speed field in the output?
GPX itself has no distance or speed element, so there's nothing for the conversion to carry over. That's a property of the source format, not something this converter strips out.
Can I load the output straight into Leaflet or Mapbox?
Yes — the output is standard GeoJSON with a LineString geometry, which both libraries read natively without extra parsing.
Does the timestamp precision change?
GeoJSON's per-point timestamps are written with millisecond fields even though GPX only stores whole seconds — the milliseconds are zero-filled, not new data.