About viewmygpx
viewmygpx is a free, browser-based GPX viewer, converter, and editor built by a small group of off-road hikers and cyclists. The tool exists because the GPX files we use every weekend — from bike computers, smartwatches, route planners, trail blogs, and friends — kept hitting the same friction with every other tool we tried: signups, uploads to someone else's server, broken extension parsing, ad-laden previews. So we built our own.
Who we are
We are a few people who spend most weekends on trails. Some of us hike off-road — long-distance trails, day hikes in national parks, scrambles in alpine terrain. Some of us ride bikes — gravel, mountain, gravel-bikepacking, the occasional road.
The common thread is GPX. It is the format that ties our weekends together: planned routes downloaded from Komoot or AllTrails, recordings uploaded from a Garmin or Wahoo, blog-post downloads, a friend's exported file from a club ride. A tool that just shows us what is in a GPX file — and that does not make us sign up, upload, or wait — is something we use multiple times a week.
None existed in a form we wanted to use, so we wrote one.
The kinds of routes we work with
The tool is general — it handles any valid GPX 1.0 or 1.1 file. But the use cases that drove the design are specific:
- Day hikes — short loops, peak bagging, off-trail scrambles. Files come from AllTrails, Outdooractive, OS Maps, Wikiloc, or local park websites.
- Long-distance hiking — multi-day thru-hikes, section hikes, alpine stages. Files come from trail associations (PCT, AT, GR networks, European E-paths), guidebook publishers like Cicerone Press, or planning platforms.
- Gravel and mountain biking — singletrack, gravel routes, bikepacking. Files come from Komoot, Ride with GPS, Trailforks, Strava, Bikepacking.com, or the bike computer's own export.
- Road cycling — club rides, sportives, training routes. Files come from Strava, RWGPS, Garmin Connect, or a coach's planned ride.
- Multi-day bikepacking — segmented routes assembled from multiple GPX files. Often need to merge, trim, or reverse before pushing to a head unit.
A given file is often planned in one tool, recorded in another, edited in a third, and finally previewed before committing to the ride. viewmygpx is the preview-and-edit step in that chain.
Where GPX files come from in our work
The GPX-producing ecosystem is large. The platforms we hit most often:
- Route planners: Komoot, Ride with GPS, Strava route builder, BRouter, onthegomap.com.
- Trail and route databases: AllTrails, Trailforks, Wikiloc, Outdooractive, Bikepacking.com.
- Recording devices: Garmin Edge / Forerunner / fenix (export via Garmin Connect), Wahoo ELEMNT, Suunto, Coros, Polar.
- Recording apps: Strava, Komoot, Gaia GPS, AllTrails (recording mode), MapMyRun, WorkOutDoors.
- Mapping platforms (export): Google My Maps, OS Maps (UK), Apple Health (workout export), Maps.me.
- Trail associations and clubs: long-distance trail networks publish official GPX downloads; many local cycling clubs publish ride routes on their websites.
Every one of these ecosystems writes GPX conforming to the open schema published by TopoGrafix — which is why a single viewer can work with all of them.
The pain points that made us build this
Looking at the existing browser-based GPX tools when we started, every one of them had at least one of these issues:
- Account required. Some tools would not show the file until we logged in. We just want to see the route.
- Upload to a server. A GPX file contains the exact GPS coordinates of every step or pedal stroke. Sending it to a third party is at best unnecessary, and at worst a privacy leak — if the file traces home, the file is the home address.
- Broken extension parsing. Garmin's TrackPointExtension carries heart rate, cadence, and temperature. Many viewers either drop these silently or refuse to parse the file.
- Mobile previews tied to one platform. Strava's mobile preview only shows Strava routes; AllTrails' only shows AllTrails routes. We needed something platform-agnostic.
- Ad-laden experiences. Some viewers buried the actual route under interstitials and modal popups.
- No conversion. Wanting KML for Google Earth, KMZ for sharing, or CSV for analysis usually meant a separate tool.
- No editing. Trimming a recorded warm-up, merging two halves of a multi-day ride, fixing elevation jitter — these usually required a desktop app or paid SaaS.
We wanted: drop a file, see the route, convert if needed, edit if needed, leave. That is it.
How the tool actually works
Everything happens in your browser. There is no backend at all. Specifically, when you drop a file:
- The browser exposes the file via the W3C File API — the same mechanism behind every native file picker. A FileReader pulls the bytes into a JavaScript string.
- The XML is parsed locally using the browser's native DOMParser interface plus a custom GPX-specific parser that interprets <wpt>, <trk>, <trkseg>, <trkpt>, and the Garmin TrackPointExtension namespace.
- Stats are computed from the raw data. Distance is the sum of haversine-formula distances between consecutive trackpoints on the WGS-84 datum. Elevation gain and loss are sums of positive and negative deltas where elevation is present. Duration is the difference between the first and last ISO 8601 timestamp.
- The route renders on a map via Leaflet on top of Stadia Maps tiles, with OpenStreetMap as a fallback and Esri World Imagery for a satellite view.
- The elevation profile is hand-drawn SVG — a single <path /> with x mapped to cumulative distance and y mapped to elevation. No charting library required.
- Conversion runs in the browser. GPX↔KML uses our own serializer/parser; GPX↔KMZ wraps a KML in fflate (a small zip library); GPX↔CSV writes one row per trackpoint; GPX↔GeoJSON serializes to RFC 7946–conformant features.
- Editing operates in memory. Trim, reverse, merge, split, smooth, and metadata-edit each operate on the parsed in-memory representation, then re-serialize back to GPX 1.1 on download.
- When you close the tab, everything is gone. No copies on a server, no cookies that name you, no logs of your file.
The page itself is statically generated, served from a CDN, and is about 100 KB of JavaScript on first load — under the budget where a page feels instant on a 4G connection.
How we use viewmygpx ourselves
Some of the workflows we hit week to week:
- Pre-ride preview. Download a published gravel route or a hiking GPX. Drop it in to see the elevation profile before committing — sometimes a friendly-looking route is hiding a steep, washboard climb.
- Post-ride conversion. Export a recording from a Garmin or Wahoo. Convert to KML for someone who wants Google Earth, CSV for a spreadsheet of seasonal stats.
- Multi-source planning. Build the road segment in Strava, the gravel segment in Komoot, the singletrack segment in Trailforks. Merge the three GPX files in our editor; reverse if we want the loop the other direction; smooth elevation noise from the GPS-only sections.
- Edit before pushing. Cut the warm-up off a recorded ride before saving it as a route to ride again. Trim a multi-day GPX where pause/resume timestamps run together. Split a thru-hike GPX at the resupply town.
- Share with friends. Drop a file, copy the share URL, send. The recipient sees the same route in their browser, no account, no signup. Share URLs encode the file content in the URL fragment, which never leaves the recipient's browser either.
What we built
The pillar pages document each part of the tool:
- The GPX viewer is the homepage — drop a file to see the route on a map with the elevation profile and stats.
- What is a GPX file? covers the format itself: tracks, routes, waypoints, history, technical foundations, and common extensions.
- GPX file format is the technical reference — XML structure, required and optional elements, validation.
- How to open a GPX file covers every destination platform.
- The GPX editor handles trim, reverse, merge, split, smooth-elevation, and metadata edits.
- Sample GPX files — a dozen ready-to-use, public-domain test files covering the common variations.
How we work
Every claim on viewmygpx is sourced. Format claims link to the canonical primary source — TopoGrafix for GPX, OGC for KML, IETF for GeoJSON, W3C for XML, ISO for time formats, IANA for media types, EPSG for coordinate systems, and the relevant vendor schemas (Garmin's TrackPointExtension and GpxExtensions). Platform claims link to the platform's own documentation.
Drafts are reviewed before publishing. The reviewer's job is to catch factual errors, broken links, and unclear writing — and to actually run any "how to" steps on a real account before signing off. The full editorial process is documented on /editorial-policy/, and the verification approach is on /methodology/.
We use AI tools as research aids and drafting starting points. Every page is reviewed by a human before publish; unedited AI output never ships.
What's free, and how the site runs
The tool is free. Always will be. We pay for hosting, domain registration, and map tile credits out of pocket. The long-term plan is to support the site through display advertising once the content base is large enough — that is why placeholder ad slots exist in the layout. Affiliate links to commercial products will be clearly disclosed if and when we add them; we have none today.
Privacy commitment
GPX files never leave your browser. We do not upload, log, or store the files you drop. The viewer, editor, and converters all run client-side; the only network requests are for the page itself, the map tiles, and Vercel's anonymous analytics. The privacy policy documents the few things we do collect and how we handle them.
Get in touch
For corrections, suggestions, partnerships, or press, write to hello@viewmygpx.com. The full set of inboxes is on the contact page.