Skip to content

Instantly share code, notes, and snippets.

@Intyre
Created December 21, 2023 18:10
Show Gist options
  • Save Intyre/f096ea68f159a22937d6fc2f3b9d9cf3 to your computer and use it in GitHub Desktop.
Save Intyre/f096ea68f159a22937d6fc2f3b9d9cf3 to your computer and use it in GitHub Desktop.
Wahoo workout .plan files
=HEADER=
# Provider: WAHOO
NAME=20 Minute FTP Test
# Duration: 65 mins
DURATION=3900
# PLAN_TYPE=STRUCTURED_WORKOUT_FTP_TEST
PLAN_TYPE=1
# WORKOUT_TYPE=BIKE
WORKOUT_TYPE=0
# Dev Note: FTP = average power during "Test Interval" * 0.95.
FTP_TEST_FACTOR=0.95
DESCRIPTION=The 20 minute Functional Threshold Power (FTP) test is the benchmark for determining
DESCRIPTION=your FTP. Used as the basis for all structured training, FTP is the maximum power
DESCRIPTION=you can sustain for one hour of riding. It is recommended that an FTP test is taken
DESCRIPTION=every 4-6 weeks to maintain an updated snapshot of your fitness and ability and to
DESCRIPTION=see the effects of your training.\n\nAfter a 20 minute warmup do a 5 minute effort
DESCRIPTION=which should feel tough but sustainable. 10 minutes of spinning allows you to recover
DESCRIPTION=for the main set. During the 20 minute test, pace yourself so that your first 5
DESCRIPTION=minutes feels difficult (but sustainable) and the final 5 minutes feels like you’re
DESCRIPTION=giving everything you’ve got. Don’t go out too hard too early - ensure an even or
DESCRIPTION=positive split during the test interval. Try to maintain a typical outdoor
DESCRIPTION=cadence (80-100 RPM).
=STREAM=
=INTERVAL=
INTERVAL_NAME=WARM UP
MESG_DURATION_SEC>=0?EXIT
=SUBINTERVAL=
# 5 mins @ 30% FTP , Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=30
PERCENT_FTP_HI=30
MESG_DURATION_SEC>=300?EXIT
=SUBINTERVAL=
# 5 mins @ 60% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=60
PERCENT_FTP_HI=60
MESG_DURATION_SEC>=300?EXIT
=SUBINTERVAL=
# 1 mins @ 100%, Cad @ 110RPM
CAD_LO=110
CAD_HI=110
PERCENT_FTP_LO=100
PERCENT_FTP_HI=100
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 60%, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=60
PERCENT_FTP_HI=60
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 110%, Cad @ 110RPM
CAD_LO=110
CAD_HI=110
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 60%, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=60
PERCENT_FTP_HI=60
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 110%, Cad @ 110RPM
CAD_LO=110
CAD_HI=110
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 5 mins @ 60%, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=300?EXIT
=INTERVAL=
INTERVAL_NAME=TOUGH EFFORT
# 5 mins @ Level mode (plot as 110% FTP), Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
LEVEL=3
MESG_DURATION_SEC>=300?EXIT
=INTERVAL=
INTERVAL_NAME=RECOVERY
# 10 mins @ 50% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
LEVEL=-1
MESG_DURATION_SEC>=600?EXIT
=INTERVAL=
INTERVAL_NAME=TEST INTERVAL
# 20 mins @ Level Mode (plot as 110% FTP), Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
LEVEL=3
FTP_TEST_ACTION=START
MESG_DURATION_SEC>=1200?EXIT
=INTERVAL=
INTERVAL_NAME=COOL DOWN
FTP_TEST_ACTION=STOP
# 10 mins @ 30% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=30
PERCENT_FTP_HI=30
LEVEL=-1
MESG_DURATION_SEC>=600?EXIT
=HEADER=
# Provider: WAHOO
NAME=8 Minute FTP Test
# Duration: 60 mins
DURATION=3600
# PLAN_TYPE=STRUCTURED_WORKOUT_FTP_TEST
PLAN_TYPE=1
# WORKOUT_TYPE=BIKE
WORKOUT_TYPE=0
# Dev Note: FTP = average power during "Test Intervals" * 0.90.
FTP_TEST_FACTOR=0.90
DESCRIPTION=The 8 minute Functional Threshold Power (FTP) test offers an alternative means of
DESCRIPTION=calculating FTP. By using an 8 minute test instead of 20 minutes, you can train to
DESCRIPTION=sustain a higher power during the test interval and also track your ability to
DESCRIPTION=replicate 2 identical efforts.\n\nAfter a 20 minute warmup do a 3 minute tough
DESCRIPTION=effort at around V02Max. 7 minutes of spinning allows you to recover for the main
DESCRIPTION=set. During the test intervals, your goal is to maintain a difficult but sustainable
DESCRIPTION=output, which will push you to your limits by the end of the second 8 minutes. Try
DESCRIPTION=and pace yourself such that the 2 test intervals are consistent to within 10% of each
DESCRIPTION=other. Maintain a typical outdoor cadence (80-100 RPM).
=STREAM=
=INTERVAL=
INTERVAL_NAME=WARM UP
MESG_DURATION_SEC>=0?EXIT
=SUBINTERVAL=
# 5 mins @ 30% FTP , Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=30
PERCENT_FTP_HI=30
MESG_DURATION_SEC>=300?EXIT
=SUBINTERVAL=
# 5 mins @ 60% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=60
PERCENT_FTP_HI=60
MESG_DURATION_SEC>=300?EXIT
=SUBINTERVAL=
# 1 mins @ 100%, Cad @ 110RPM
CAD_LO=110
CAD_HI=110
PERCENT_FTP_LO=100
PERCENT_FTP_HI=100
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 60%, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=60
PERCENT_FTP_HI=60
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 110%, Cad @ 110RPM
CAD_LO=110
CAD_HI=110
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 60%, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=60
PERCENT_FTP_HI=60
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 1 mins @ 110%, Cad @ 110RPM
CAD_LO=110
CAD_HI=110
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
MESG_DURATION_SEC>=60?EXIT
=SUBINTERVAL=
# 5 mins @ 60%, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=300?EXIT
=INTERVAL=
INTERVAL_NAME=TOUGH EFFORT
# 3 mins @ Level mode (plot as 110% FTP), Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
LEVEL=3
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=RECOVERY
# 7 mins @ 50% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
LEVEL=-1
MESG_DURATION_SEC>=420?EXIT
=INTERVAL=
INTERVAL_NAME=TEST INTERVAL 1
# 8 mins @ Level Mode (plot as 110% FTP), Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
LEVEL=3
FTP_TEST_ACTION=START
MESG_DURATION_SEC>=480?EXIT
=INTERVAL=
INTERVAL_NAME=RECOVERY
FTP_TEST_ACTION=PAUSE
# 9 mins @ 40% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
LEVEL=-1
MESG_DURATION_SEC>=540?EXIT
=INTERVAL=
INTERVAL_NAME=TEST INTERVAL 2
# 8 mins @ Level Mode (plot as 110% FTP), Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=110
PERCENT_FTP_HI=110
LEVEL=3
FTP_TEST_ACTION=START
MESG_DURATION_SEC>=480?EXIT
=INTERVAL=
INTERVAL_NAME=COOL DOWN
FTP_TEST_ACTION=STOP
# 5 mins @ 40% FTP, Cad @ 80-100RPM
CAD_LO=80
CAD_HI=100
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
LEVEL=-1
MESG_DURATION_SEC>=300?EXIT
=HEADER=
NAME=CLIMBING SESSION
# Provider: WAHOO
# Duration: 58 mins
DURATION=3480
# PLAN_TYPE=STRUCTURED_WORKOUT
PLAN_TYPE=0
# WORKOUT_TYPE=BIKE
WORKOUT_TYPE=0
DESCRIPTION=Hill climbing is an important part of any rider’s training program. Even sprinters need to be able to get
DESCRIPTION=over the mountains and can be faced with elevation gains of up to 5,000ft and some tough mountain top
DESCRIPTION=finishes. Training for climbs can be difficult, especially if you haven’t got any mountains on your
DESCRIPTION=doorstep. Each climb is different - this session is designed to get the most out of an hour and
DESCRIPTION=simulates some of the challenges your body will face on the road.
=STREAM=
=INTERVAL=
INTERVAL_NAME=WARM UP
# 8 mins @ 55%
PERCENT_FTP_LO=55
PERCENT_FTP_HI=55
MESG_DURATION_SEC>=480?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 15 mins @ 75-90%
# 10 second spike to 125% every 3 mins
REPEAT=4
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
MESG_DURATION_SEC>=180?EXIT
MESG_DURATION_SEC>=170?PERCENT_FTP_LO=125
MESG_DURATION_SEC>=170?PERCENT_FTP_HI=125
=INTERVAL=
INTERVAL_NAME=RECOVERY
# 6 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=360?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 3 mins @ 75-90%
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 3 mins @ 90%-105%
PERCENT_FTP_LO=90
PERCENT_FTP_HI=105
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 3 mins @ 75-90%
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=RECOVERY
# 6 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=360?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 3 mins @ 75-90%
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 3 mins @ 90%-105%
PERCENT_FTP_LO=90
PERCENT_FTP_HI=105
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=CLIMB
# 3 mins @ 75-90%
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
MESG_DURATION_SEC>=180?EXIT
=INTERVAL=
INTERVAL_NAME=COOL DOWN
# 5 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=300?EXIT
=HEADER=
NAME=MIXED SESSION
# Provider: WAHOO
# Duration: 50 mins
DURATION=3000
# PLAN_TYPE=STRUCTURED_WORKOUT
PLAN_TYPE=0
# WORKOUT_TYPE=BIKE
WORKOUT_TYPE=0
DESCRIPTION=Most rides will throw a number of different challenges at you so it’s always good to keep your
DESCRIPTION=body guessing. Indoor training on a KICKR offers a great tool to support this theory as you can
DESCRIPTION=condense different challenges into shorter session. If you have 50mins to kill and you are looking
DESCRIPTION=for a fun session with the objective of improving general fitness, you should give this mixed session a go.
=STREAM=
=INTERVAL=
INTERVAL_NAME=WARM UP
# 10 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=600?EXIT
=INTERVAL=
INTERVAL_NAME=LOW CADENCE
# 5 mins @ 75-90%, CAD 50 RPM
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
CAD_LO=50
CAD_HI=50
MESG_DURATION_SEC>=300?EXIT
=INTERVAL=
INTERVAL_NAME=HIGH CADENCE
# 5 mins @ 75-90%, CAD 100 RPM
PERCENT_FTP_LO=75
PERCENT_FTP_HI=90
CAD_LO=100
CAD_HI=100
MESG_DURATION_SEC>=300?EXIT
=INTERVAL=
INTERVAL_NAME=RECOVERY
# 5 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=300?EXIT
=INTERVAL=
INTERVAL_NAME=OVER-UNDER
# Repeat for total of 6x115, 6x85
REPEAT=5
MESG_DURATION_SEC>=0?EXIT
=SUBINTERVAL=
# 30 sec @ 115%
PERCENT_FTP_LO=115
PERCENT_FTP_HI=115
MESG_DURATION_SEC>=30?EXIT
=SUBINTERVAL=
# 30 sec @ 85%
PERCENT_FTP_LO=85
PERCENT_FTP_HI=85
MESG_DURATION_SEC>=30?EXIT
=INTERVAL=
INTERVAL_NAME=RECOVERY
# 8 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=480?EXIT
=INTERVAL=
INTERVAL_NAME=OVER-UNDER
# Repeat for total of 6x115, 6x85
REPEAT=5
MESG_DURATION_SEC>=0?EXIT
=SUBINTERVAL=
# 30 sec @ 115%
PERCENT_FTP_LO=115
PERCENT_FTP_HI=115
MESG_DURATION_SEC>=30?EXIT
=SUBINTERVAL=
# 30 sec @ 85%
PERCENT_FTP_LO=85
PERCENT_FTP_HI=85
MESG_DURATION_SEC>=30?EXIT
=INTERVAL=
INTERVAL_NAME=COOL DOWN
# 5 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=300?EXIT
=HEADER=
NAME=SPRINTING SESSION
# Provider: WAHOO
# Duration: 38 mins
DURATION=2280
# PLAN_TYPE=STRUCTURED_WORKOUT
PLAN_TYPE=0
# WORKOUT_TYPE=BIKE
WORKOUT_TYPE=0
DESCRIPTION=Typically, sprinters have the ability to output an impressive amount of power over
DESCRIPTION=short bursts which enables them to hit the highest speeds at the most crucial time
DESCRIPTION=during a race. Training for this can be both fun and challenging at the same time,
DESCRIPTION=and without a coached training plan, KICKR training can be a great way to help
DESCRIPTION=condition your body to hit those top speeds. This session is designed with cadence
DESCRIPTION=and resistance in mind and focuses on short bursts of effort to maximize the amount
DESCRIPTION=of power generated. Make the most of the recovery time, but try to keep a consistent
DESCRIPTION=pace and aim to increase your recovery pace over time to improve performance.
=STREAM=
=INTERVAL=
INTERVAL_NAME=WARM UP
#10 mins @ 45%
PERCENT_FTP_LO=45
PERCENT_FTP_HI=45
MESG_DURATION_SEC>=600?EXIT
=INTERVAL=
MESG_DURATION_SEC>=0?EXIT
REPEAT=5
# REPEAT 5 MORE TIMES - TOTAL 6 Sprint, 6 recovery
=SUBINTERVAL=
INTERVAL_NAME=LOW CADENCE SPRINT IN SADDLE
# 10 sec @ 150% FTP, CAD 50 RPM
PERCENT_FTP_LO=150
PERCENT_FTP_HI=150
CAD_LO=50
CAD_HI=50
MESG_DURATION_SEC>=10?EXIT
=SUBINTERVAL=
INTERVAL_NAME=RECOVERY
# 1min50 @ 55%
PERCENT_FTP_LO=55
PERCENT_FTP_HI=55
MESG_DURATION_SEC>=110?EXIT
=INTERVAL=
MESG_DURATION_SEC>=0?EXIT
REPEAT=5
# REPEAT 5 MORE TIMES - TOTAL 6 Sprint, 6 recovery
=SUBINTERVAL=
INTERVAL_NAME=SPRINT OUT OF SADDLE
# 10 sec @ level mode, CAD 120-130 RPM
CAD_LO=120
CAD_HI=130
LEVEL=3
PERCENT_FTP_LO=160
PERCENT_FTP_HI=160
MESG_DURATION_SEC>=10?EXIT
=SUBINTERVAL=
INTERVAL_NAME=RECOVERY
# 1min50 @ 55%
PERCENT_FTP_LO=55
PERCENT_FTP_HI=55
LEVEL=-1
MESG_DURATION_SEC>=110?EXIT
=INTERVAL=
INTERVAL_NAME=COOL DOWN
# 4 mins @ 40%
PERCENT_FTP_LO=40
PERCENT_FTP_HI=40
MESG_DURATION_SEC>=240?EXIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment