Created
December 21, 2023 18:10
-
-
Save Intyre/f096ea68f159a22937d6fc2f3b9d9cf3 to your computer and use it in GitHub Desktop.
Wahoo workout .plan files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=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