Tools › Study › Pomodoro timer

Pomodoro timer

Focus for twenty-five minutes, break for five, and let the timer keep the count. It stays accurate while the tab is in the background, tells you the clock time each phase ends at, and keeps today's blocks here rather than behind an account.

  • A refresh does not lose the block: the timer knows when it ends, not how long is left
  • 25/5, 50/10, 52/17, 90/20, or 15/3 when it is that sort of day
  • Today's blocks, minutes and day streak, kept on this device
  • No ads, no music player, no sign-in wall
25 / 525 / 550 / 1052 / 1725:0008:1405:00FOCUSBREAKends14:32
Pick an interval, press start, and take the break when it rings.
25:00
Focus

Ends at —

Interval

What you are working on

Nothing on the list. The timer works without one, and a named task just puts the blocks you spend against it.

    Today

    0focus blocks
    0focus minutes
    0day streak

    How the pomodoro method works

    Work for one block without switching to anything else. When it rings, stop, even mid-sentence, and take the break away from the screen. After four blocks, take a longer one. That is the whole method, and the part people drop is the break, which is the part that makes the next block possible.

    The block is a commitment to a length of time, not to finishing something. That is what makes it work on a task you are avoiding: twenty-five minutes is a bearable amount of anything, and starting is the hard part.

    Why this one stays right in a background tab

    The obvious way to build a timer is to count: a number, decremented once a second. It is wrong twice over. The interval callback runs a little late every time and the error accumulates, and (much worse) browsers throttle background tabs to roughly one timer callback a minute to save battery. A counting timer left behind another window loses most of its ticks and finishes minutes late.

    So nothing here counts. Starting a block records the timestamp it will end at, and the display is that minus the current time. The tab can sleep for twenty minutes and the answer is exactly right when you come back. It is also why a refresh does not lose your block, the end time is what is saved, so reloading picks it up where it was.

    The five intervals, and when each one is right

    25/5 is the original and the one to start with. 50/10 is one deep block instead of two shallow ones, for work with a long warm-up. 52/17 comes from a study of what the most productive people in an office actually did rather than from a theory. 90/20 is a full ultradian cycle, which suits writing and anything that takes a while to get into. 15/3 is for a bad day, or a task you have been putting off, the point is to start.

    Changing the interval mid-block does not move the finish line under you. It takes effect from the next one.

    The finish time, and why it is on the page

    "How long is left" is not usually the question. "Can I finish this before the meeting" is, and answering it from a countdown means adding a duration to the current time in your head while trying to concentrate on something else. The clock time the phase ends at is right there instead.

    The list, and what it is for

    Optional. The timer works perfectly well without one. What a named task adds is a record of where the blocks went, pick a task and the block you are in counts towards it, so at the end of the day the answer to "what did I actually do" is on the page rather than in your memory.

    Estimating how many blocks something will take is also the cheapest planning that works. You will be wrong at first, and then quite quickly you will not be.

    Today's count, and where it is kept

    Blocks, minutes and a day streak, held in this browser on this device. Not in an account, because a focus timer does not need to know who you are, and a streak that lives on somebody's server is a streak that can be taken away.

    The streak counts consecutive days with at least one block, and it does not reset the moment midnight passes, yesterday still counts until you have had a chance to start today. A streak that punishes you for not having begun by 9am is a streak that gets ignored.

    Questions

    Does it keep running if I switch tabs?

    Yes, and accurately. The timer knows the time it ends at rather than counting seconds, so background throttling cannot make it drift.

    What if I refresh the page?

    The block continues. The end time is saved, so reloading picks it up where it was rather than starting over.

    Is my data sent anywhere?

    No. The count and the list are in this browser on this device. There is no account and no server.

    Will it make a sound?

    Yes. Two tones when a block ends, lower ones when a break does, so you can tell them apart without looking. No notification permission is asked for.

    Why is there no music player?

    Because there are better ones, and because a timer that also streams audio is a timer that needs an ad to pay for the streaming.

    Can I change the interval part-way through?

    You can, and it applies from the next block. Moving the finish line during a block would defeat the point of committing to one.

    What happens if I clear my browser data?

    The count and the streak go with it. That is the trade for not having an account.

    Does the day streak break if I miss a day?

    Yes, but not while today is still ahead of you, yesterday keeps the streak alive until you have had a chance to start.

    Next

    The guide that goes with this