GPX Waypoints vs FIT Course Points

A road cyclist climbing a mountain pass above the coast

Photo by Humphrey M on Unsplash

If you've ever exported the same route as both a GPX and a FIT file, you may have noticed that cafes, water taps and other points of interest behave differently. Sometimes a stop is a silent pin on the map; other times your bike computer announces it out loud as you approach. Although both formats can hold named locations, they're built around two very different navigation models.

This guide explains the difference in plain terms, and why it changes what your device does on a real ride.

The short version

  • GPX stores waypoints - independent geographic locations.
  • FIT stores course points - navigation events tied to your progress along a course.

That distinction is why modern bike computers often give richer, better-timed alerts from a FIT file.

Why POIs matter for long rides and walks

On a short loop you might not care. On a 100 km sportive or a multi-day hike, points of interest stop being map decoration and become functional navigation cues:

  • Food stops on endurance rides
  • Water sources on hot summer routes
  • Bike shops for emergencies
  • Summits and climbs for pacing
  • Viewpoints and rest spots for planned pauses

How each of these is stored decides whether your device ignores it, shows it silently on a map, or actively announces it at the right moment.

A brief history

Why GPX was created. GPX (GPS Exchange Format) was introduced by TopoGrafix in 2002 as a simple, open standard for exchanging GPS data: waypoints, tracks and routes. It's human-readable XML, so you can open it in a text editor and see exactly what's inside. That simplicity made it the de facto way to share routes across Strava, Komoot, RideWithGPS and almost everything else.

Why Garmin developed FIT. FIT (Flexible and Interoperable Data Transfer) came later, designed by Garmin as a compact binary format for fitness, sensor and training data. For navigation it introduced the idea of a course containing course points - events tied to a specific position along the route. Where GPX says "there is a location here," FIT can say "you will reach something here during the activity."

Why Garmin prefers FIT

A question many cyclists genuinely wonder: if GPX works everywhere, why does Garmin keep nudging you towards FIT? The short answer is that GPX was never designed for a modern cycling computer. GPX comes from an era when GPS receivers mostly displayed breadcrumb trails and a handful of waypoints.

Today's bike computers do far more. They know about:

  • upcoming climbs (and pace them with features like ClimbPro)
  • nutrition and hydration reminders
  • turn-by-turn directions
  • aid stations and feed zones
  • laps and segments
  • structured workouts
  • sensors - heart rate, power, cadence and more

FIT can describe all of these in a single file; GPX generally cannot. That's the historical reason Garmin standardised on it.

More than a location: sensors and recordings

It helps to see what each format actually holds. A GPX file contains:

  • locations
  • elevation
  • timestamps

A FIT file can also contain:

  • cadence
  • heart rate
  • power
  • temperature
  • smart-trainer data
  • electronic gear (Di2 / AXS) shifts
  • battery level
  • left/right pedal balance

None of this matters when you're downloading a route - a course only needs positions and course points. But it's why almost every cycling computer records your rides as FIT in the first place: the format was built to capture everything a modern bike and sensor setup produce. If you already know FIT from your activity history, a FIT course is simply that same format wearing its navigation hat.

Elevation and file size

Two smaller but practical points cyclists tend to appreciate:

  • Elevation. GPX track points often include elevation, but FIT generally stores elevation more efficiently and consistently for navigation devices - handy when your computer is drawing the climb profile ahead of you.
  • File size. FIT is a compact binary format, typically several times smaller than the equivalent GPX because it encodes data rather than spelling it out in XML text. That's one reason Garmin devices load FIT courses quickly.

How GPX stores waypoints

GPX is built on XML and is intentionally simple. A waypoint is a single, standalone location:

<wpt lat="51.5001" lon="-0.1234">
  <name>Village Cafe</name>
  <sym>Cafe</sym>
  <desc>Great coffee and cake</desc>
</wpt>

The three location types you'll meet in GPX:

  • <wpt> (waypoint) - a standalone location, not tied to any route or track. It can exist anywhere.
  • <rtept> (route point) - part of a planned route, an ordered sequence used for turn-by-turn in some systems.
  • <trkpt> (track point) - part of a track, representing continuous movement. Usually very dense - hundreds or thousands of points.

