← Home

Workout Builder

Create custom interval timers with our powerful syntax

Build Your Workout

Type your interval definition below and see a live preview

p = Prepare
wu = Warmup
w = Work
r = Rest
cd = Cooldown

Start typing to see a preview...

Try: 10(30w30r)

BPM

Syntax Guide

Segment Types

p = Prepare
wu = Warmup
w = Work
r = Rest
cd = Cooldown

Time Formats

30w - 30 seconds work
5mw - 5 minutes work
1:30w - 1 minute 30 seconds work

Sequencing

30w+30r - Chain segments with + (optional)
10(30w30r) - Repeat 10 times
3(2(30w15r)60r) - Nested repetitions

Named Segments

Add exercise names to display during the timer instead of generic "WORK" or "REST"

Inline naming:
30w[Squat] - 30s work named "Squat"
8(20w[Burpees]10r) - 8 rounds, all work named "Burpees"
Circuit shorthand:
(30w30r)*[Squat,Bench,Lunges]
↳ Names applied to work segments in order
Full workout example:
5mwu+3((30w30r)*[Squat,Bench,Press])+2mcd
↳ Warmup, 3 sets of named circuit, cooldown

Metronome

Set a metronome pace globally or embed it per-interval in the workout code so it travels with the URL.

Global metronome:
Use the BPM control above — applies to all work segments and is stored as a URL query parameter.
Per-interval BPM:
5mw@43bpm - 5 min work at 43 BPM
30w@24bpm - 30s work at 24 BPM
10(30w@24bpm+30r) - 10 rounds, each work interval at 24 BPM
↳ Per-interval BPM overrides the global metronome for that segment.
Per-interval reps:
15w@8reps - 15s work, 8 reps (BPM calculated from duration)
30w@7reps - 30s work, 7 reps
↳ Useful when you know your rep count for the interval rather than the BPM. BPM = (reps + 1) × 60 ÷ duration in seconds.
Mixed intervals at different paces:
2(5mw@42bpm+10mr)+2(5mw@44bpm+15mr)+(5mw@45bpm)
↳ Progressive pace — each block runs at a different BPM

How It Works

  1. 1
    Define your intervals using the syntax above
  2. 2
    Add to URL: /timer/YOUR_INTERVALS
  3. 3
    Start training! The timer will guide you through each segment with visual and audio cues