GPX Converter
☰

100% private — files never leave your browser

Repair a FIT File

A transfer glitch, a full memory card or a bad header CRC is enough for Garmin Connect and Strava to refuse a .fit file that still holds the ride. This tool rebuilds the parts of the file that make parsers stop — the header, both CRCs, a cut-off ending, a broken definition — and hands back a standards-compliant FIT file. It is free, it runs in your browser, and the bytes never leave your device.

or click to browse — header, CRC and truncated activity files are rebuilt locally

How to repair a FIT file

  1. 1

    Drop the .fit file

    Drag the damaged file onto the box, or click to browse. Decoding and repair run in a background worker on your device; the file is not uploaded.

  2. 2

    Read what changed

    The result lists each structural fix: signature, header length, header CRC, data length, a truncated ending, a resync past damaged bytes, and the file CRC. A healthy file is reported as unchanged.

  3. 3

    Check the track

    When GPS records survived, distance, duration, ascent and a map are shown from the repaired bytes. If no GPS points remain, the page says so instead of drawing an empty route.

  4. 4

    Download

    Save the repaired .fit and upload it where the original was refused. The original file on your computer is left as it was.

Why a FIT file gets rejected

FIT is a compact binary activity format. A parser does not skim it the way it skims XML: it trusts a header that says how many data bytes follow, then walks a stream of definition messages and data messages, and finally checks a CRC over everything it was told to read. Break any one of those three agreements and a strict uploader stops, often with a generic "file is corrupt" and no hint which agreement failed.

The failures that actually show up are mundane. A cable pull or a full watch storage cuts the file mid-record, so the header still promises a length the bytes do not have. A device occasionally writes a header CRC or a file CRC that does not match the bytes underneath, and Connect refuses the upload before it looks at a single GPS point. Less often a definition message — the little schema that says how to read the records after it — is mangled, and every subsequent message looks like noise even though the records themselves are intact.

What the repair changes

The repair walks the message stream from the first byte after the header. Every definition and data message that still fits its declared size is copied through unchanged, which is what keeps manufacturer fields, laps, sessions and developer data when those messages were never the broken part. The output is a new FIT file with a corrected data-length field, the .FIT signature restored if it was damaged, and both CRCs recomputed with the checksum Garmin's own SDK uses. A 14-byte header keeps its header CRC; a 12-byte header stays a 12-byte header.

A file that ends in the middle of a message is cut back to the last complete message. The header is then rewritten so it describes the bytes that remain, instead of the bytes the device meant to write. If a definition itself is unreadable, the scan jumps ahead to the next byte sequence that is a plausible definition followed by a message that fits it, and keeps everything from there. Messages in the gap are dropped, not guessed.

A file whose header and CRC already check out is returned untouched. Repair will not re-encode a healthy activity, invent elevation, or smooth a GPS trace that merely looks ugly. If the only problem is a wrong checksum or a short tail, the record payload you download is the record payload you dropped in.

What cannot be recovered

Repair recovers records that are in the file and locked out by structural damage. It cannot recreate samples the device never wrote. A file cut off at the one-hour mark comes back as a one-hour activity with an honest header, not as the three-hour ride you remember. Coordinates that were never stored, heart-rate samples from a sensor that had already dropped, and an entire second file you forgot to download are outside what any checksum can restore.

A broken record definition takes the records that depended on it with it. Those data messages have no schema of their own; once the definition is gone, treating the following bytes as latitude and heart rate would be a guess. The tool continues at the next intact definition — often the lap or the session — and says how many record messages survived. If the map is empty after a repair, the GPS records did not make it. To delete a detour or join two rides, use the merge and split tools; repair only makes a damaged file readable again.

After you download

The download is named with a -repaired suffix so the original stays where it is. Upload the repaired file the way you would upload an export from the device. A file that was only missing a CRC should show the same distance, laps and start time you remember. A file that was cut short will show a shorter activity, because that is all the bytes contained. The map beside the download is drawn from those repaired bytes, so you can see what an uploader will receive before you send it.

Your files never leave this browser

This tool — like every tool on this site — runs entirely as client-side JavaScript. The file you drop is parsed in a Web Worker on your own device, converted in memory and handed straight back to you as a download. There is no upload endpoint, no server-side conversion service and no temporary storage: you can watch the network tab in your browser's developer tools and confirm that no file bytes are transmitted anywhere.

That matters more with fitness data than with most files. A GPS track is a precise log of where you were, at what time, and how hard your heart was working — home address, training habits, favorite routes and race schedule all in one file. Keeping conversion on-device means third-party converters never get a copy of that log, and the tool keeps working identically on a plane, in a basement, or anywhere else without signal.

Damage the repair knows

What brokeWhat an uploader doesWhat the repair does
Bad file CRCRejects the file before reading recordsRecomputes the CRC with the FIT SDK checksum
Bad header CRCStops on the 14-byte headerRewrites the header CRC over the first 12 bytes
Truncated downloadHeader length runs past the end of the fileKeeps the last complete message and fixes the length
Broken definitionEvery message after it fails to parseResyncs on the next intact definition and keeps what follows
Missing .FIT signatureRefuses to treat the bytes as FITRestores the signature and recomputes the CRC

Frequently asked questions

Yes. There is no account, no trial and no paid unlock. It is the same browser-only tool as the converters, merge, split and viewers on this site.

Related tools