A waypoint can carry a name, a symbol, elevation, a description and a timestamp. But crucially, none of that defines when a device should notify you. The waypoint simply exists; your device decides, based on its own proximity rules, whether it's close enough to show or announce.

How FIT stores course points

FIT uses a different model. Instead of independent markers, a course point lives inside a course alongside the track:

Course
 ├── Track Records
 ├── Track Records
 ├── Course Point (Food)
 ├── Track Records
 ├── Course Point (Water)
 ├── Track Records
 └── Course Point (Summit)

A course point is:

  • tied to a specific distance/position along the course,
  • given a type (food, water, summit, left turn, danger, and so on),
  • intended to trigger an alert or guidance at the right time.

Because the device knows the course context - not just where the point is but when you'll reach it - it can announce "Food ahead" or "Summit ahead" at the correct moment, and handle a location you pass more than once.

Anchored by distance, not just position. A course point isn't only a lat/lon - it also carries a distance along the course. That's how the device knows when you'll reach it, and why a correctly built file keeps every point pinned to the right spot on the route. (If that distance is wrong or left at zero, course points can silently vanish the moment you start navigating - a classic FIT export bug worth getting right.)

A fixed vocabulary of course-point types

Here's a difference that drives a lot of the rest: FIT defines a closed list of around 50 course-point types (53 at the time of writing). A GPX <sym> is just free-form text - "Cafe", "Drinking Water", even "my favourite bench" - with no standard vocabulary, so different apps interpret or ignore symbols differently. FIT instead gives every point exactly one type from a fixed set:

  • Services & amenities: water, food, first aid, aid station, rest area, service, energy gel, sports drink, shelter, store, toilet, shower, gear, campsite
  • Terrain & landmarks: summit, valley, overlook, danger, sprint
  • Climb categories: 4th → 1st category, and hors catégorie
  • Turn-by-turn: left, right, straight, slight/sharp left & right, U-turn, left/right/middle fork, sharp curve
  • Hazards & features: steep incline, tunnel, bridge, obstacle, crossing
  • Course structure: segment start/end, general distance, mile marker, checkpoint, meeting spot, transition

Two things stand out. First, turns and climbs are course points too - in FIT, navigation cues live in the same list as cafes and water taps, whereas in GPX directions come from the track, not waypoints. Second, the type isn't cosmetic: Garmin's Up Ahead surfaces upcoming services from their course-point types (the FIT profile even tags one type as "used with Up Ahead"), and the climb categories feed features like ClimbPro. Pick the wrong type and a water stop may not appear where you'd expect.

Mapping real-world POIs

Because GPX has no enforced categories, exporting to FIT means mapping each point to the nearest available type - and falling back to generic when nothing fits:

POI Typical GPX symbol FIT course-point type
Cafe / restaurant Restaurant, Cafe food
Water tap / fountain Drinking Water water
Shop / supermarket Shopping Cart store
Hotel / hostel Lodging shelter
Campsite Campground campsite
Pharmacy / hospital Pharmacy firstAid
Summit / peak Summit summit
Viewpoint Scenic Area overlook
Toilets Restroom toilet
Fuel / ATM / parking (various) generic

How PitStopper chooses FIT types

PitStopper does exactly this, and the mapping is deliberately opinionated. Rather than trying to preserve OpenStreetMap's hundreds of tags, it collapses dozens of categories onto a smaller set of FIT course-point types that Garmin actually understands:

  • a village café, a bakery and a pub serving food all become a Food course point;
  • drinking fountains, public taps and springs all become Water;
  • hospitals, clinics and pharmacies all become First Aid.

The goal isn't fidelity to OpenStreetMap's taxonomy - it's to maximise useful alerts on your GPS. A handful of well-understood types ("Food ahead", "Water ahead") is worth far more on the road than fifty obscure ones your device would silently ignore. In practice that's roughly 75+ PitStopper categories distilled to about 15 FIT types, with generic as the catch-all for everything that has no good match.

The big difference: a place vs an event

The simplest way to hold the distinction in your head:

  • A GPX waypoint says "a place exists here."
  • A FIT course point says "something happens here during your journey."

