Free tool

Convert FIT, GPX, and TCX files in your browser.

Convert FIT to GPX, GPX to FIT, TCX to GPX, or any other combination - plus JSON and CSV for analysis. Drop any Garmin, Wahoo, Coros, or Polar activity file and download the format you actually need. Free FIT file converter, no signup, no upload - the file decodes in your browser using the official Garmin SDK and the conversion runs locally on your device.

ride.fitbecomesride.gpx

How it works

  1. 1

    Drop your file

    FIT from your head unit, GPX from a route, TCX from an export - all good.

  2. 2

    Pick a target format

    GPX for sharing, TCX for the old guard, JSON or CSV for analysis, FIT to keep full fidelity.

  3. 3

    Download instantly

    Conversion runs in your browser. Nothing uploaded, nothing logged, nothing waiting in a queue.

What you get

  • FIT decoding via the official Garmin FIT SDK
  • Round-trip safe FIT re-encoding without losing fields
  • JSON export with every message and field for analysis
  • CSV export of the record stream for spreadsheets and Python
  • Distance and duration preview before you download
  • Works offline - file stays on your device, no signup required

When to use this

Use the converter whenever you have a file in one format and need it in another. Common cases: your bike computer wrote FIT but the platform you want to upload to only accepts GPX (older route-planners, some forum upload widgets); a friend shared a route as GPX but you want to load it as a navigable course onto your Garmin Edge; you need CSV of a ride to drop into Excel for custom analysis; you want JSON to compare two activity files field-by-field for debugging; or you are stashing backups in a future-proof text format rather than relying on a binary you cannot read. The converter handles all of these in a single drop-pick-download flow.

How it works under the hood

For FIT input, the official Garmin JavaScript FIT SDK decodes the binary into a typed object (one array per message type). For GPX input, the browser's native DOMParser reads the XML and the converter extracts trackpoints, timestamps, and extension fields. For TCX input, same XML approach with the TCX schema. The conversion to the target format is a series of mapping functions - decode source into a normalized internal representation, then encode into the target. FIT output goes through the SDK's encoder for correct CRC, header, and field IDs. GPX and TCX output use template-based XML serialization. JSON output is a JSON.stringify of the internal representation. CSV output flattens the record stream into headers and rows. Nothing happens server-side.

Common mistakes

Three to watch. First, expecting GPX or TCX output to carry power, lap, or device info perfectly - GPX especially is a thinner format and some fields just do not have a home there. For full preservation, stay in FIT. Second, uploading a converted file to Strava when the original is already there - Strava's duplicate-detection will reject it unless you also shift the start time or delete the original. Third, treating CSV as a complete export - it captures the record stream but not the session, laps, or device metadata. If you need everything, use JSON.

Frequently asked questions

How do I convert a FIT file to GPX online?
Drop the FIT file into the converter, pick GPX as the target format, and download. The conversion runs entirely in your browser. Routes, elevation, timestamps, heart rate, and cadence carry through. Power gets written into the Garmin TrackPoint extension. The whole process takes about a second and the file never leaves your device.
How do I convert GPX to FIT?
Drop the GPX into the converter and pick FIT as the target. The output is an activity-typed FIT with each GPX trackpoint as a record message, timestamps preserved, and elevation carried through. If you want a navigable course FIT (with turn prompts) instead of an activity FIT, use our [GPX to FIT Course Converter](/tools/gpx-to-fit-course) - that tool detects turns and writes course_point waypoints.
Does my file get uploaded anywhere?
No. The converter uses the official Garmin JavaScript FIT SDK and the browser's native XML parser, both of which run entirely in your browser. The bytes never leave your machine, nothing is logged, no analytics ping carries any file content. The only network call the page makes is to load the page itself; after that, you can disconnect the wifi and the converter still works.
What is the difference between FIT, GPX, and TCX?
FIT is Garmin's binary activity format - small files, rich metadata, holds power and laps and device info, but you cannot open it in a text editor. GPX is the universal XML route format - readable in any text editor, holds trackpoints and elevation, but lacks first-class slots for power and lap structure. TCX is Garmin's older XML format - heavier than GPX but with native HR/cadence/power and lap data. Use FIT for full fidelity, GPX to share with anyone, TCX for legacy platforms that demand it.
What data gets dropped going from FIT to GPX?
GPX has no first-class slot for power or lap structure. The converter writes power into the Garmin TrackPoint extension (which most platforms read), and HR/cadence into the standard GPX extensions. Lap boundaries are written as waypoints. Device info, session totals, and FIT-specific event messages do not have GPX equivalents and are dropped. If you need full preservation, keep the FIT or convert to TCX instead.
Why convert to JSON or CSV?
For analysis outside the standard training platforms. JSON gives you the entire decoded FIT as a nested object - every message, every field, every record - which is the format you want for custom scripts or for diffing two files. CSV exports just the per-second record stream (time, lat, lon, elevation, HR, power, cadence, speed) which is what spreadsheets and Python pandas want. Use JSON for full structure, CSV for time-series work.
Will Strava and Garmin Connect accept the converted FIT?
Yes - the output is a fully valid FIT re-encoded via the official Garmin SDK with correct CRC and headers. Strava treats it like any other upload. If the original file was already in Strava and you are re-uploading the converted version, you will hit duplicate detection - either delete the original first or shift the start time using our [FIT Time Adjuster](/tools/fit-time-adjuster).
Can I batch convert multiple files at once?
One file at a time today. If you need to merge two or more files into a single activity, use our [FIT Combiner](/tools/fit-combiner). For true batch workflows (a folder of files all converted), email hello@neverchill.com and we will prioritize it.

Save your training to a real log

Convert once, then keep every ride and run analyzed in one place. Domestique reads the data for you.

Create free account