Examples¶
This page showcases real-world examples of workouts represented in the Structured Workout Format.
Basic Examples¶
Simple Steady-State Workout¶
A basic 30-minute steady ride at moderate intensity:
{
"title": "Easy 30-Minute Ride",
"description": "Comfortable aerobic pace",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 1800
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.65,
"parameter": "FTP"
}
}
}
]
}
Basic Interval Session¶
4x4 minute intervals with 2-minute recovery:
{
"title": "4x4 Threshold Intervals",
"description": "Four 4-minute efforts at threshold power",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 900
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 4
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 240
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.95,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 120
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.5,
"parameter": "FTP"
}
}
}
]
}
]
},
{
"type": "section",
"name": "cool down",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 600
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.5,
"parameter": "FTP"
}
}
}
]
}
]
}
Intermediate Examples¶
Progressive Intervals with Ramps¶
Intervals that build in intensity:
{
"title": "Progressive Build Intervals",
"description": "3x8 minute intervals with progressive power",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 1200
}
},
"intensity": {
"type": "ramp",
"quantity": "power",
"start": {
"reference": "parameter",
"value": 0.5,
"parameter": "FTP"
},
"end": {
"reference": "parameter",
"value": 0.7,
"parameter": "FTP"
}
}
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 3
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 480
}
},
"intensity": {
"type": "ramp",
"quantity": "power",
"start": {
"reference": "parameter",
"value": 0.75,
"parameter": "FTP"
},
"end": {
"reference": "parameter",
"value": 1.05,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 240
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
}
]
}
]
}
]
}
Range-Based Training¶
Using power ranges instead of fixed targets:
{
"title": "Sweet Spot Range Session",
"description": "Maintain power within sweet spot range",
"content": [
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 3
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 1200
}
},
"intensity": {
"type": "range",
"quantity": "power",
"min": {
"reference": "parameter",
"value": 0.84,
"parameter": "FTP"
},
"max": {
"reference": "parameter",
"value": 0.97,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 300
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
}
]
}
]
}
]
}
Advanced Examples¶
Complex Pyramid Session¶
A workout with nested sections and varying intervals:
{
"title": "Power Pyramid",
"description": "Complex pyramid structure with multiple intensity zones",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 600
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
},
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 3
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 60
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.9,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 120
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
}
]
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "instruction",
"text": "Focus on smooth power delivery throughout the pyramid"
},
{
"type": "section",
"name": "pyramid up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 180
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.85,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 120
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 240
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.9,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 120
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 300
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.95,
"parameter": "FTP"
}
}
}
]
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 300
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
},
{
"type": "section",
"name": "pyramid down",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 240
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.9,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 120
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 180
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.85,
"parameter": "FTP"
}
}
}
]
}
]
}
]
}
Running Workout with Speed Targets¶
A running workout using speed instead of power:
{
"title": "5K Pace Intervals",
"description": "Running intervals at 5K race pace",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 900
}
},
"intensity": {
"type": "constant",
"quantity": "speed",
"value": {
"reference": "absolute",
"value": 3.0
}
}
},
{
"type": "instruction",
"text": "Easy jog, focus on warming up legs and getting ready"
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 6
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "distance",
"value": {
"reference": "absolute",
"value": 800
}
},
"intensity": {
"type": "range",
"quantity": "speed",
"min": {
"reference": "parameter",
"value": 0.98,
"parameter": "5K_PACE"
},
"max": {
"reference": "parameter",
"value": 1.02,
"parameter": "5K_PACE"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 120
}
},
"intensity": {
"type": "constant",
"quantity": "speed",
"value": {
"reference": "absolute",
"value": 2.5
}
}
}
]
}
]
},
{
"type": "section",
"name": "cool down",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 600
}
},
"intensity": {
"type": "ramp",
"quantity": "speed",
"start": {
"reference": "absolute",
"value": 2.8
},
"end": {
"reference": "absolute",
"value": 2.0
}
}
}
]
}
]
}
Flexible Workout with Options¶
A workout that provides flexibility in execution:
{
"title": "Flexible Threshold Session",
"description": "Threshold work with flexible interval count based on feel",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "range",
"quantity": "duration",
"min": {
"reference": "absolute",
"value": 900
},
"max": {
"reference": "absolute",
"value": 1200
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.65,
"parameter": "FTP"
}
}
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "instruction",
"text": "Complete 4-6 intervals based on how you feel today"
},
{
"type": "repeat",
"count": {
"type": "range",
"quantity": "number",
"min": {
"reference": "absolute",
"value": 4
},
"max": {
"reference": "absolute",
"value": 6
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 480
}
},
"intensity": {
"type": "range",
"quantity": "power",
"min": {
"reference": "parameter",
"value": 0.93,
"parameter": "FTP"
},
"max": {
"reference": "parameter",
"value": 0.97,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "range",
"quantity": "duration",
"min": {
"reference": "absolute",
"value": 180
},
"max": {
"reference": "absolute",
"value": 240
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "FTP"
}
}
}
]
}
]
}
]
}
Sport-Specific Examples¶
Swimming Workout¶
{
"title": "1500m Swim Set",
"description": "Distance-based swimming workout",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "distance",
"value": {
"reference": "absolute",
"value": 400
}
},
"intensity": {
"type": "constant",
"quantity": "speed",
"value": {
"reference": "absolute",
"value": 1.2
}
}
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 6
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "distance",
"value": {
"reference": "absolute",
"value": 100
}
},
"intensity": {
"type": "constant",
"quantity": "speed",
"value": {
"reference": "parameter",
"value": 1.0,
"parameter": "T_PACE"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 20
}
},
"intensity": {
"type": "constant",
"quantity": "speed",
"value": {
"reference": "absolute",
"value": 0
}
}
}
]
}
]
}
]
}
Open-Ended Long Run¶
{
"title": "Long Run",
"description": "Aerobic base building run with flexible duration",
"content": [
{
"type": "instruction",
"text": "Run for 90-120 minutes at comfortable aerobic pace"
},
{
"type": "interval",
"volume": {
"type": "range",
"quantity": "duration",
"min": {
"reference": "absolute",
"value": 5400
},
"max": {
"reference": "absolute",
"value": 7200
}
},
"intensity": {
"type": "range",
"quantity": "speed",
"min": {
"reference": "parameter",
"value": 0.95,
"parameter": "AEROBIC_PACE"
},
"max": {
"reference": "parameter",
"value": 1.05,
"parameter": "AEROBIC_PACE"
}
}
}
]
}
Templates with Variables¶
FTP Test Workout Template¶
{
"title": "20-Minute FTP Test",
"description": "Standard FTP test protocol - requires ESTIMATED_FTP parameter",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 1200
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.65,
"parameter": "ESTIMATED_FTP"
}
}
},
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 3
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 60
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 1.0,
"parameter": "ESTIMATED_FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 60
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "ESTIMATED_FTP"
}
}
}
]
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "instruction",
"text": "5-minute all-out effort - establish baseline"
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 300
}
},
"intensity": {
"type": "range",
"quantity": "power",
"min": {
"reference": "absolute",
"value": 0
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 600
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "parameter",
"value": 0.6,
"parameter": "ESTIMATED_FTP"
}
}
},
{
"type": "instruction",
"text": "20-minute maximal sustainable effort - this is your FTP test!"
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 1200
}
},
"intensity": {
"type": "range",
"quantity": "power",
"min": {
"reference": "absolute",
"value": 0
}
}
}
]
}
]
}
TTE (Time-to-Exhaustion) Examples¶
TTE-Based Interval Training¶
Using time-to-exhaustion references for more physiologically meaningful targets:
{
"title": "TTE Interval Session",
"description": "Intervals based on sustainable durations",
"content": [
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 4
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 300
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "tte",
"value": 600
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 180
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "tte",
"value": 3600
}
}
}
]
}
]
}
]
}
Mixed Reference Types¶
Combining different reference types in one workout:
{
"title": "Mixed Reference Workout",
"description": "Demonstrates absolute, parameter, and TTE references",
"content": [
{
"type": "section",
"name": "warm up",
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 600
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "absolute",
"value": 150
}
}
}
]
},
{
"type": "section",
"name": "main set",
"content": [
{
"type": "repeat",
"count": {
"type": "constant",
"quantity": "number",
"value": {
"reference": "absolute",
"value": 3
}
},
"content": [
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 240
}
},
"intensity": {
"type": "range",
"quantity": "power",
"min": {
"reference": "tte",
"value": 1200
},
"max": {
"reference": "parameter",
"value": 0.95,
"parameter": "FTP"
}
}
},
{
"type": "interval",
"volume": {
"type": "constant",
"quantity": "duration",
"value": {
"reference": "absolute",
"value": 180
}
},
"intensity": {
"type": "constant",
"quantity": "power",
"value": {
"reference": "absolute",
"value": 120
}
}
}
]
}
]
}
]
}
These examples demonstrate the flexibility and power of the Structured Workout Format. From simple steady-state efforts to complex multi-phase sessions with various reference types, SWF can represent any workout structure while maintaining clarity and precision.
Next Steps¶
- Python Library - Generate these workouts programmatically
- Compatibility - Convert these examples to other formats
- Format Specification - Understand the technical details