Cycling Tool
ZWO Workout Builder
Create structured cycling workouts and export Zwift .zwo XML with TSS, IF, Progression Level and RPE feedback.
Workout Conditions
W
h
Build phase
Pyramidal
Recovery Spin 45 · 45 min · 19 TSS
Recovery progression: Achievable. If RPE is above 8 or completion is below 90%, drop one level.
Progression Level
Recovery2.5
Endurance4.2
Tempo3.8
Sweet Spot3.6
Threshold3.2
VO2max2.8
Anaerobic2.4
Sprint3.0
Completion Feedback Simulator
Productive: Completion and RPE are in the ideal range; the next workout in this zone can progress slightly. PL 2.5 -> 2.6
Duration
45
min
TSS / IF
19
IF 0.5
Workout Level
1.7
Recovery
Recovery Spin 45
Recovery
Low-stress pedaling to recover the legs while keeping movement.
| Segment | Time | Target | Hint |
|---|---|---|---|
| Progressive warm-up | 8 min | 42% → 55% FTP | Open the aerobic system gradually; do not rush the power. |
| Custom steady state | 30 min | 52% FTP | Hold steady pedaling and breathing rhythm. |
| Cooldown | 7 min | 52% → 35% FTP | Bring breathing back down and let the legs clear fatigue. |
Visual Editor
1
Warm-up
Warm-up
min
rpm
%FTP
%FTP
2
Steady state
Steady state
min
rpm
%FTP
3
Cooldown
Cooldown
min
rpm
%FTP
%FTP
XML Preview
<?xml version="1.0" encoding="UTF-8"?>
<workout_file>
<author>CT Yeh Cycling Tools</author>
<name>Recovery Spin 45</name>
<description>Low-stress pedaling to recover the legs while keeping movement.</description>
<sportType>bike</sportType>
<tags>
<tag name="恢復"/>
<tag name="build"/>
<tag name="CTYeh"/>
</tags>
<workout>
<Warmup Duration="480" PowerLow="0.42" PowerHigh="0.55" Cadence="90">
<textevent timeoffset="10" message="Open the aerobic system gradually; do not rush the power."/>
<textevent timeoffset="450" message="熱身即將結束,準備進入主課表。"/>
</Warmup>
<SteadyState Duration="1800" Power="0.52" Cadence="88">
<textevent timeoffset="10" message="Hold steady pedaling and breathing rhythm."/>
<textevent timeoffset="900" message="檢查肩頸放鬆與踩踏穩定度。"/>
</SteadyState>
<Cooldown Duration="420" PowerLow="0.52" PowerHigh="0.35" Cadence="85">
<textevent timeoffset="10" message="Bring breathing back down and let the legs clear fatigue."/>
</Cooldown>
</workout>
</workout_file>ZWO Export Notes
This builder currently supports
Warmup、SteadyState、IntervalsT、Cooldown nodes and writes texteventprompts into each segment. Before importing into Zwift or another .zwo platform, confirm your FTP and zone settings match.