Almost every behavioural difference between devices follows from that one idea.

Why it matters on a real ride

Imagine a 100 km sportive whose route passes two cafes, three water taps, a bike shop, a steep climb and a viewpoint.

As a GPX export, those become independent map markers. Your device may display them, and some devices will alert you when you come within a chosen distance - but it treats them all equally and doesn't understand their role in the ride.

As a FIT export, those become structured course points. Your computer can give contextual, timed prompts - "Water ahead," "Climb starting," "Summit reached" - instead of a generic proximity ping.

Loops, figure-8s and out-and-back routes

This is where the limitation of plain waypoints becomes obvious. Picture a route that passes the same village twice:

          Village
            ●
           / \
 Start ---/   \--- Finish
          \   /
           \_/

A GPX waypoint at "Village" is just a coordinate. When you pass it twice, the device may alert twice, only once, or at inconsistent distances - it has no concept of which pass you're on.

A FIT course point is bound to a specific position in the course, so the alert fires at the intended pass. The ambiguity disappears.

Here's an example almost every cyclist recognises. Imagine a café right beside the start/finish of a sportive. With GPX, your device only knows there's a café at those coordinates - it can't tell whether you're rolling out at the start or rolling in at the finish, so it may ping you the moment you set off. With FIT, that café is tied to a specific point along the course, so the alert appears exactly once, at the intended moment near the end - not while you're still clipping in.

How different devices use them

Behaviour varies by brand, and even by model and firmware:

Device / Platform GPX (waypoints) FIT (course points)
Garmin Edge Shows waypoints on the map; basic proximity alerts Full course-point support with rich alerts (food, water, climbs, turns)
Garmin watches (Fenix etc.) Displays waypoints; alerts depend on activity setup Supported, but often more conservative than Edge units
Wahoo Good waypoint display and proximity alerts Strong course-point support in navigation
Hammerhead POIs shown on the map Course points integrated into the navigation flow
Coros Imported locations shown on the map Growing support for course points and alerts

Firmware updates change these capabilities often - always check your device's current manual or release notes.

Why your Garmin sometimes ignores GPX waypoints

This is one of the most-searched GPX questions, and the answer is rarely a "bug." A GPX waypoint is just a labelled coordinate, and each device decides for itself whether to do anything with it. Depending on the model and settings, a device may:

  • ignore the symbol entirely, or fall back to a generic pin;
  • ignore an unknown icon name it doesn't recognise;
  • only show waypoints above a certain zoom level, so they vanish when you zoom out;
  • only alert if proximity alarms are switched on - off by default on many units;
  • drop waypoints that sit too far from the route (Garmin Connect discards ones more than ~40 m off the line); or
  • ignore embedded route/track waypoints altogether, showing only saved favourites.

FIT course points sidestep most of this because they're explicitly designed for navigation - the device is meant to act on them, at a known distance, with a known type. If your POIs keep disappearing on a Garmin, that mismatch is usually why, and exporting a FIT course (or snapping waypoints onto the track) is the reliable fix.

Two problems specific to Garmin Connect

Two of these are worth singling out, because we traced each to a precise cause and wrote up the investigation:

  1. Course points all import at 0 km on routes over 200 miles. Past a hard, undocumented limit of 200 miles (321.9 km), Garmin Connect places every course point at "0 km from the start" - they sit in the right spot on the map, but carry no distance, so the device can't count down to them as you ride. We chased this one down with a pile of test files: The Case of the Zero-Kilometre Course Points.

  2. Waypoints more than ~40 m off the track are silently discarded. Place a cafe or water stop just off the road and Garmin Connect can quietly drop it on import, with no warning. A PitStopper user helped us pin it down: Why Garmin Connect Deletes Your Waypoints.

Both are quirks of importing GPX waypoints specifically - FIT course points are distance-ordered and built for navigation, so neither limit applies. Where your device supports it, we suggest exporting a FIT file rather than GPX. PitStopper also warns you before a GPX export that's likely to hit either problem, and can snap waypoints onto the track to avoid the 40 m one.

What happens when you convert between formats

