Practical iPhone guides

GPX, KML or GeoJSON: choose a file you can use

Choose for your destination, check what the file preserves, and keep an original you can return to.

Choose the format your next tool can use

GPX is a useful starting point for a GPS track or route. Choose KML when your destination expects Google Earth-style features, GeoJSON for mapping or GIS work, and CSV for a point table. Check the destination’s actual import requirements before converting.

The extension does not tell you everything a file preserves. A line on a map, a timed recording, and a restorable location journal are different outputs. Keep the original file alongside any converted copy.

GPX vs KML vs GeoJSON vs CSV

Start with the task, then verify the receiving app
FormatUseful forCheck before using it
GPXGPS tracks, routes and waypoints in compatible viewersWhich objects are present, whether points have times, and whether segments stay separate
KMLGoogle Earth-style placemarks, geometry and presentationSupport for the actual geometry and extensions; an ordinary line is different from a timed track
GeoJSONMapping applications and geographic information systems (GIS)Geometry type, longitude-first coordinate order, and the meaning of custom properties
CSVSpreadsheets, filtering and row-based analysisColumn names, timezone, units and group identifiers; CSV does not define a universal route model

A planned route may have coordinates without recording times. A recorded track can contain several segments. Neither a valid file nor a continuous line proves that every part of a real journey was captured.

One invented trip, four downloadable files

The comparison starts with five points in two segments: three points from 12:00 to 12:02, then two from 12:13 to 12:14 on January 1, 2000, in UTC. The break between segments is 11 minutes. The coordinates are invented and there is no measured elevation.

Segment 1: 12:00 → 12:01 → 12:02
           [11-minute break]
Segment 2: 12:13 → 12:14

These are controlled examples created for this guide, not personal history or newly captured native-app exports. Automated checks compare their coordinates, times and group boundaries. That verifies the contents, not that every third-party viewer will import every field.

What changes between the files?

Coordinate order needs attention

The first point is latitude 0, longitude 10. GPX labels those values as attributes; GeoJSON positions and KML track coordinates put longitude first. Swapping them can move a point while leaving both numbers within valid coordinate ranges.

GPX:     <trkpt lat="0" lon="10">…</trkpt>
GeoJSON: "coordinates": [[10, 0], …]
KML:     <gx:coord>10 0 0</gx:coord>
CSV:     latitude=0, longitude=10

The KML example is clamped to the ground: its third-coordinate zeros are placeholders, not measured elevation. The GPX has no elevation elements, the GeoJSON positions are two-dimensional, and the CSV elevation cells are blank. For real height data, check the units and height reference rather than assuming a copied number has the same physical meaning.

Time must have a defined place

In the source GPX, each point has a time value. The KML example pairs each when with a gx:coord in the same track. This uses Google’s KML track extension; the destination must support it. A simple KML LineString is a different representation.

GeoJSON describes geometry and feature properties, but these examples’ times arrays are our own convention: entry 1 describes coordinate 1, and so on within each feature. A reader must explicitly understand that convention to use the times. Keeping the property in a file does not guarantee timed playback in another app.

The CSV includes both time_utc and original_time. The first is normalized to UTC; the second retains the original timestamp text. When inspecting a real export, compare timezone-aware times rather than only the clock labels shown in a spreadsheet or viewer.

Keep the break instead of inventing a connection

The GPX uses two trkseg elements. The KML has two timed tracks and gx:interpolate set to 0. The GeoJSON has two separate LineString features. In CSV, group is 1 for the first three rows and 2 for the last two; point numbering restarts in each group.

A consumer that ignores the group column or merges the lines could draw an extra connection. Preserve the grouping and check the rendered result. A CSV row sequence alone is not a guarantee that a map will understand the break.

Open a GPX-derived CSV without losing its meaning

