The Moveee team
Free coaching · a real route for every ride
You built (or were given) a structured workout in one app, and you want to ride it somewhere else — on your Garmin out on the road, or in Zwift on a rainy Tuesday. That trip happens through two file formats, .zwo and .fit, and the whole topic is less mysterious than the file extensions make it look. Here's what each format actually is, what opens where, and the exact steps to get a workout onto the two most common destinations.
- .zwo is Zwift's XML workout file; .fit is Garmin's binary format, spoken by nearly every head unit.
- The classic confusion: a .fit file can be a workout (a plan) or an activity (a recording). Same extension, different things.
- Targets travel as % of FTP, so a workout stays correctly hard everywhere — as long as your FTP is set the same in each app.
The two formats, demystified
A plain-text XML file describing a structured workout: warm-up, intervals, recoveries, each with a duration and a target as a percentage of FTP.
A compact binary format from Garmin, used across the whole industry. Not human-readable, but far more widely supported by hardware — head units speak .fit natively.
The .fit confusion, cleared up once
Most head-scratching in this area comes from one fact: .fit is used for both workouts and activities. A workout .fit says "do 3 × 12 minutes at 90% FTP" — it's instructions, made before the ride. An activity .fit says "here's every second of power, heart rate and GPS from the ride you did" — it's a recording, made after. They share an extension because .fit is really a container format with many message types inside. So when an import fails with something like "not a valid workout," you've almost certainly fed a recording into a workout importer (or vice versa). Nothing is broken; you just have the other kind of .fit.
What opens where
| Destination | .zwo workouts | .fit workouts |
|---|---|---|
| Zwift | Native — its own format | Activities only (not workout import) |
| Garmin head units | No | Yes — workouts via Connect or USB |
| Wahoo (ELEMNT / SYSTM) | No (ELEMNT); SYSTM has its own library | Yes — planned workouts sync to ELEMNT |
| MyWhoosh | Yes — imports .zwo workouts | Activities export |
| Hammerhead Karoo | No | Yes — workout .fit files |
Support shifts with software updates — treat this as the current lay of the land, and check your device's import options if a row surprises you.
Getting a workout onto a Garmin
Via Garmin Connect (the tidy way)
Open connect.garmin.com → Training & Planning → Workouts → import the .fit workout file. It appears in your workout library.
Send to device
In Connect, choose "Send to device" — the workout syncs to your Edge or watch next time it connects (Wi-Fi, phone, or cable).
Or go direct over USB
Plug the Edge in and drop the file into the Garmin/NewFiles folder. On next boot the unit ingests it into Training → Workouts.
Ride it
Start the workout on the unit; it steps through your intervals with target alerts. Pair a trainer and newer Edges can even drive ERG.
Getting a workout into Zwift
Find the custom workouts folder
On the computer where Zwift runs: Documents/Zwift/Workouts/<your numeric rider ID>. That per-rider folder is the magic location.
Drop the .zwo in
Copy the file into that folder. No renaming needed — the workout's name lives inside the XML, not in the filename.
Restart Zwift and look under Custom Workouts
Open the workout picker; your file appears in the Custom Workouts category. Zwift reads the folder at launch, so restart if it was open.
One wrinkle: on iPad or Apple TV there's no accessible Workouts folder, so custom .zwo files need to go in via a computer that shares the same Zwift account — they'll then be available on your other devices.
Why the workout stays the right hardness everywhere
Here's the elegant part of both formats: interval targets are stored as a percentage of FTP, not as raw watts. The file says "12 minutes at 90%," and each destination multiplies that by its FTP setting for you at ride time. That's what makes a workout portable across a whole winter of changing fitness — but it's also the one thing that can silently go wrong. If your FTP is 260 W in the app that built the workout and still 230 W on the Garmin from last spring, the "same" workout is a different session on each device. Whenever your FTP changes, update it everywhere you ride. It's a two-minute chore that keeps every exported file honest.
Exporting from your plan
If your training plan lives in Moveee, any planned workout exports straight from the calendar as .zwo or .fit — so the session your plan scheduled for Thursday can be ridden on your Edge up a real climb, in Zwift, or in Moveee Indoor without leaving the browser. The plan doesn't care where you ride the intervals; it only cares that you do.
Sources 5
Where this article summarises a study, the study itself is linked — not a write-up of it.
- 1 FIT SDK — overview of the Flexible and Interoperable Data Transfer protocol · Garmin Developers · 2024
- 2 FIT file types: Workout file · Garmin Developers · 2024
- 3 FIT file types: Activity file · Garmin Developers · 2024
- 4 Custom Workouts · Zwift Support · 2024
- 5 Borszcz FK, Tramontin AF, Bossi AH, Carminatti LJ, Costa VP Functional Threshold Power in Cyclists: Validity of the Concept and Physiological Responses · International Journal of Sports Medicine · 2018
Your own roads, indoors, in a browser tab
Moveee Indoor pairs your smart trainer over Bluetooth and rebuilds a route you have saved as a 3D road — real gradients, ERG for the intervals, and the ride saved with full power data. Nothing to install. Free while it is in alpha.
Start an indoor rideKeep reading