Most inconsistencies people hit come from conversion, and conversion is always a little lossy because the underlying models differ. A picture makes it obvious - in GPX a waypoint floats independently of the track, while in FIT every course point is bound into the course:

GPX                         FIT

Waypoint                    Course
   :                          |
   :  (independent,           +-- Track
   :   no link to             |
   :   the track)             +-- Course Point #1
   v                          |
Track                         +-- Course Point #2
                              |
                              +-- Course Point #3

Converting GPX → FIT has to invent the missing link - guessing each waypoint's type and its distance along the route. Going FIT → GPX throws that link away again. Neither direction is perfect:

GPX to FIT. Waypoints are turned into course points; types are inferred (cafe → food), and ordering is derived from proximity to the route.

  • Usually preserved: location, name (sometimes truncated), basic category if it can be inferred.
  • Often lost or changed: exact intent/meaning, multiple visits to the same location, custom metadata like descriptions and links.

FIT to GPX. Course points become simple waypoints.

  • Usually preserved: location, name, an approximate category if it maps cleanly.
  • Often lost: alert timing, event type (food/water/summit), and pass order on loops.

A reassuring caveat. If you upload a GPX route to Garmin Connect and send it to your device, Connect quietly converts those waypoints into FIT-style course points along the course on the way. So in everyday use, a GPX route often ends up behaving much like a FIT one on the bike computer - the conversion just happens on Garmin's servers instead of in your exporter. Exporting FIT directly mainly buys you control over the types and placement rather than a completely different result.

A few practical limits

A couple of FIT realities that don't apply to GPX:

  • Names are short. Course-point names are kept brief and are often truncated, so "The Old Bakehouse Tearoom & Bike Wash" may arrive clipped. GPX <name> has no such limit.
  • There can be a cap on how many. Some devices limit the number of course points per course (historically around 50, more on newer units); beyond that, extra points may be dropped. GPX has no inherent limit, though devices still apply their own display rules.

What about hiking? FIT vs GPX on the trail

So far this has been fairly cycling-focused, but walkers and hikers face the same choice with a different balance.

On a capable GPS watch or handheld, FIT still brings the structured-alert advantages - timely prompts for shelters, water sources, campsites, mountain passes and summits, exactly the things that matter on a long day out.

But GPX has real advantages for hikers that often win:

  • it's universally supported by the apps walkers actually use - Organic Maps, OsmAnd, Gaia GPS, Komoot and the rest;
  • it's easy to edit by hand or in any planner;
  • it's easy to share with companions on any device.

That's why many hikers still reach for GPX first: trail navigation leans more on a good offline map than on course-point alerts, and broad compatibility matters more than squeezing every feature from one brand of device.

Which format should you export?

There's no universal "best" - it depends on how you'll use the route.

Goal / use case Best choice
Maximum compatibility across apps and devices GPX
Sharing a route to plan or review on a map GPX
Garmin Edge navigation with turn and POI alerts FIT
Structured ride alerts (food, water, climbs) FIT
Hiking with a simple device or offline maps GPX
Training / workout integration FIT

In practice, many route planners - PitStopper included - export both, so you can pick whichever suits your device. PitStopper finds water, food, shops and other stops along your route and lets you download a GPX (with waypoints) or a Garmin FIT course (with properly placed, distance-ordered course points) for your bike computer.

Behind the scenes: how PitStopper builds a FIT course

A FIT course isn't just your GPX with a different extension - it's rebuilt from the ground up. Here's the pipeline each export runs through:

GPX route
   ↓
Search OpenStreetMap        ← cafés, water, shops, summits… along the line
   ↓
Filter relevant POIs        ← only what's near the route, deduplicated
   ↓
Project each POI onto the route   ← find the nearest point on the track
   ↓
Calculate cumulative distance     ← how far along the course that point sits
   ↓
Map 75+ categories → FIT types    ← café → Food, spring → Water, …
   ↓
Generate FIT course points        ← typed, ordered by distance, timestamped
   ↓
Export Garmin-ready FIT

The two middle steps are the ones most converters get wrong. Projecting each POI onto the nearest point of the route, then computing its cumulative distance along the course, is what lets the device fire each alert at the right moment - and what stops points drifting or vanishing when navigation starts.