Start with the five-row synthetic CSV above, or open its source GPX in the local viewer and choose Download points as CSV. This is a point table for inspection, not a Whereday restore file.

  1. Import a copy with a preview. Select a comma delimiter and check that the header becomes nine columns, from kind through original_time. If everything appears in one column, fix the delimiter before editing any values.
  2. Keep timestamps as text initially. Preserve both time_utc and original_time exactly. Automatic date conversion can hide the offset or change the display; make a separate column if you need spreadsheet date calculations.
  3. Check decimal coordinates. The second row of data should have latitude 0.001 and longitude 10.001. Use import settings that interpret the decimal point correctly, and do not swap the two columns.
  4. Keep whole rows together. Retain the original order for comparison. If you sort a working copy, include every column and sort by group, then point; point numbering restarts in each segment.
Expected values after importing the invented example
CheckExpected resultWhy it matters
Rows and groupsFive data rows; group 1 has three, group 2 has twoA header is not a point, and the two segments must remain distinguishable.
First timestamp2000-01-01T12:00:00.000Z in time_utcThe Z means UTC, not the spreadsheet computer’s local time.
Original timestamp2000-01-01T12:00:00Z in original_timeThese two strings describe the same instant; the extra zeros are fractional seconds.
ElevationFive blank elevation_m cellsMissing elevation is not measured sea-level elevation. Do not replace blanks with zero.

For a separate invented timezone example, 2000-01-01T08:00:00-04:00 and 2000-01-01T12:00:00Z identify the same instant. Removing the offset would lose that meaning. A timestamp’s offset also does not identify a named timezone or its daylight-saving rules; keep the source text alongside any display conversion.

Before sending a saved CSV to another tool, reopen it as text and compare the header, first and last timestamps, blank elevations and group values with the untouched copy. A spreadsheet workbook can retain formatting and formulas that a CSV cannot. Keep calculations in a separate workbook and preserve the original export.

Microsoft’s Excel text and CSV import guidance explains import previews and automatic column interpretation. The RFC 3339 timestamp specification explains UTC and numeric offsets. This checklist verifies file values; it is not a tested Excel, Numbers or Google Sheets import walkthrough. Use synthetic data to check your chosen application before opening personal location history, particularly in a cloud spreadsheet.

Check a conversion with a small file first

  1. Keep the original. Save the converted file separately. Renaming the extension does not convert the contents.
  2. Inspect counts and dates. For this example, expect five points, two groups and times from 12:00 to 12:14 UTC. Check that one segment contains three points and the other contains two.
  3. Check a known coordinate. The first point is 0° latitude, 10° longitude. Check the destination’s field order and units.
  4. Open it in the intended destination. Look for a joined gap, absent times, changed point counts or ignored properties. File parsing checks and actual app behavior answer different questions.
  5. Document what was omitted. These derived examples preserve selected point data and grouping; they do not carry every possible source field, extension or application setting.

To inspect the GPX, use the free local GPX viewer and select the source GPX downloaded above. Expect five valid points, one track and two segments. The viewer accepts GPX, not the KML or GeoJSON examples. Its CSV download should match the CSV example byte-for-byte.

The worked GPX inspection tutorial explains missing timestamps, invalid coordinates and CSV limits. Warnings identify things to review; they do not automatically prove that a pause, duplicate position or gap is an error.

Which file should you keep from Whereday?

For a portable route, read the recording and GPX export guide. Whereday’s native format options also include KML, GeoJSON and CSV; see the export and import reference for supported record types and requirements. This guide’s comparison fixtures are not assertions about every native exporter’s field choices.

For a restorable journal copy, follow the Whereday JSON backup workflow. Supported Whereday CSV or Markdown imports have their own required fields. A generic point table is not automatically compatible, and the GPX, KML and GeoJSON examples are not Whereday restore files.

New-user tracking access and native file-writing access depend on your plan and existing rights. The free browser GPX viewer does not require Whereday or an account. Keep the original recording or archive as well as any file made for another tool.

Specifications behind the examples

Use the GPX 1.1 schema documentation for point and segment structure, the KML track reference for timed tracks and interpolation, and GeoJSON RFC 7946 for positions, geometry and properties. App support must be checked separately from the format’s capabilities.

Convert an existing GPX locally

The GPX viewer now offers GeoJSON download. Its custom properties differ from this article’s controlled comparison file: use the worked converter tutorial and exact generated example to check its field mapping. The converter keeps parts disconnected at invalid coordinates and dateline jumps, and preserves elevation in a property array rather than assuming a height reference for geometry.