# GPX & FIT Viewer

> Open a GPX or FIT file in your browser: track, elevation, heart rate and power charts, distance and climb. Convert FIT to GPX or CSV. Nothing is uploaded.

- URL: https://bytescope.dev/en/gpx-viewer/
- Locale: en · Also: [ja](https://bytescope.dev/ja/gpx-viewer.md) · [zh-Hant](https://bytescope.dev/zh-Hant/gpx-viewer.md)
- Runs: Your GPX and FIT files are parsed here, in a worker on your own machine — no upload, no account, and no map tile request that could reveal where the route is.
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

A sports watch or bike computer records your ride as a `.fit` file; most route sites and apps trade in `.gpx`. Drop either one here and it is parsed in the page: a summary of distance, elapsed and moving time, climb and descent, average and maximum speed or pace, heart rate, power and the device that recorded it, followed by the track drawn to scale with a scale bar and north arrow, and charts of elevation, speed, heart rate, cadence, power and temperature wherever the file carries them. Several files can be opened at once and switched from the list on the left.

Nothing leaves your browser. A GPS track is a diary of exactly where you were and when, which is not something to hand to a server just to look at it — parsing runs in a Web Worker on your own machine, there is no upload endpoint, and closing the tab leaves nothing behind. That is also why the track is drawn on a blank background rather than a map: any tile service would receive the area your route covers just to draw the roads underneath it.

### Convert FIT to GPX or CSV

FIT to GPX writes a GPX 1.1 track with heart rate, cadence and temperature in the Garmin `TrackPointExtension` that Strava, Komoot, Garmin Connect and most route tools read. GPX has no place for laps, device events, developer fields, device-measured speed or device distance, so those are dropped and the page lists exactly what was lost. Power has no standard GPX element; it can be written as a non-standard `<power>` child if you tick the option, which is off by default because it makes the file fail schema validation. Both FIT and GPX also export to CSV — one row per record point, units in the column names (`ele_m`, `speed_mps`, `hr_bpm`) — with a link to open it straight in the CSV Explorer.

### How the numbers are computed

Climb and descent count only elevation changes of at least 3 m from the last counted point, so GPS jitter does not add up to a mountain; Strava and Garmin Connect use their own smoothing and their own elevation source, so expect a different total. Moving time counts the seconds between consecutive points where you were going at least 0.5 m/s. Distance is shown twice when the file allows it: what the device recorded (a wheel sensor or its own GPS filtering) and what the raw coordinates add up to.

### What the parser admits it does not know

FIT files carry manufacturer-private messages that only the vendor's software understands. The advanced section lists every message type with its count and field names, developer fields with their names and units, and the numbers of the unknown ones — without pretending to decode them. A corrupt record does not throw the whole file away: the points that parsed are shown and the skipped count is reported underneath. Times in a FIT file are UTC and are shown in your browser's timezone with the UTC value alongside; a GPX time with neither a trailing `Z` nor a `+hh:mm` offset is marked as timezone-unknown rather than guessed.

## Limits

Does not load a map under the track, trim a privacy zone or read TCX files; it views and converts GPX and FIT files.

## FAQ

### Is my GPX or FIT file uploaded anywhere?

No. The file is read from your disk and parsed in a Web Worker inside the page; the summary, the track drawing, the charts and the converted files are all produced locally. There is no server, no account, and no map tile request that could leak where the route is.

### Why is the elevation gain different from Strava or Garmin Connect?

Because there is no single correct answer. Every platform picks its own elevation source — the barometer in the file, or a terrain model looked up from coordinates — and its own smoothing. This page uses the elevations in the file and counts a change only once it reaches 3 m from the last counted point, which is written on the page so you can compare like with like. A noticeably different total from another platform is normal, not a bug.

### What does converting FIT to GPX lose?

Laps, device events (pauses, button presses), developer fields from Connect IQ apps, the device's own speed and distance values, and power unless you tick the non-standard option. Heart rate, cadence, temperature, elevation and time survive in the Garmin `TrackPointExtension`. The page lists the dropped fields for the file you opened, so keep the original `.fit` if any of them matter.

### Why is there no map under the track?

Deliberately. Drawing roads under your route means asking a tile server for exactly the area you were in, which hands a third party the location of your home, your office or your training loop. The track is drawn to scale on a blank canvas with a scale bar and north arrow instead, which is enough to recognize the shape and spot a GPS glitch.

### If I cut the points near my start, can Strava still see where I live?

This version does not trim tracks at all — that is planned for a later stage — and even a trimmed file is no guarantee. The platform still sees the time, the direction you left in and the point where the data starts, and can combine them with your other activities. Use the platform's own privacy zone (Strava, Garmin Connect and Komoot all have one), which hides the area from other users while keeping your own stats intact.

### Why are there two different distances?

One is what the device recorded, usually from a wheel sensor or its own GPS filtering; the other is the raw coordinates added up point to point. A wheel sensor is more accurate on a bike, while GPS jitter at low speed inflates the coordinate sum. Both are shown so you can see which one the platform you upload to will be closer to.

### Should I tick the power option when converting to GPX?

Only if the tool you are importing into is known to read it. GPX has no standard power element, and the `<power>` child written here sits in the GPX namespace, so a strict validator will reject the file. Leave it off for Strava and most route planners; if you need power, export CSV or keep the `.fit`.

### The watch's FIT file will not open elsewhere — what is in it?

Open it here and scroll to the advanced section. It lists every message type with its count and fields, developer fields with their names and units, and the numbers of manufacturer-private messages the parser does not understand. Points that parsed are still shown even when part of the file is damaged, with the skipped count underneath.

## Related tools

- [CSV Explorer](https://bytescope.dev/en/csv-explorer.md) — Open the exported CSV as a sortable, filterable table and query it with SQL.
- [Remove EXIF](https://bytescope.dev/en/remove-exif.md) — Strip GPS coordinates and other metadata from photos before you share them.
- [File Type Identifier](https://bytescope.dev/en/file-type.md) — Not sure what a file is? Identify it from its bytes, not its extension.
