# Pomodoro Timer

> 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.

Use it: https://tessalor.com/en/time/pomodoro-timer

This tool runs entirely in the browser. Nothing entered into it is uploaded.

## 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)
```

## Assumptions

- 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.

## Inputs

| Name | Label | Type | Default | Range |
| --- | --- | --- | --- | --- |
| `focusMinutes` | One pomodoro | integer | 25 | 1 to 120 |
| `shortBreakMinutes` | Short break | integer | 5 | 1 to 60 |
| `longBreakMinutes` | Long break | integer | 15 | 1 to 120 |
| `rounds` | Pomodoros to run | integer | 8 | 1 to 48 |
| `roundsBeforeLongBreak` | Pomodoros in a set | integer | 4 | 1 to 12 |
| `startAt` | Starting at | text | 09:00 |  |

## Outputs

- `focusTime` — Time spent focusing, in minutes (integer), primary
- `breakTime` — Time on breaks, in minutes (integer)
- `totalTime` — Whole session, in minutes (integer)
- `intervals` — Intervals the timer runs (integer)
- `longBreaks` — Long breaks (integer)
- `finishesAt` — Finishes at (time)

## 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

- [Pomodoro Technique — the technique's own site](https://www.pomodorotechnique.com/) — Francesco Cirillo - FZCO, applies to 2026. Retrieved 2026-07-30.
- [The Pomodoro Technique, the book the method is defined in](https://www.pomodorotechnique.com/pomodoro-book/) — Francesco Cirillo - FZCO, applies to 2026. Retrieved 2026-07-30.
- [HTML Standard, section 8.7 Timers](https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html) — WHATWG, applies to Living Standard, 2026. Retrieved 2026-07-30.
- [Web Audio API 1.1](https://www.w3.org/TR/webaudio/) — W3C, applies to First Public Working Draft, 5 November 2024. Retrieved 2026-07-30.

---

Estimate, not advice. See https://tessalor.com/en/disclaimer.
Machine-readable catalogue: https://tessalor.com/api/tools.json