The hard part: matching a POI to the route

That "project each POI onto the route" step sounds trivial, but it's a surprisingly awkward geometry problem that almost nobody writes about. A café is rarely on the road - it sits a few metres off it:

Road   ●───────●───────●───────●
                   │
                   │  perpendicular
                   ▼
                 café *

To turn that café into a course-point distance, you first have to decide what "nearest" even means:

  • Nearest track point? Simple, but crude - it snaps to whichever recorded GPS dot happens to be closest, which can be metres from the true closest spot on the road.
  • Nearest segment? Better - measure the perpendicular distance to each line between consecutive track points, not just to the dots.
  • Nearest projected distance along that segment? Best - work out exactly where on that line the café's perpendicular lands, and use that point's distance along the route.

And it gets harder. What if the road loops back near the café? A naive "closest coordinate" match can attach the café to the wrong pass - putting the alert kilometres from where you'll actually ride past it.

PitStopper handles this by projecting each POI onto every route segment, choosing the segment whose projected point is genuinely closest, and then using that projection's cumulative distance along the route as the course-point distance. At the scale of a real GPS track - points only tens of metres apart - a flat, local projection is accurate to within about a metre, so the approach holds up even on twisty, looping routes. It's the same "interception" geometry that serious FIT converters rely on, and it's what keeps every alert pinned to the right spot on the course.

Advanced: why course-point distance matters

Every FIT course point stores not only its coordinates but also its distance along the course. If an exporter leaves that value wrong - often left at zero - many Garmin devices silently discard the point the moment navigation begins. It's one of the most common bugs in home-grown FIT exporters, and it's exactly why PitStopper projects every POI onto the track and orders them by distance rather than just copying across lat/lon pairs.

Frequently asked questions

Why didn't my cafe appear? In GPX, your device may filter POIs by type, hide them below a zoom threshold, or ignore an unknown symbol. In FIT, the point may not have mapped to a course-point type the device recognises.

Why did my GPS alert twice? Usually a GPX waypoint near a looped section - the device fires a proximity alert each time you pass, with no route context to tell the passes apart. FIT avoids this by binding the point to a course position.

Why are my water taps just map pins? Because GPX doesn't define meaning - a water tap is only a coordinate and an optional label, and the device decides whether it matters. FIT explicitly tags it as a "water" event.

Can every GPX waypoint become a FIT course point? Not perfectly. GPX has no enforced categories and doesn't encode intent, while FIT needs structured event types - so the mapping is always a best guess.

Should I use GPX or FIT for cycling? On a modern Garmin Edge, Wahoo or similar, FIT gives the richer experience - typed, distance-anchored alerts for food, water and climbs, plus turn guidance. Reach for GPX when you need maximum compatibility or want to share the route widely.

What's the best route format for a Garmin Edge? For navigation with POI and turn alerts, FIT. A GPX still works - Garmin Connect converts it to a course on upload - but exporting FIT directly gives you control over the course-point types and their placement.

Is GPX or FIT better for hiking? Often GPX. Walking apps such as Organic Maps, OsmAnd and Gaia GPS all read GPX, it's easy to edit and share, and trail navigation leans more on a good offline map than on course-point alerts. FIT still helps on a capable GPS watch for shelter, water and summit prompts.

Does Garmin's Up Ahead work with GPX? Up Ahead surfaces upcoming services from FIT course-point types. A plain GPX waypoint has no such type, so for reliable Up Ahead entries you generally want a FIT course (or let Garmin Connect convert your GPX, which is hit-and-miss).

In short

Here's the way to remember it. Think of GPX as a digital paper map: it tells your GPS where things are. FIT is more like a sat-nav itinerary: it knows what happens next.

If you're sharing a route with the widest possible audience, GPX remains the safest choice. But if you're navigating on a modern Garmin Edge, Wahoo or similar bike computer, FIT unlocks the richer experience - timed alerts, structured course points and navigation that feels like it understands your ride rather than simply displaying it.

That's why PitStopper lets you export both. Use GPX when compatibility matters; choose FIT when you want your device to guide you as intelligently as possible. Plan smart, export wisely, and enjoy better navigation on every adventure.


References