
Image générée par notre modèle.
zwift
How to Migrate from Zwift Without Losing Ride Data
Leaving Zwift does not have to break your training record. Export FIT files, move workouts, validate imports, and keep your indoor data useful.
Why this migration matters
If you migrate from Zwift, the real risk is not losing access to a virtual world. It is breaking the continuity of your training data.
Indoor riding produces some of the cleanest performance signals you own. Power is stable, interruptions are limited, environmental noise is lower, and the sessions are usually structured. If that history gets scattered across platforms, duplicated, or stripped of useful context, future training decisions get worse. Fitness trends look choppy. Fatigue estimates drift. Progression from one training block to the next gets harder to evaluate.
The goal is not to preserve everything equally. Some Zwift data is essential for performance analysis. Some is useful context. Some should be treated as platform-specific history and left behind. A good indoor cycling data migration separates those categories before you start moving files.
What Zwift data you can and cannot move
An activity file is not the same thing as your full Zwift account history.
For training, the most important asset is the ride file. A FIT file can preserve the core streams that describe the cost and execution of the session:
- Power
- Heart rate
- Cadence
- Duration
- Timestamp
- Trainer or device source
- Lap or interval markers, when present
- Virtual distance and elevation, when included
That is the data your analysis platform needs to model load, track progression, update your FTP estimate, and compare repeat sessions.
What may not transfer cleanly is the Zwift-specific layer around the ride. That can include virtual route completion, badges, in-game levels, screenshots, social interactions, race ranking context, and some event metadata. Those details can matter for memory and motivation, but they are not the foundation of your training record.
The practical rule is simple: save the files that contain the sensor streams first. Once those are safe, decide whether the rest is worth rebuilding manually.
Export Zwift activities before you import anything
Create a local archive before connecting a new platform. Do not rely on a single cloud service as the only copy of your Zwift ride history.
Export activity FIT files
Use FIT files as the primary source when possible. They usually carry the richest ride data in a compact format and are better suited to power-based analysis than a simplified export.
You have two practical routes:
-
From the computer used for Zwift
- Open the local Zwift folder on that machine.
- Go to Documents/Zwift/Activities.
- Copy the .fit files into a separate migration folder.
- Keep the original filenames until the migration is complete.
-
From the Zwift web activity feed
- Log in to Zwift on the web.
- Open the activity feed.
- Select an individual activity.
- Use the activity menu, usually shown as a cog or more-options control, to download the FIT file if that option is available.
- Save the file into the same migration folder.
Zwift does not provide a clean standard bulk export from the activity feed that reliably gives every historical ride as original FIT files in one step. The local Activities folder is the fastest source, but it only covers rides stored on that computer. If you rode on multiple devices, changed computers, deleted an install, or used a tablet, the local archive may be incomplete. For older cloud-only rides, expect to download key activities one by one or use connected services as a secondary source.
Connected platforms such as Garmin, Wahoo, or Strava can help fill gaps, but they are not automatically equivalent to original Zwift FIT files. They may have changed metadata, sport type, title, map handling, laps, or streams during sync. Treat them as useful backups, not the first source of truth.
Export custom workout files
Completed workouts are preserved as activity files. The workout library itself is separate.
If you built custom Zwift workouts on a computer, look for .zwo files in:
- Documents/Zwift/Workouts/[Zwift user ID]
Copy those .zwo files into a separate workout folder. These files describe the planned workout structure: steps, targets, recoveries, and names. That is different from the completed ride file, which only describes what happened during execution.
Zwift does not provide a clean export of the full standard Zwift workout catalogue as your personal workout library. If a session came from Zwift's built-in library and you want to use it elsewhere, you may need to recreate it manually in the new platform. If you built workouts on a tablet or another device and cannot find the .zwo files on your computer, assume you may need to export them from the device if accessible or rebuild the important ones by hand.
Do not migrate blindly
Before bulk importing, check for:
- Duplicates from Garmin, Wahoo, Strava, or another auto-sync path
- Timezone shifts that move rides to the wrong day
- Missing heart rate, power, or cadence streams
- Virtual rides misclassified as outdoor rides
- Virtual distance mixed into outdoor distance totals without a clear label
This is the point where a migration succeeds or fails. A folder full of files is not the same thing as a clean training record.
Import with a sample first, then validate
Do not start with the full archive. Import a small representative batch first.
A platform-agnostic workflow looks like this:
-
Import 3 to 5 sample files
- Include a structured workout, a free ride, a race or hard group ride, a recovery ride, and a test-style session if you have one.
-
Compare basic session totals
- Check duration.
- Compare TSS or training load if both platforms calculate it.
- Confirm elapsed time and moving time are interpreted sensibly.
-
Inspect the core data streams
- Power should not be flatlined, missing, or doubled.
- Heart rate should appear where you know you wore a monitor.
- Cadence should be present and plausible.
- Laps or intervals should be checked if the session was structured.
-
Confirm timing and classification
- Check timezone and start time.
- Confirm the ride lands on the correct calendar day.
- Confirm the activity type is indoor cycling, virtual cycling, or whatever classification your new platform uses consistently.
-
Bulk import only after the sample passes
- If the sample fails, fix the source file choice or import settings before scaling the problem across your full history.
Different platforms interpret the same file differently. One platform might preserve laps cleanly. Another might ignore workout steps but keep the power stream. Another might classify everything as a generic ride unless you edit the sport type. The sample import tells you which problem you have before it becomes hundreds of activities.
Preserve the signals that drive training decisions
The highest-value data in your indoor archive is the relationship between power, heart rate, cadence, and session design.
Power tells you the external work. Heart rate gives context on internal load. Cadence helps explain how the work was produced. Trainer mode and control source are more complicated. A file may include useful device metadata, but it may not reliably preserve whether the ride was in ERG mode, simulation mode, resistance mode, or controlled by an external head unit after it moves between platforms. Sometimes that context has to be inferred from the session pattern: steady step targets suggest ERG control, variable power on changing terrain suggests simulation, and a bike computer recording may indicate a parallel control source.
That distinction matters because two rides with the same average power can mean different things. A tightly controlled workout tells you about target compliance. A race tells you about stochastic load and repeatability. A free ride may show pacing behavior. The file gives you the physiological trace; the surrounding context explains why it looks that way.
When validating the import, inspect representative rides rather than only checking whether they appear on the calendar. Look for obvious breaks: missing power, missing heart rate, cadence stuck at zero, duplicated files, or a duration that does not match the original session.
A threshold workout without heart rate is still useful. A heart rate ride without power is still useful. But if your future training plan relies on power-based load, missing power from key sessions will understate the work you actually did. The damage is not just archival. It changes the inputs your next plan may use.
Handle virtual distance, elevation and speed carefully
Virtual distance, elevation, and speed are useful, but they should not be treated like outdoor metrics.
On Zwift, speed is shaped by a virtual physics model. It can reflect power, rider data, drafting, route profile, in-platform equipment choices, and event dynamics. That makes it meaningful inside Zwift, but not directly comparable to outdoor speed on a real road.
The same logic applies to distance and elevation. They are valid records of the virtual ride, but they are not clean measures of mechanical training load. For performance analysis, power and duration matter more. A hard indoor race with little useful elevation can still be a major training stimulus. A long virtual descent may add distance without adding the same cost you would expect outside.
Before the full import, decide how your new platform should classify indoor rides. If it mixes virtual and outdoor distance into the same annual total, that may be fine for motivation but less useful for analysis. If you use distance to guide volume, be careful. Indoor distance is not the same training currency as outdoor distance.
A better hierarchy is:
- Use power and duration to evaluate training load
- Use heart rate to evaluate physiological response
- Use cadence to understand execution
- Use virtual distance, elevation, and speed as context
This keeps your Zwift ride history useful without letting virtual metrics distort future planning.
Import or rebuild workouts with intent
If you want to leave Zwift but keep your training structure, do not just move completed rides. Move or rebuild the workouts that shaped those rides.
Structured workouts matter because they encode intent. A completed ride tells you what happened. A workout file tells you what was supposed to happen. That distinction is important when you review execution. Did you fail late because the targets were too aggressive, because fatigue was high, or because the session was poorly placed in the week?
If your new platform can import .zwo files, test a few session types before moving the full library:
- Steady endurance sessions
- Threshold progressions
- Short high-intensity repeats
- Cadence-focused work
- Recovery rides
After import, check the targets, step durations, recoveries, and workout names. Pay attention to workouts built around percentage of FTP. If your new platform uses a different FTP value than Zwift did, the same workout can become harder or easier without the file itself changing.
For important sessions, rebuilding manually may be better than a messy import. This is especially true for benchmark workouts, recurring progressions, and sessions tied to a specific training phase. A clean rebuilt workout is more useful than an imported file with broken steps or vague targets.
Do not rebuild every old workout just because it exists. Start with the sessions you are likely to use again. The goal is continuity, not digital hoarding.
Audit the migrated archive before trusting it
Once the files are imported, audit the migration before you let the new platform guide training decisions.
Start with duplicates. Duplicate indoor rides often share the same start time, duration, and power profile. If both versions feed your analytics, training load will be overstated and form will look worse than reality. Keep the cleaner file, usually the one with the most complete sensor data and correct sport type, then exclude or delete the other according to how your platform handles history.
Then look for gaps. Scan the calendar for missing indoor-heavy blocks. Missing rides can make fitness trends appear to drop when they did not, which can push you toward unnecessary work.
Finally, clean the metadata. Rename key rides if needed. Tag indoor rides consistently. Correct activity type where the import misclassified the session. If your platform supports equipment tags, decide whether the smart trainer should be listed consistently.
A useful audit checklist:
- Calendar continuity looks right
- Key workouts are present
- Power, heart rate, and cadence are visible on representative rides
- Duplicates are removed or excluded
- Indoor rides are clearly marked
- Timezone and start time are correct
- FTP history or threshold settings are reviewed
- Workout library imports are checked before reuse
This work is less tedious than discovering bad data after a plan has already adapted to it.
Use the migrated history to train better
The point of migrating from Zwift is not to create a museum of old rides. It is to carry forward the information that helps you train better.
Use your indoor history to answer practical questions:
- What kind of sessions did you complete consistently?
- Which workouts produced good adaptation without excessive fatigue?
- How did heart rate respond to familiar power targets?
- Did cadence tendencies change under load?
- Which indoor blocks left you fresh enough to perform outside?
This is where clean data becomes valuable. A future training plan should not just know your current FTP. It should understand the type of work you tolerate, the progression rate that tends to stick, and the gap between indoor control and outdoor execution.
If you are moving to a different indoor platform, keep the early phase conservative. Even if the power targets are identical, the feel may change. Trainer control, workout display, resistance behavior, and pacing feedback can all alter how the session rides. Use the first block to validate that migrated zones and workouts behave as expected.
If you are moving away from indoor platforms entirely, the same archive still matters. Indoor rides are often the best controlled comparison points you have. They can anchor your power-duration profile, help validate threshold changes, and show whether a performance jump was built gradually or came from a single strong test.
The clean migration rule
A clean indoor cycling data migration has a clear order of operations: export first, back up second, sample import third, validate fourth, bulk import fifth, audit before trusting, and only then rebuild the training workflow.
Do not judge success by whether every badge, route, or social artifact survives. Judge it by whether future training decisions are still grounded in accurate power, heart rate, cadence, duration, and workout context.
If those signals survive, your Zwift ride history remains useful. If they get duplicated, stripped, or mixed with virtual metrics in the wrong way, the archive can become misleading. The migration is not just a file transfer. It is a data quality project, and treating it that way is what keeps indoor work from disappearing the moment you leave the platform.


