Guide
Interval timer rounds and phases
How a session of work and rest rounds compiles into a flat plan with cumulative offsets, and how the timer answers where it is with one subtraction.
Five settings, one structure
The interval timer takes five settings and nothing else: a prepare length, a work length, a rest length, a cool-down length and a number of rounds. The defaults, which you can change in the session structure panel before pressing start, are 10 seconds to get ready, 40 seconds of work, 20 seconds of rest, 1 minute of cool-down and 8 rounds. Every figure in this guide is computed by the engine when the site is built, from those defaults or from the fixed inputs named where they are used.
A session is a lead-in, then a run of rounds, then a cool-down. Each round is a work step followed by a rest step, except the last round, whose rest is dropped: as the engine's own comment puts it, a trailing rest with nothing left to recover for is dead time. Prepare and cool-down appear only when their length is above zero.
The engine reports two totals for a structure. The session length is the end offset of the last step; the working time is the work length multiplied by the number of rounds, ignoring prepare, rest and cool-down. For the defaults those are 8 minutes 50 seconds and 5 minutes 20 seconds, and the tool prints both beneath the settings.
Compiling the plan
Before the clock starts, the settings are compiled into a flat plan: an ordered list of steps, each with a phase, a round number for work and rest steps, a length, and two offsets — the step's start and its end, both measured from the start of the session. The offsets are cumulative: each step starts where the previous one ended. The default structure compiles to 17 steps — one get ready, 8 work, 7 rest and one cool down — and the full list is below.
| Step | Phase | Length | Starts at | Ends at |
|---|---|---|---|---|
| 1 | Get ready | 00:10 | 00:00 | 00:10 |
| 2 | Work · round 1 of 8 | 00:40 | 00:10 | 00:50 |
| 3 | Rest · round 1 of 8 | 00:20 | 00:50 | 01:10 |
| 4 | Work · round 2 of 8 | 00:40 | 01:10 | 01:50 |
| 5 | Rest · round 2 of 8 | 00:20 | 01:50 | 02:10 |
| 6 | Work · round 3 of 8 | 00:40 | 02:10 | 02:50 |
| 7 | Rest · round 3 of 8 | 00:20 | 02:50 | 03:10 |
| 8 | Work · round 4 of 8 | 00:40 | 03:10 | 03:50 |
| 9 | Rest · round 4 of 8 | 00:20 | 03:50 | 04:10 |
| 10 | Work · round 5 of 8 | 00:40 | 04:10 | 04:50 |
| 11 | Rest · round 5 of 8 | 00:20 | 04:50 | 05:10 |
| 12 | Work · round 6 of 8 | 00:40 | 05:10 | 05:50 |
| 13 | Rest · round 6 of 8 | 00:20 | 05:50 | 06:10 |
| 14 | Work · round 7 of 8 | 00:40 | 06:10 | 06:50 |
| 15 | Rest · round 7 of 8 | 00:20 | 06:50 | 07:10 |
| 16 | Work · round 8 of 8 | 00:40 | 07:10 | 07:50 |
| 17 | Cool down | 01:00 | 07:50 | 08:50 |
There are 7 rest steps for 8 rounds, because the rest that would follow round 8 is never compiled. And the end offset of the final step, 08:50, is the session length; there is no separate total to keep in step with the plan.
The same compiler on two other structures, both fixed inputs for this page. With no lead-in, no cool-down and 3 rounds at the default lengths, the plan is Work, Rest, Work, Rest, Work — 5 steps, 02:40 end to end. With the default lengths but rest set to zero, the plan is Get ready, Work, Work, Work, Work, Work, Work, Work, Work, Cool down — the work steps sit back to back, 10 steps in all, 06:30 end to end.
Cumulative offsets and the start epoch
When you press start, the timer records one number: the instant it started, an epoch anchor. It does not run one countdown per step. On every frame it works out the elapsed time as now minus that anchor, then asks the plan where that elapsed time falls — the first step whose end offset is still ahead of it. The lookup returns the step, the time into it, the time left in it, and whether the plan is complete. Because the offsets were fixed when the plan was compiled, a boundary sits at the same instant whether the frame that notices it arrives on time or late. That is what makes an eight-round session end exactly where the arithmetic says it should rather than a few hundred milliseconds late.
The default plan read at six fixed elapsed times; the engine computed everything but the elapsed column.
| Elapsed | Position | Into step | Left in step | Rounds done | Complete |
|---|---|---|---|---|---|
| 00:05 | Get ready | 00:05 | 00:05 | 0 | no |
| 00:10 | Work · round 1 of 8 | 00:00 | 00:40 | 0 | no |
| 02:00 | Rest · round 2 of 8 | 00:10 | 00:10 | 2 | no |
| 04:30 | Work · round 5 of 8 | 00:20 | 00:20 | 4 | no |
| 07:50 | Cool down | 00:00 | 01:00 | 8 | no |
| 09:30 | Cool down | 01:00 | 00:00 | 8 | yes |
At 00:10 elapsed, exactly on the boundary between the lead-in and the first round, the position is already Work · round 1 of 8 with 00:00 into it: a boundary belongs to the step it begins, not the step it ends. Past the end of the plan, at 09:30, the engine reports the final step with 00:00 left and marks the session complete; the tool then holds the clock on the finish line.
How to read the stage
The large number on the stage is the time left in the current step, not in the session. Above it is the phase label. Beneath it a line reads Round n of N during work and rest steps, and k of N rounds done during the lead-in and the cool-down, where k is the number of work steps whose end offset has passed. A progress bar shows elapsed time against the session length, and a quieter line underneath gives the time left in the whole session.
Take the 02:00 reading from the table above. The readout shows 00:10 under the label Rest; the line beneath reads Round 2 of 8; the bar is 23% full; the quiet line reads 06:50 left in the whole session; and while the tab is in the background its title is 00:10 · Rest. Before you press start, the stage shows the first step at its full length — 00:10 under Get ready for the defaults — and 0 of 8 rounds done.
Seconds round up. A fresh work step reads 00:40, and a few hundred milliseconds after it begins it still reads 00:40, because the display only moves once a whole second of the step has gone. The accuracy guide covers both rules for every timer.
Pause, resume and reload
A pause stores the elapsed total and forgets the anchor. A resume sets a new anchor far enough in the past that now minus anchor equals the stored total, and the clock continues from there. Run through the engine from the page's fixed start instant: pause 2 minutes in, leave the timer paused for 3 minutes, and the stored total still reads 02:00 at the moment you resume. The new anchor is set 2 minutes before the resume instant. After a further 1 minute the elapsed time is 03:00 and the position is Rest · round 3 of 8 with 00:10 left in the step. The pause moved no boundary; only the elapsed time stopped growing.
Running state is saved to this browser's storage under the key wrldclock.timer.interval.v1 as epochs, never as seconds left — the anchor while running, the elapsed total while paused — with the settings and the instant it was saved. A reload resumes the session where the wall clock says it should be, including a reload after the phone has been in a pocket. An envelope older than 12 hours is discarded and the timer opens idle. A session in progress outranks a preset link; an idle or finished one steps aside for it.
Boundaries crossed between ticks
The engine can also list the step boundaries crossed between two elapsed readings, in order. Between 00:05 and 02:30 elapsed on the default plan, the steps whose ends were crossed are Get ready; Work · round 1 of 8; Rest · round 1 of 8; Work · round 2 of 8; Rest · round 2 of 8 — 5 boundaries. The tool decides on each tick whether the step index changed and raises the cue for the new step from the plan rather than from a countdown of its own, so a late tick cannot shift a boundary, only report it late.
Described here, not simulated: the audible cue and the written announcement for a step are raised when a tick runs. Switch tabs, lock the phone, come back — the session is where it should be, and a reload resumes it rather than restarting it. Audio cues may be suppressed while the screen is locked, so the timer requests a screen wake lock where the browser supports one. What the anchor guarantees is narrower and exact: whenever a tick does run, the display is right for that instant.
Settings the engine will not take as given
Settings are normalised before they are compiled; the limits live in the engine, not only in the form. With fixed inputs: 0 rounds becomes 1; 500 rounds becomes 99; a work length of zero becomes 1 second, because a work step must have length; a work length of 3 hours is held at 1 hour, the ceiling every phase shares; a negative rest becomes 0 seconds; and a work length the engine cannot read as a number falls back to the default, 40 seconds.
The tool's own link for the defaults is ?prepare=10s&work=40s&rest=20s&rounds=8&cooldown=1m; in a link the interval timer reads a bare number as seconds, so 40 means 40 seconds, and a link that asks for the impossible still opens a working timer with defaults standing in for whatever could not be read. The shareable links guide sets out every token form.
Common misreadings
- The readout is step time, not session time; the quiet line under the progress bar carries the session figure.
- The round line and the rounds-done count can differ by one. At 00:55 elapsed the position is Rest · round 1 of 8 and 1 round is complete: the line names the round the rest belongs to, while the count moves only when a work step ends.
- The session is shorter than the sum you might do by hand. Prepare plus 8 times work-and-rest plus cool-down is 9 minutes 10 seconds; the compiled plan runs 8 minutes 50 seconds. The difference is 20 seconds, the rest after the last round, which is never compiled.
- A zero-length phase is not an empty step: it is left out of the plan, and the step count falls accordingly.
- The progress bar tracks the session, not the step: it fills once, from the first step to the last.
Questions
- Why is the big number not the time left in the session?
- The readout is the time left in the current step, because that is what a phase change depends on. The time left in the whole session is on the quieter line under the progress bar. 02:00 into the default session the two read 00:10 and 06:50.
- Why is there no rest after the last round?
- Because it would be dead time. The compiler drops it, so the default session runs 8 minutes 50 seconds rather than 9 minutes 10 seconds, and the session moves straight from the final work step to the cool-down, or ends there if the cool-down is zero.
- What happens when the elapsed time passes the end of the plan?
- The engine reports the final step with nothing left and marks the session complete, and the tool holds the clock on the finish line. In the default plan that is after 08:50; a reading at 09:30 shows Cool down with 00:00 left and 8 of 8 rounds done.
- Can a slow or late tick move a phase boundary?
- No. Every boundary is an offset fixed when the plan was compiled, and the position is found by subtracting the start epoch from now and looking that elapsed time up in the plan. A late tick reports a boundary late; it does not move it.
- What if I set rest, prepare or cool-down to zero?
- Prepare and cool-down appear only when their length is above zero, and rest steps are only compiled when rest is above zero. With the default lengths and rest at zero the plan is Get ready, Work, Work, Work, Work, Work, Work, Work, Work, Cool down, 10 steps running 06:30. Work cannot be zero: the engine raises it to 1 second.
- How many rounds and how long a phase can I set?
- Rounds are held between 1 and 99, and each phase is held at 1 hour at most. Asking for 500 rounds gives 99, and asking for a work step of 3 hours gives 1 hour; the settings panel enforces the same limits.
Everything here runs in your browser: the figures above were computed from the engine when the site was built, and the timers themselves run on this device's own clock. The methodology page describes the whole engine, and the guides index lists the other guides.