Menu

Search toolsChangelog

to move to openDescribe the problem, not the tool

Pomodoro timer and session planner

A focus timer that runs pomodoros and breaks in sequence, and publishes the whole plan before it starts: every interval, the clock time each one begins, how much of the session is work, and what time you finish. It runs in this browser tab and keeps nothing.

Focus — interval 1 of 15

25:00

How long a single stretch of focused work runs. Twenty-five minutes is the length the technique was written around.

The break after every pomodoro except the ones that earn a long break.

The longer rest at the end of a set. Cirillo's own range is fifteen to thirty minutes.

How many stretches of focus you are planning for, across the whole session.

A long break replaces the short one at the end of each set of this many.

A 24-hour clock time such as 09:00, or 9:00 am. Every clock time on this page is counted from it.

Time spent focusing, in minutes
200
Pomodoros only. Breaks are counted separately because they are not work.
Time on breaks, in minutes
45
Whole session, in minutes
245
Intervals the timer runs
15
Long breaks
1
Finishes at
13:05

Interval by interval

1Focus2509:0025
2Short break509:2530
3Focus2509:3055
4Short break509:5560
5Focus2510:0085
6Short break510:2590
7Focus2510:30115
8Long break1510:55130
9Focus2511:10155
10Short break511:35160
11Focus2511:40185
12Short break512:05190
13Focus2512:10215
14Short break512:35220
15Focus2512:40245
The shape of a session
Chart type for “The shape of a session”
0 5 10 15 20 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 5 10 15 20 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 5 10 15 20 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 5 10 15 20 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 5 10 15 20 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 5 10 15 20 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

One bar per interval. The tall bars are pomodoros, the short ones between them are breaks, and the middling one is the long break.

How it works

What this works out

A pomodoro session is not a timer, it is a sequence: work, break, work, break, and a longer break at the end of each set. The question people actually have is what that sequence costs — how much of the afternoon it takes, how much of it is work rather than rest, and what time it puts you at the other end.

That is arithmetic, and it is easy to get wrong in the direction that matters. Eight pomodoros sounds like three hours and twenty minutes of work, and it is, but it occupies four hours and five minutes of the day. This publishes the whole plan before the first interval starts, so the collision with the meeting at one o’clock is visible now rather than at one o’clock.

The method

Three decisions in the formula are worth stating, because a reasonable person would guess at least one of them the other way.

The break belongs after the pomodoro, and the last one has none. Breaks are counted between pomodoros, so N pomodoros give N - 1 breaks and 2N - 1 intervals in total. Scheduling a break after the final pomodoro would add time to the session that nobody spends in it.

The long break replaces the short one. At the end of a set — every R-th pomodoro — the break that would have been short is long instead. It is not appended to a short break, so a set of four costs one long break, not one of each. With N = 8 and R = 4 the long break falls after the fourth pomodoro and not after the eighth, because the eighth is the last one and gets no break at all.

Clock times are integer arithmetic, not dates. Minutes since midnight, added, then divided by 1,440 for the day and the remainder for the face. Parsing 09:00 into a Date would attach it to today, in the host timezone, with whatever daylight-saving transition that day happens to carry — three ways for the same input to produce two different answers on a page whose whole claim is that the arithmetic is checkable. A session that runs past midnight is labelled (next day) rather than being wrapped silently, because five past one tonight and five past one tomorrow morning are not the same answer.

The cue at the end of each interval is a short tone synthesised with the Web Audio API rather than a sound file, so nothing is downloaded and nothing is requested when it plays. The countdown reads the clock rather than counting its own ticks, which is why a throttled background tab delays when the end of an interval is noticed but does not make the timer slow.

Before you read on

Eight pomodoros, with a long break every fourth. How many long breaks does the session contain?

  • Two sets, but only one of them is followed by anything.

  • Yes: after the fourth. The eighth is the last one and gets no break at all.

  • The long break replaces the short one rather than being added to it — and after the eighth there is neither.

One, after the fourth pomodoro. Breaks are counted between pomodoros, so eight give seven breaks and fifteen intervals in total; of those seven, floor(7 / 4) = 1 is long. Scheduling a break after the final pomodoro would add fifteen minutes to a session nobody spends in it. Both halves of that catch people out — a reasonable person would guess at least one of them the other way.

A 245-minute session: eight pomodoros, seven breaks, one of them long.
  • Focus200
  • Break45

A worked example

Twenty-five-minute pomodoros, five-minute short breaks, a fifteen-minute long break, sets of four, eight pomodoros, starting at 09:00.

 1  Focus         25 min   09:00    25 elapsed
 2  Short break    5 min   09:25    30
 3  Focus         25 min   09:30    55
 4  Short break    5 min   09:55    60
 5  Focus         25 min   10:00    85
 6  Short break    5 min   10:25    90
 7  Focus         25 min   10:30   115
 8  Long break    15 min   10:55   130
 9  Focus         25 min   11:10   155