The best indoor cycling apps in 2026 (an honest round-up)
Zwift, TrainerRoad, Rouvy, MyWhoosh and the rest — what each one is actually for, what it costs, and how to pick the app that matches how you like to ride indoors.

No ERG mode? How to use your gears as the resistance dial on a dumb trainer
How to run a structured indoor session with no power and no ERG — the way everyone did it until about 2015. Four sessions that work, how to steer by heart rate despite its lag and drift, and the one caveat about your training plan.
An indoor cycling app for Windows with nothing to install
No admin rights, no 12 GB download, no launcher updating itself before every session. Here's how to run a full indoor cycling app on Windows with nothing to install — a browser tab, your smart trainer, and a real 3D road.
Indoor cycling on any device: how Moveee Indoor runs in the browser (even on a Mac)
Mac, Windows, Linux, a Chromebook or an Android tablet — if it runs Chrome or Edge, it can run a full trainer session. Here's how one browser app rides on all of them, and the one gap (iOS).
Indoor cycling on a Chromebook: the trainer apps that actually work
A Chromebook can't install Zwift — but it can still run a full trainer session. Here's how to ride indoors on Chrome OS with nothing to download, and exactly what you need.

The best free Zwift alternative in 2026
Zwift is no longer the only game in town, and some of the best options cost nothing. Here's an honest guide to the best free Zwift alternative in 2026 — what each one does well, and how to pick the one that fits how you ride.
Rollers vs turbo trainer: which should you ride this winter?
One teaches you to ride; the other makes you fitter. Rollers build balance, souplesse and bike handling that a locked-in turbo never will — but the turbo owns structure, ERG and every hard interval you'll do all winter. An honest comparison, who should pick which, and why the real answer might be both.
How to use your Wahoo KICKR without Zwift (a free browser app)
Your Wahoo KICKR doesn't need Zwift — or any subscription — to give you a proper session. Here's how to use a KICKR (or KICKR Core, Snap and Move) with a free browser app that controls resistance, holds ERG targets and saves to Strava.
Which cycling coach app should I use?
We put the 10 most popular cycling training apps of 2026 — paid and free — head to head, with honest pros and cons for each, so you can pick the right coach for the way you actually ride.
Cycling clothing explained: bibs, chamois, layers and why cotton fails
What each piece of cycling kit is actually for, what the evidence supports, and where the marketing runs ahead of it. Spend on shorts and gloves; the fourth jacket can wait.
Your first winter on the bike: kit, roads and staying motivated
Winter is where new riders quietly stop. Warm extremities, lower roads, one hard session a week and a fixed ride day carry more fitness into spring than any jacket.
FTP explained: what it is, how to test it, and how to actually raise it
FTP is the single most useful number in cycling — it sets your zones, tracks your fitness and shapes every workout. Here's what it means, how to measure it, and how to push it higher.