Skip to content
I Hate Online Tools

Pomodoro timer

Focus and break cycles with a chime and optional desktop notification.

Runs in this tab. The file stays here.

Focus

25:00

Focus blocks completed: 0

Runs in your browser. State stays on this device. Notifications are optional.

About Pomodoro timer

Pomodoro focus and break timer with configurable lengths, a chime, optional notifications, and progress saved in this browser.

A study timer that drifts when the tab is backgrounded is worse than a kitchen timer. This one stores an end timestamp and recomputes remaining time on each tick, so Chrome’s timer throttling does not invent extra minutes. Default cycle is 25 minutes focus, 5 minutes short break, and a longer break after four focus blocks—all adjustable.

On phase end it plays a short bundled chime and can fire a Notification if you allowed permission on first start. Reloading the page restores phase and remaining time from localStorage so a refresh mid-session does not wipe the block.

This is not a team standup bot and not a cloud habit tracker. Sound and notifications stay on-device. Mute the tab if you are in a quiet library and rely on the on-screen countdown instead.

Edge cases include sleeping the laptop mid-block, changing system clock, and opening two tabs to the same timer. The end timestamp follows wall clock time, so sleep usually resumes correctly when you wake the machine; manually moving the clock can confuse any timer. Two tabs can fight over the same localStorage key—pick one tab and leave it open.

Your focus history is not uploaded. Session counts and remaining time live in localStorage on this origin only. Clearing site data resets the cycle. Notifications, if you enable them, are fired by the browser from local events, not by a push server that knows your study schedule.

How to use Pomodoro timer

  1. 1Set focus, short-break, and long-break lengths if the defaults are wrong.
  2. 2Press start; grant notification permission if you want alerts while the tab is in the background.
  3. 3Work until the chime; pause or reset if you need to interrupt the cycle.

What it won't do

  • Not a team timer or habit analytics product.
  • Chime requires the tab to stay loaded; system mute overrides it.

Common questions

Why use an end timestamp instead of counting down by one each second?

Background tabs get throttled. Comparing Date.now() to a stored end time keeps the remaining display honest after you Alt-Tab away.

Does Pomodoro sync across devices?

No. State is localStorage on this browser only.

Must I allow notifications?

No. The on-page timer and chime still work. Notifications are optional for when the tab is not focused.

What happens if I close the laptop during a focus block?

When you reopen and return to the tab, remaining time is recalculated from the stored end timestamp. If the block should have ended while the lid was closed, you may land straight in break phase.

Related tools

Why this one doesn't upload your file

There is no server to upload to. This page is a static file, and the work happens in your browser using the same graphics and WebAssembly code that renders every other site you visit. Your file is read from disk into memory, processed, and handed back as a download. Once the page has loaded you can disconnect from the network entirely and it keeps working. The longer explanation

Install the app