10  Short break    5 min   11:35   160
11  Focus         25 min   11:40   185
12  Short break    5 min   12:05   190
13  Focus         25 min   12:10   215
14  Short break    5 min   12:35   220
15  Focus         25 min   12:40   245

Checked against the closed form: seven breaks, of which floor(7 / 4) = 1 is long, so 6 x 5 + 1 x 15 = 45 minutes of break against 8 x 25 = 200 minutes of focus. The session is 245 minutes and finishes at 09:00 + 4h 05m = 13:05.

These are the same numbers asserted in this tool’s test file, so if the formula ever changes without this page changing with it, the build fails.

What it does not do

It does not model the session you will actually have. It assumes no interruption, no pomodoro abandoned halfway, no break that runs long, and no task that finishes early — and every one of those moves the finish time later except the last. Cirillo’s own method spends as much attention on recording interruptions as on the timer, and none of that is here.

It does not know about your calendar, so it will happily plan a session straight through a meeting. It keeps no history: close the tab and the plan and the countdown are both gone, because there is nowhere for them to be kept. And it takes no position on whether twenty-five minutes is the right length for you — that number comes from the technique as published, not from anything measured about your work.

The formula

Given
  F  minutes in one pomodoro
  S  minutes in a short break
  L  minutes in a long break
  N  pomodoros in the session
  R  pomodoros in a set

the session is 2N - 1 intervals:

  interval 2k - 1  =  pomodoro k                  for k = 1 … N
  interval 2k      =  the break after pomodoro k  for k = 1 … N - 1
                        long   when k mod R = 0
                        short  otherwise

There is no break after pomodoro N.

  longBreaks  = floor((N - 1) / R)
  shortBreaks = (N - 1) - longBreaks

  focusTime = N x F
  breakTime = shortBreaks x S + longBreaks x L
  totalTime = focusTime + breakTime

Clock times are whole minutes since midnight:

  start     = 60 x hour + minute
  finish    = start + totalTime
  clockFace = finish mod 1440
  daysLater = floor(finish / 1440)

What it assumes

  • No break is scheduled after the final pomodoro, because the session is over. A plan that padded the end would overstate the finish time by five to thirty minutes every time.
  • A long break replaces the short break at the end of a set. It is not added to it, so a set of four costs one long break rather than a short break and a long one.
  • Every interval is a whole number of minutes. The countdown itself runs in seconds, but a plan cannot express a ninety-second break.
  • The plan assumes nothing is paused, skipped or overrun. Every interruption in a real session pushes the finish time later and none of them pull it earlier, so the figure here is the earliest you will finish rather than the likeliest.
  • Clock times are arithmetic on minutes since midnight, with no timezone and no daylight-saving transition. A session that straddles a clock change will finish an hour away from the time shown.

Common questions

Why is there no break after the last pomodoro?

Because the session has ended, and a break you are not going to take is not time you have spent. Counting one would make every finish time on this page five to thirty minutes too late. If you plan to rest afterwards anyway, add the rest yourself — it is not part of the work.

Why is my session longer than the pomodoros add up to?

The breaks. Eight pomodoros of twenty-five minutes is 200 minutes of work, but the seven breaks between them add another 45, so the session occupies 245 minutes — a little over four hours — for three hours and twenty minutes of focus. That gap is the number most plans get wrong.

Does the timer keep running accurately if I switch tabs?

The remaining time is worked out from the clock rather than by counting ticks, so a background tab cannot make the timer drift — whenever you look at it, the figure shown is the true time left, and coming back to the tab corrects the display within a quarter of a second. What a background tab does delay is the moment the end of an interval is noticed. The HTML Standard already clamps nested timers to at least four milliseconds, and browsers go a great deal further to save power: Chrome runs timers in a tab that has been hidden and silent for five minutes only about once a minute. So the cue can arrive late — a second in a tab you just switched away from, up to a minute in one you left alone — even though the countdown behind it is never wrong.

Is anything sent anywhere?

No. The plan is arithmetic done in this tab and the cue is a tone synthesised by the browser, so there is no audio file to fetch and no figure to report. There is no server to send anything to.

Can I use fifty minutes instead of twenty-five?

Yes. Every length is a setting, up to two hours for a pomodoro. Twenty-five is the length the technique was written around rather than a limit, and 52/17 and 50/10 are both common. The set size is a setting too, so you can have a long break after every second pomodoro or after every twelfth.

Why does the plan show a time of day at all?

Because "how long is this" and "when am I done" are different questions and people ask the second one. Give it the time you are starting and every interval gets a clock time, which is what makes it possible to see that a session collides with a meeting before you commit to it.

Sources