bikesync.ninja OPEN THE MERGER →
Guide

How to merge Zwift and Garmin FIT files into one ride

If you ride Zwift while a Garmin watch or Edge records the same session, you end up with two activities, each holding half the story. Here's how to combine them into one complete ride — keeping both devices' statistics rather than picking a winner — for free, in your browser, without installing anything.

Why you end up with two files

Zwift records power, cadence, speed, distance, elevation and the in-game route. Your Garmin records heart rate, temperature and the metrics only a watch can produce — Body Battery, Stamina, respiration, Training Effect — because those come from its own sensors and firmware during the recording. Dual recording gets you everything, split across two files that upload as duplicate activities.

Worth knowing what Zwift's own upload gives you: when Zwift uploads a ride to Garmin Connect, the route and elevation come from the virtual course, not from any GPS, and the activity arrives as a file Connect received rather than one the watch recorded. That distinction is the whole reason people dual record — see what you actually gain and lose.

Step 1 — Export both original files

Step 2 — Merge them in your browser

  1. Open bikesync.ninja. No account, no upload — the merge runs locally in your browser.
  2. Drop the Garmin file into slot A. File A is the master: it keeps heart rate, temperature, Body Battery, Stamina, laps, calories and the device identity. You can drop Garmin's zip in as it downloaded; it gets unpacked for you.
  3. Drop the Zwift file into slot B. File B fills the gaps: power, cadence, speed, distance, elevation and the virtual route.
  4. Leave Auto-align on. The offset between the two recordings is found by cross-correlating a signal both devices saw — cadence, heart rate or power.
  5. Keep Randomize file ID on so the merged file uploads beside the originals instead of being rejected as a duplicate.
  6. Merge, and download the combined .fit.

Step 3 — Upload it and clear up

The output is a standard FIT activity that uploads to Garmin Connect, Strava and TrainingPeaks. Upload it wherever you train, then delete the two partial activities so your feed and training load aren't counted twice.

Does merging keep your statistics?

This is the usual worry, and the answer has two halves.

Device-computed values are preserved, not recalculated. Training Effect, Body Battery impact, Stamina, respiration, calories, laps and Cycling Dynamics come from the master file untouched — nobody can reconstruct them from records, so they're carried across verbatim. Connect still lists the merged activity as recorded by your watch.

Summary figures backed by changed data are rebuilt. If power now comes from Zwift, then average power, normalized power, total work and the rest are recomputed from the merged records, because the originals would no longer describe the activity. The same goes for distance, ascent and average speed.

It isn't only Garmin and Zwift

Any two FIT activity files of the same ride will do. BikeSync picks a profile automatically:

If your power meter is paired to the wrong side — the classic case being pedals on the bike computer while the trainer feeds Zwift — open Field sources before merging and set power to whichever file you trust.

If the result looks wrong

Merge your ride now

Two FIT files in, one clean ride out. Free, no account, and your files never leave your browser.

Open BikeSync →