tl;dr: Creating a backpacking track in Garmin connect with useful waypoint references is obnoxious. The fix is to create a proper TCX file with defined CoursePoint elements. The elements show up on your watch as named alerts. I built a free browser tool that converts your GPX, snaps waypoints to exact track distances, and handles resupply splits for long routes. Can be downloaded to your phone as a webapp and work offline!No account. Use it here.
The problem: your waypoints disappear when you import a GPX track to Garmin Connect
Here’s the workflow most people try. You build a route in CalTopi or Gaia GPS, drop pins for water sources, resupply towns, and bail-out points. You export it as GPX. You import it into Garmin Connect. The track shows up but your waypoints don’t.
Of course, Garmin warns that “waypoints in third-party course files may not be preserved during import” — but that makes it very obnoxious and tedious to use your watch as an ideal thru-hiking companion for navigation. The forums have years of frustrated posts about this. Every thru-hiker who has tried to load a long route onto a Fenix has this problem.
My workflow has been to split up the GPX into resupply points — so one track for each resupply stretch, and then to manually add key waypoints along the track as needed, using Garmin Connect’s web interface. This process has been tedious. For my recent hike of the Hayduke, I ended up manually re-adding dozens of course points after import, clicking them one by one in Garmin Connect’s web UI. That was an unfortunate use of of pre-trail time.
Why it happens: GPX waypoints vs. TCX CoursePoints
GPX is a general-purpose format. A GPX file has tracks (the route line) and waypoints (named locations). Garmin Connect can import the track fine. The waypoints are a different matter because they’re treated as a separate entity, and Garmin Connect ignores them or strips them out during course creation.
TCX (Training Center XML) is Garmin’s own format. Inside a TCX file, named locations are called CoursePoints rather than waypoints. They’re embedded in the course itself with a type (Water, Food, Summit, etc.), exact coordinates, and a distance from the start. Because they’re part of the course structure rather than a separate waypoints layer, Garmin Connect imports them reliably and your watch can alert you as you approach them.
The second issue is distance. A Garmin course needs waypoints snapped to the track at the correct cumulative distance. If a water source is 200 meters off the trail in your GPX, it needs to be positioned at the nearest point on the track with the right “X miles from start” value. Garmin uses that distance value for the on-device alert. If it’s wrong, the alert fires at the wrong time.
The tool
The Trail GPX Converter I made is pretty simple. It takes a GPX file and outputs a proper TCX course. Here’s what it does:
- Snaps waypoints to the track. Each waypoint gets projected to the nearest point on your route within a configurable corridor (default 100m). The converter calculates the cumulative distance from the start to plae it at (this isn’t perfect, so may still need some modification after import, but probably close enough to tell you to bust out your phone to check the waypoint if needed).
- Detects waypoint types automatically. Water sources, food resupply, summits, and first aid are detected from the waypoint name and description, with a manual override in the UI if it guesses wrong.
- Splits long routes into legs. You can add resupply splits by mileage or by clicking on the map. Each leg exports as a separate TCX that you can load into Garmin Connect. Garmin watches and Garmin Connect are known to crash and have issues with large files with too many course points.
- Also exports GPX. If you want the result for Caltopo, AllTrails, or another app that handles GPX properly, it exports that too.
- Nothing leaves your device. All processing happens in the browser. You won’t need an account or any sort of app download from the app store!
How to use it
Step 1: Export your GPX from Gaia (or CalTopo, AllTrails, etc.)
Make sure your water sources, towns, and other points of interest are saved as waypoints on the same map, they’ll export with the track.

Step 2: Load the GPX into the converter
Go to trailpeaches.com/tools/gpx-converter/ and drop your GPX file onto the upload zone. The tool reads the file locally and shows you a summary: total distance, track points, number of waypoints, and elevation gain.

Step 3: Configure and add resupply splits (optional)
Set a course name, choose imperial or metric, and set your trail corridor. The corridor controls how far off the track a waypoint can be and still snap — 100m is usually right for a well-mapped trail, 250-500m for routes where waypoints are placed near the trail rather than on it.
For a route over 80 miles, the tool will flag it and suggest split points. You can add splits by mileage (type in a distance) or by clicking on the route map. Each split becomes its own Garmin course.

Step 4: Review course points and download TCX
After clicking “Generate Course Points,” the tool shows a map with the route and all snapped waypoints color-coded by type. Below that is a table where you can toggle points on or off, change the type, and see the exact distance from start.

Download the TCX. If you added resupply splits, you’ll get one TCX per leg, plus a “Download All” button that fires them in sequence.
Step 5: Import to Garmin Connect
In Garmin Connect (desktop browser), go to Training & Planning โ Courses, click the import icon, and upload the TCX file. The course imports with named CoursePoints intact. Send it to your watch.

Garmin watch limits to know
Not all Garmin watches handle large courses the same way. A few numbers worth knowing before you load a 300-mile route as a single file:
- Older Garmin watches (Forerunner 35, Edge 520, Fenix 3 era): 50 course point cap. More than 50 waypoints and some get dropped silently.
- Fenix 5 and newer, Epix, Forerunner 945+: 200 course point cap. Still a real ceiling on a waypoint-dense thru-hike.
- Garmin Connect import: Large files (a full CDT or PCT in one shot) can time out or silently fail. Splitting into 100–150 mile legs sidesteps this reliably. I personally don’t like going much over 120 miles. I find that even at under 120 miles my Fenix 7x sometimes crashes when dealing with larger courses/tracks.
The resupply split feature in the tool is specifically for the last two cases. Split the CDT at Chama, Pie Town, Silver City, etc. and you’ve got reasonable resupply legs instead of one giant import that may or may not work. This also conveniently is better at telling you when you’re approaching a resupply!
What watch should you be running this on?
For thru-hiking, I’ve used the Fenix 7x for years. The navigation is the main reason I bought the watch in the first place. I wanted to spend less time staring at my phone and more time just hiking. Off-course alerts have been an expected bonus! The Garmin Fenix 8 is the current flagship. Although I think picking up a refurbished Fenix 7x (or even a Fenix 6) is a pretty compelling option for getting a reasonably priced, killer navigation tool. I’ve found Garmin to be exceptionally good at honoring warranty services with the Fenix series of watches! You might even explore Swappa for some really cheap options!
I’ve found that using my Smart Watch has significantly reduced the time I spend staring at my phone for navigation. With the 400 mAh battery on the Fenix 7x, I can reliably get 4+ days of all-day navigation with it. That means I can get by with very, very small battery banks (5000 mAh for 7+ day on trail), significantly reducing my weight. I’ve written about phone setup and battery strategy here.
Use it
The tool is free, runs entirely in your browser, and works offline after the first load (installable PWA on iOS and Android). No account, no data uploaded anywhere.
Open the Trail GPX Converter โ
I’m actively using this for my own planning and it will likely get better as I use it more (although, as of 2026, it may be some years before my next long hike)