Appendix: what's inside a PitStopper GPX file
A GPX file from PitStopper is not "plain GPX". It is a valid GPX 1.1 file that any app can open, but it carries extra information that the GPX standard has no place for: the route's line colour and width, turn-by-turn instructions, POI icons and colours, and estimated times. This page lists the additions, which export option controls each, and exactly where in the XML it goes - useful if you write your own tools, compare files, or wonder why another app shows more (or less) than you expected.
<extensions>, which apps that don't recognise it simply skip. Our exports are checked against the official GPX 1.1 schema in our tests.
GPX in brief
A GPX file is XML: elements nested inside each other, in an order the GPX 1.1 standard fixes. These are the ones that matter here.
| Element | What it is | In a PitStopper file |
|---|---|---|
<gpx> | The root that holds everything. Says which GPX version it is, which program wrote it (creator) and which extra vocabularies (namespaces) it uses. | One per file |
<metadata> | About the file itself: its name, author, links, the time it was made. | The route name, a link to PitStopper and the export time |
<wpt> | A waypoint: a single place, at a latitude and longitude, with an optional name, description and symbol. Not part of the line. | Your stops, and distance markers |
<rte> / <rtept> | A route: an ordered series of turn points leading to a destination. How a device gets between them is up to the device. | Not written - PitStopper always exports the line itself, as a track |
<trk> | A track: the line itself, as an ordered list of points to follow exactly. | One per route |
<trkseg> | A segment of a track: one unbroken run of points. A track splits into segments where the line has a gap, such as a recording paused or lost signal. | One per track (a navigation track kept exactly as you imported it keeps its own) |
<trkpt> | A track point: one point on the line. It can carry the same child elements as a waypoint. | The route's points, and where turn-by-turn instructions sit |
<extensions> | A box for anything the standard has no element for, written in another vocabulary. Allowed in most elements; apps that don't know its contents skip it. | Line colour, POI icons and colours, surface |
| Inside a waypoint or track point | ||
<ele>, <time> | Elevation in metres, and a time (UTC). | Elevation from the route; estimated times if you ask for them |
<name> | A short name. | The stop's name; on a track point, the name of a point you placed on the route |
<cmt>, <desc> | A comment, and a longer description. | Your note and type for Ride with GPS; the category, opening hours and contact details. On a track point, <cmt> is the road a turn leads onto |
<src>, <link> | Where the data came from, and a web link. | On stops: OpenStreetMap, and a link to the place on openstreetmap.org. On a route planned here: the planner that drew it, and beeline or osm on the point that ends a straight-line or any-path stretch |
<sym> | The name of the symbol to draw it with. The standard does not say which names exist; each app has its own list. | Garmin symbol names on stops; turn instructions (left, roundabout_e3) on track points |
<type> | A free-text classification. | The kind of stop (FOOD, WATER); via or shaping on route points you placed |
Because the standard leaves <sym>, <type> and <cmt> open, much of what makes a PitStopper file useful is values other apps agree on, not new elements. Everything else goes in <extensions>.
Which app reads what
| Feature | GaGarmin | LoLocus Map | CrCruiser | OsOsmAnd | OMOrganic Maps, CoMaps | GSgpx.studio | GVGPX Viewer |
|---|---|---|---|---|---|---|---|
| Track | |||||||
| Line colour | ✓nearest of 16 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Line width | ✓ | ✓ | ✓ | ✓ | |||
| Transparency | ✓fully only | ✓† | |||||
| Turn-by-turn instructions | ✓ | ✓ | |||||
| Surface (paved, unpaved) | ✓ | ||||||
| Waypoints (your stops) | |||||||
| Garmin symbol names | ✓† | ✓ | ✓ | ✓ | ✓ | ||
| Course-point type | ✓† | ||||||
| POI icon (OsmAnd names) | ✓ | ||||||
| Marker shape | ✓octagon drawn as a circle | ||||||
| Waypoint colour | ✓ | ✓ | ✓ | ||||
| Compressed .gpz | |||||||
| Opens .gpz files | ✓ | ✓ | ✓ | ||||
| Draws our own icons | ✓ | ✓ | |||||
✓ the app documents it, in its own docs, source code or a developer's post (see From the apps themselves). ✓† from our own testing or users' reports. Blank: not supported, or not documented. Strava, Komoot and most other apps read the route and waypoints as plain GPX and ignore the extras; Ride with GPS may read the type in the waypoint comment (unconfirmed). Apps change - if one reads our file differently, please tell us.
Where each addition lives
The options are in Export → Export a file, with GPX selected (see Export GPX). "Always" means it is written without an option.
| What | Option (default) | Where in the XML | Namespace | Read by |
|---|---|---|---|---|
| The track | ||||
| Line colour, width and transparency | Include the route line colour and width (on). Set them per route in Route Settings or the route manager | <trk><extensions>, three ways in this order: gpxx:TrackExtension (nearest of 16 colours, or Transparent), gpx_style:line (color, opacity, width in screen pixels), xsi:gpx (color as #RRGGBB, or #AARRGGBB when transparent, and width) | gpxx, gpx_style, xsi | Ga Lo Cr Os OM GS GV |
| Turn-by-turn instructions | Always, on a route planned here with turn-by-turn on, or a track rebuilt on roads | <trkpt>: <name>, <cmt> (road name), <sym> (left, right, roundabout_e3, pass_place...), <type> (via or shaping) | standard elements | Cr Lo |
| Surface | Always, on a rebuilt track | <trkpt><extensions><xsi:gpx><route_information> (paved, unpaved), where it changes | xsi | Cr |
| Estimated times | Include estimated times on the track and waypoints (off; needs a start time) | <trkpt><time> and <wpt><time> | standard | Lo† |
| Where a planned route leaves the roads | Always, on a route planned here | <trkpt><src>beeline</src> or osm on the point that ends a straight-line or any-path stretch; the track's own <src> names the planner | standard elements | Cr† |
| Your original file's extras | Always | A track that arrives with turn-by-turn or extra per-point data (power, heart rate...) is written back as it came, extensions and all - except that the line colour, if included, is written in all three forms (it is the file's own colour unless you change it), and estimated times are added if you ask for them. The file's top-level <extensions> are kept when only one route is loaded | the original file's own | all |
| Waypoints (your stops) | ||||
| Garmin symbol | Always | <wpt><sym> (Restaurant, Drinking Water...) | standard | Ga† Lo Cr GS GV |
| Course-point type | Always | <wpt><type> (FOOD, WATER...) | standard | Ga† |
| Type for Ride with GPS, and your note | Always | <wpt><cmt> (coffee. Closes early Sunday). A stop imported from another app keeps that file's own comment, with your note added after it | standard | RW† |
| Opening hours, website, phone | Always | <wpt><desc>. A stop imported from another app keeps that file's own description unchanged | standard | all |
| OpenStreetMap link | Always, for OpenStreetMap places | <wpt><src> and <link> | standard | all |
| Web links | Always | <wpt><link>: the links a stop was imported with, then its OpenStreetMap page, then its web site. Links to photos stored inside an imported .gpz are kept in PitStopper but not written yet | standard | all |
| OsmAnd icon | Always, for OpenStreetMap categories | <wpt><extensions><xsi:gpx><icon> (amenity_cafe) | xsi | Os |
| Marker shape | A circle on stops that have an OsmAnd icon; starred and flagged shapes are yours to choose (square, octagon) | <wpt><extensions><xsi:gpx><background> | xsi | Os |
| POI colour | Include POI category colours (off) | <wpt><extensions><xsi:gpx><color> | xsi | Os OM Cr |
| Starred and flagged colour | Shown when you have starred or flagged stops | <wpt><extensions><xsi:gpx><color>, in place of the category colour on those stops (Garmin has no waypoint colour) | xsi | Os OM Cr |
| Direction and planned time in the name | Add direction to name (suffix), Add planned time to name (off) | <wpt><name> (Cafe L20m 15:15 - the name is shortened more to make room for the time) | standard | all |
| Distance markers | When you have added them (not in separate-file exports) | <wpt> with <type>km_marker</type> or mile_marker | standard | all |
| Compressed files | ||||
| Our own POI icons, and yours | Compress it (.gpz), then Send our icons with it (PNG and SVG) | <wpt><sym>PS_cafe</sym>, <xsi:gpx><anchor>, and PNG/SVG files inside the zip. Your own icons (see POIs) use the separate PSU_ namespace instead, such as PSU_cafe_3f9a1c: a slug (the category, or the file's name) plus six characters of the icon's id. Each carries the anchor you chose for it (hsbc unless set), and its PNG, and SVG when it has one, sits in the zip beside the route. Ours are centred (hscc). A stop that kept its own <extensions> on import is left as it was. | xsi | Lo GV |
Read by: Ga Garmin devices and Garmin Connect, Lo Locus Map, Cr Cruiser, Os OsmAnd, OM Organic Maps and CoMaps, GS gpx.studio, GV GPX Viewer, RW Ride with GPS. "all" means a standard element every GPX app shows. † = from our own testing or users' reports, not the app's documentation.
Namespaces
| Prefix | URI | Declared |
|---|---|---|
| (default) | http://www.topografix.com/GPX/1/1 | Always, on <gpx> |
xsi | http://www.w3.org/2001/XMLSchema-instance | Always, on <gpx>. The <xsi:gpx> block - a convention started by Cruiser - reuses it, so it needs no declaration of its own |
gpxx | http://www.garmin.com/xmlschemas/GpxExtensions/v3 | On <gpx>, only when the file uses it |
gpx_style | http://www.topografix.com/GPX/gpx_style/0/2 | On <gpx>, only when the file uses it |
An annotated example
A shortened export with most options turned on: one distance marker, one starred café, and a track with a turn, a roundabout and a change of surface.
<gpx version="1.1" creator="PitStopper.net"
xmlns="http://www.topografix.com/GPX/1/1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
xmlns:gpx_style="http://www.topografix.com/GPX/gpx_style/0/2"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 https://www.topografix.com/GPX/1/1/gpx.xsd">
<metadata>...</metadata>
<wpt lat="51.041" lon="3.99"> <!-- a distance marker -->
<time>2026-10-05T08:04:00Z</time> <!-- estimated times -->
<name>1 km</name><desc>1 km</desc><sym>Dot</sym><type>km_marker</type>
</wpt>
<wpt lat="51.0455" lon="3.9902"> <!-- a starred cafe -->
<time>2026-10-05T08:02:00Z</time>
<name>Cafe Centr L20m</name> <!-- short name + "on your left, 20 m" -->
<cmt>coffee. Closes early Sunday</cmt> <!-- type + your note -->
<desc>Full name: Cafe Centraal. Cafes. Hours: Mo-Sa 08:00-18:00</desc>
<src>OpenStreetMap</src>
<link href="https://www.openstreetmap.org/node/11">...</link>
<sym>Restaurant</sym> <!-- Garmin symbol -->
<type>FOOD</type> <!-- course-point type -->
<extensions>
<xsi:gpx>
<color>#FFFF00</color> <!-- starred colour (else the category colour) -->
<background>square</background> <!-- starred shape -->
<icon>amenity_cafe</icon> <!-- OsmAnd icon -->
</xsi:gpx>
</extensions>
</wpt>
<trk>
<name>My ride</name>
<extensions> <!-- line colour and width -->
<gpxx:TrackExtension><gpxx:DisplayColor>DarkBlue</gpxx:DisplayColor></gpxx:TrackExtension>
<gpx_style:line><gpx_style:color>1976D2</gpx_style:color><gpx_style:width>5</gpx_style:width></gpx_style:line>
<xsi:gpx><color>#1976D2</color><width>5</width></xsi:gpx>
</extensions>
<trkseg>
<trkpt lat="51.05" lon="3.99"><ele>3</ele>
<extensions><xsi:gpx><route_information>paved</route_information></xsi:gpx></extensions>
</trkpt>
<trkpt lat="51.0455" lon="3.99"><ele>4</ele>
<cmt>High Street</cmt><sym>left</sym> <!-- turn left onto High Street -->
</trkpt>
<trkpt lat="51.041" lon="3.99"><ele>5</ele>
<sym>roundabout_e3</sym> <!-- roundabout, third exit -->
<extensions><xsi:gpx><route_information>unpaved</route_information></xsi:gpx></extensions>
</trkpt>
</trkseg>
</trk>
</gpx>
From the apps themselves
Where the apps describe their own support:
- OsmAnd - OsmAnd GPX format: waypoint
<icon>,<background>(circle, square, octagon - the octagon is drawn as a circle) and<color> - Cruiser - turn-by-turn in the trackpoint
<sym>, with colour, width androute_information(paved, unpaved); waypoint colours; Garmin icon names; opening .gpz files - Locus Map - icons matching Garmin symbol names; turn-by-turn in the BRouter "Locus style" (BRouter profile guide,
turnInstructionMode) - Organic Maps and CoMaps - their GPX reader (Organic Maps, CoMaps) takes
<color>and Garmin'sDisplayColorfor tracks and waypoints, with a fixed track width - gpx.studio - its GPX reader handles
gpx_stylecolour and width - GPX Viewer - "Color from file" for tracks; symbol icons from a .gpz
- Garmin - the GpxExtensions v3 schema:
DisplayColoron tracks and routes (there is none for waypoints) - The colour order - a Locus and Cruiser user's report on writing Garmin, then
gpx_style, thenxsi:gpx
Good to know
- Colours come in as well as go out. When you load a GPX file, a track keeps the colour, width and transparency it was given, read from
gpx_stylefirst, thenxsi:gpx, then Garmin's colour name; a KML line style is read too. On export the same look is written in all three forms, so a route coloured in one app arrives coloured in the others. Garmin can only take the nearest of its 16 colours, with no width. Locus Map's own line settings insidegpx_style:line(such as a line pattern) are kept and written back, with Locus's copy of the colour and width brought in step with yours. - Transparency is set per route in Route Settings or the route manager: solid, 25%, 50% or 75% transparent, or fully transparent. Fully transparent means "hidden in other apps" - it is exported as Garmin's
Transparentand an opacity of 0 - while PitStopper still draws the route, dashed, so you can see it. - The track colour is written three ways because each app family reads a different one: Garmin's
gpxxfirst, thengpx_style, thenxsi:gpx- the order a Locus and Cruiser user reported some readers need (see the sources above). - Several routes in one file ("Combined", the default) give one
<trk>per route, each in its own colour. "Separate files" gives a zip of single-route GPX files. - Icons come in as well as go out. A .gpz from another app brings the PNG for each
<sym>its stops use (pictures no stop uses are left out); PitStopper offers to draw the stops with them, and writes the same symbol name and original picture back when a stop wearing one is exported in a .gpz with icons. The file's own anchor (hsccin Cruiser's reference file) is kept when its stops agree on one. - A stop you imported keeps its own
<extensions>from the original file, in place of the icon, colour and shape PitStopper would add. From another app's file it also keeps its own<desc>,<cmt>and<link>entries. - Export POIs only writes no colours, but still adds the OsmAnd icon and marker shape.
- Times are never invented: estimated times need a start time, and a track that came with recorded times keeps them whatever the option says.
- FIT and KML carry the same information their own way: FIT as course points, KML as styles and folders. See Export FIT and Export KML.