The journey
- Training planweeks of workouts
- Workoute.g. VO2max 4 × 5
- Stepswarmup · 4 × work/recover · cooldown
- Structured workoutdurations + targets
- FIT workout file.fit
- Bike computerstep-by-step guidance
- Warmup10 min50–65% FTP
- Repeat 4×
- Work5 min105–110% FTP
- Recover3 min50–60% FTP
- Cooldown10 min<60% FTP
What FIT is
FIT (Flexible and Interoperable Data Transfer) is a compact binary file format defined by Garmin for fitness data. The same format is used for several kinds of file, each identified by a “file type” in the file’s header message.
Workout files vs activity files
| FIT workout file | FIT activity file | |
|---|---|---|
| Describes | What to do: steps, durations, targets | What happened: a recorded ride |
| Created by | A coach, an app, or you — before the ride | The device, during the ride |
| Contains | Workout and workout-step messages | Records of power, heart rate, GPS, laps… |
| In SurgeIQ Lab | What “Download FIT” produces | What you import from Strava |
Inside a workout file
Garmin’s specification requires three kinds of message, in this order:
- File ID — marks the file as a workout.
- Workout — one message with the sport (cycling), the workout name and the number of steps.
- Workout steps — one per step, numbered from 0, in the order they are performed.
Each step carries an intensity (warmup, active, recovery, rest, cooldown), a duration (time, distance, or open — ended by the lap button), a target, and optionally a name and a note.
How targets are stored
Power and heart-rate targets can be relative or absolute, distinguished by reserved number ranges:
| Target | Stored as | Example |
|---|---|---|
| Power, % of FTP | 0–1000 = percent of FTP | 105–110% → 105 / 110 |
| Power, watts | watts + 1000 | 250–280 W → 1250 / 1280 |
| Heart rate, % of max | 0–100 = percent of max HR | 70–80% → 70 / 80 |
| Heart rate, bpm | bpm + 100 | 135–150 bpm → 235 / 250 |
| Cadence | rpm, no offset | 95–105 rpm → 95 / 105 |
Why your FTP setting matters. A percent-of-FTP target stays a percentage in the file, and the device converts it using the FTP stored on the device. If the device’s FTP differs from the one you plan with, the watts on screen will too. SurgeIQ Lab keeps targets as percentages for exactly this portability.
How repeats are stored
A repeat is a special step placed after the steps it repeats. Its duration type is “repeat until steps complete”, its duration value points back to the first step of the block, and its target value is the number of repetitions. So “4 × (work, recovery)” is three messages — work, recovery, repeat — not eight.
A real encoded example
These are the workout-step messages SurgeIQ Lab’s exporter produces for the example workout (time durations are in milliseconds):
Loading the encoded example…
Step 3 is the repeat: duration value 1 means “repeat from step 1”, target value 4 means four times.
Getting it onto a device
- Garmin Edge: connect by USB and copy the file into the
Garmin/NewFilesfolder; the device files it under workouts after you disconnect. - Garmin Connect / Wahoo direct sync: not available in SurgeIQ Lab. Both require approval through their developer programmes.
- Trainer apps: SurgeIQ Lab can also export .ZWO (Zwift) and .ERG files for indoor sessions.
Limitations
- FIT has no ramp step; SurgeIQ Lab exports a ramp as a steady range and warns you.
- A workout file carries no calendar date. Plan exports name files by date or plan day instead.
- Zone targets (e.g. “HR zone 2”) use the zones configured on the device.
- How a device displays names, notes and secondary targets varies by model.
Where to go next
How this guide was written
Technical details follow Garmin’s published FIT documentation. SurgeIQ Lab writes files with Garmin’s official FIT SDK; compatibility claims are limited to what we have implemented. We have not verified loading FIT workout files onto Wahoo devices and don’t claim it.