Documentation

Intervals.icu Workout Format

Syntax, rules, and examples for writing structured workouts.

Overview

The Intervals.icu workout format is a plain-text syntax that describes steps with duration or distance and intensity targets. It supports cycling (power), running (pace) and heart rate targets, and you can mix modes within a single workout.

Time & Distance

Time

  • h hours: 1h
  • m minutes: 10m, 5m
  • s seconds: 30s, 90s
  • Combined: 1m30
  • Shorthand: 5' (5 min), 30" (30 sec), 1'30"

Distance

  • km: 2km, 10km
  • mi: 1mi, 4.5mi
Note: m means minutes, not meters. Use km or mi for distance steps (e.g., 0.4km instead of 400m).

Intensity

Cycling (Power)

  • Percent of FTP: 75%, 88%, 95-105%
  • Watts: 220w, 200-240w
  • Zones: Z2, Z4

Heart Rate

  • Percent of max: 70% HR, 75-80% HR
  • Percent of threshold: 95% LTHR, 90-95% LTHR
  • Zones: Z2 HR, Z3 HR

Running (Pace)

  • Percent of pace: 78-82% pace
  • Zones: Z2 Pace, Z3 Pace

Ramps

Use ramp for gradual changes (case-insensitive):

- 10m ramp 50%-75%
- 15m ramp 60%-90% 85rpm
- 10m ramp 60-80% pace
Special: freeride marks an ERG-off step, e.g. - 20m freeride

Cadence (Cycling)

- 10m 75% 90rpm
- 5m 88% 70rpm
- 12m 85% 90-100rpm

Repeats

Two forms are supported:

  • In a section header: Main Set 5x
  • Standalone line before a block: 5x
Notes: Nested repeats aren’t officially supported. Only header lines or standalone nx define repeats; occurrences inside descriptive text are ignored.

Text Prompts

  • Any text before the first duration/intensity becomes the step cue.
  • Repeated blocks append k/N to the first step’s text (e.g., Main set 1/6).
- Recovery 30s 50%    # cue: "Recovery"
Main Set 6x
- Low cadence 4m 100%
- 5m 50%

Timed Text Prompts

You can add text prompts that appear at specific times within a workout step. This is useful for in-workout instructions or reminders.

The syntax uses time^ to specify when a message should appear, and <!> to separate the prompts from the rest of the step definition.

# Syntax:
# - [prompt at 0s] [time1]^[prompt1] [time2]^[prompt2]... <!> [duration] [target]

# Example:
- First prompt at 0s 33^ 2nd prompt at 33s <!> 10m ramp 25-75%
Note: The time for prompts is in seconds from the start of the step. The <!> separator is required if you have timed prompts.

Examples

Cycling VO2 Max

Warmup
- 10m 50%-65% 90rpm

Main Set 5x
- 3m 120% 100rpm
- 2m Z1 85rpm

Cooldown
- 8m ramp 50%-40% 80rpm

Running Long Run

Warmup
- 2km 70-75% pace
- 2km 75-78% pace
- 2km 78-82% pace

Main Set 2x
Marathon effort target 4:28-4:32/km.
- 6km 90-92% pace
- 2km 75-80% pace

Cooldown
- 2km 72-76% pace

Distance-based Intervals (Run)

Warmup
- 1mi Z1 HR

Main Set 4x
- 1mi Z4 Pace
- 0.5mi Z1 Pace

Cooldown
- 1mi Z1 Pace

Freeride Block (Bike)

Warmup
- 10m ramp 55-75% 90rpm

Main Set
- 20m freeride
- 5m 70%

Cooldown
- 8m 60%

Intensity Zones Reference

Cycling (% of FTP)

  • Z1 Recovery: < 55%
  • Z2 Endurance: 56–75%
  • Z3 Tempo: 76–90%
  • Z4 Threshold: 91–105%
  • Z5 VO2 Max: 106–120%
  • Z6 Anaerobic: > 120%

Running (% of Pace)

Higher percentages = faster pace.

  • Z1 Recovery: 70–75%
  • Z2 Easy: 76–80%
  • Z3 Tempo: 81–88%
  • Z4 Threshold: 89–95%
  • Z5 VO2 Max: 96–105%
  • Z6 Sprint: > 105%

Parsing Rules

  • Section headers: Lines without - (e.g., Warmup, Main Set 2x).
  • Repeats: Either <Section> nx or a standalone nx line before a block.
  • Steps: Lines starting with -.
  • Sport type: Determined by workout metadata (Run → pace; otherwise power), but steps may use HR explicitly.
  • Intensity: Percentages (%), watts (w), pace, zones (Z), HR (% HR/% LTHR).
  • Ranges: Use a-b (e.g., 85-90%, 200-240w, 70-80% HR).
  • Ramps: ramp a-b (case-insensitive).
  • Free text: Allowed anywhere in a step; everything before the first duration/intensity becomes the cue.

Notes

  • Use blank lines between sections for readability (one is enough).
  • Keywords are case-insensitive (e.g., Ramp vs ramp).
  • Some integrations add “Press lap …” cues for lap-press endings (export feature, not syntax).
Copied to clipboard!