Pomodoro Timer
Run a Pomodoro timer with custom focus, break, and goal settings, then track live phases, ETA, schedules, time mix, and exports.Pomodoro plan
| Metric | Value | Copy |
|---|---|---|
| Phase | {{ phase }} | |
| Round | {{ roundIndex }} | |
| Completed focus | {{ completed_pomos }} | |
| Elapsed (phase) | {{ elapsedDisplay }} | |
| Remaining (phase) | {{ remainingDisplay }} | |
| Ends (local) | {{ current_finish_time_local || '—' }} | |
| Next phase | {{ nextPhaseLabel }} | |
| Goal progress | {{ completed_pomos }} / {{ goal_pomos }} | |
| Goal ETA | {{ goal_eta_local }} |
| # | Phase | Start | Duration (min) | Copy |
|---|---|---|---|---|
| {{ r.idx }} | {{ r.phase }} | {{ r.startLocal }} | {{ r.durationMin }} | |
| No upcoming phases. | ||||
Pomodoro timing gives attention a visible boundary. Instead of asking for an open-ended stretch of concentration, it divides work into focus rounds separated by planned recovery. The familiar rhythm is 25 minutes of focus, a short break, and a longer break after several focus rounds, but the useful habit is broader than one set of numbers: choose a task, protect the interval, stop when the timer ends, and record enough evidence to plan the next round.
The method is useful when work has too many easy exits. Writing, studying, code review, inbox triage, and repetitive admin tasks can all drift when the finish line is vague. A fixed focus round lowers that friction because the next pause is already part of the plan. The break is not a reward tacked on afterward; it is what keeps repeated rounds from becoming one long, unfocused work block.
- Focus round
- A timed work interval aimed at one task or one small task group.
- Short break
- A brief recovery pause between ordinary focus rounds.
- Long break
- A longer reset after a configured number of completed focus rounds.
- Goal rounds
- A planned count of focus rounds used to estimate whether the session fits the available time.
Changing the timing changes the work contract. Shorter rounds can help with low-energy chores, high-interruption environments, or tasks that need frequent decisions. Longer rounds can suit reading, debugging, exam review, and creative work where the cost of restarting is high. The break lengths matter just as much because a schedule with impressive focus minutes can become unusable if recovery time is too short to stand up, reset attention, or prepare the next task.
A completed round is only a timing record. It says time was allocated and the phase was advanced; it does not prove that deep work happened, that the task was scoped correctly, or that a deliverable is finished. Pairing each round with a short task note makes the record more useful because future estimates can compare both time and outcome.
The common mistake is to treat Pomodoro timing as a productivity score. A high number of rounds can still hide task switching, vague goals, or skipped breaks. The rhythm works best as a planning and attention aid: choose a small enough target, protect the focus interval, respect the break, and use the count to learn how long similar work really takes.
How to Use This Tool:
Set the timing plan first, then run the live session. The number boxes are useful when you know the exact rhythm; the sliders are better for comparing several plans without retyping values.
- Enter Focus length, Short break, Long break, and Long break every. The summary should show the focus minutes and break cadence you intend to run.
- Set Goal rounds to 0 for an open session, or enter a target when you want Goal progress and Goal ETA.
- Use Countdown before start when you want a short setup buffer before the first focus phase.
- Open Advanced to choose whether the next phase starts automatically, whether a tick plays each second, and how phase-change cues behave.
- Check Pomodoro Schedule if the session must fit before a meeting, class, commute, or hard stop. Use it as a planning projection, not a completed-history log.
- Press Start. Use Pause to hold the current phase, Skip to move to the next phase, and Reset to return to Idle and clear the completed focus count.
- Review Session Summary, Pomodoro Schedule, Pomodoro Time Mix, or JSON when the live state matches what you want to copy, download, or record.
Starting a run captures the current focus, break, countdown, and long-break-frequency values for that run. If you edit timing fields while a session is already active, reset before relying on the new plan. The goal-round value can still change the ETA display because it is a planning target rather than a phase duration.
Keyboard shortcuts are available when the page has focus: Space starts or pauses, N skips to the next phase, S resets, and F asks for fullscreen when fullscreen is available. Audio, vibration, notification, and wake-lock options depend on browser support, device hardware, permission prompts, and whether the page remains active.
Interpreting Results:
The live ring and countdown belong to the current phase. Read them together with Phase, Round, Elapsed (phase), and Remaining (phase). A paused phase keeps its elapsed time until the session resumes, skips, or resets.
Completed focus is a transition count, not a quality measure. A normal focus phase adds one count when it completes. Pressing Skip during a focus phase also moves past that focus phase and advances the count, so skipped rounds should not be treated as proof of completed work.
- Goal ETA estimates the local finish time for the target focus count under the current timing plan.
- Pomodoro Schedule lists upcoming phase rows with local start times and durations. It helps check fit, but later rows are still a projection.
- Pomodoro Time Mix shows how one full long cycle is divided among focus time, short breaks, and the long break.
- JSON captures inputs, live state, schedule rows, and derived timing fields in a structured export.
Goal ETA can move even when the live countdown has not changed. Increasing the focus length, adding a longer break, changing the long-break frequency, or raising the goal count all add future time. Manual pauses and real-world interruptions are not forecast until they are reflected in the active timer state.
Use the exports according to the question. CSV and DOCX are practical for session metrics or schedule rows. The chart image and chart CSV explain the focus-break mix of one long cycle. JSON is better when you want to preserve the full state for notes, audits, or another workflow.
Technical Details:
A Pomodoro timer is a finite-state clock. The active state is Idle, Countdown, Focus, Short break, or Long break. Each running state has a duration in seconds and an elapsed count. Pausing holds the elapsed count. Resetting clears the run and returns the state to Idle.
The long-break rule is applied after focus work advances. When a focus phase is passed, the completed focus count increases by one. If that new count is a positive multiple of the long-break frequency, the next phase is Long break; otherwise it is Short break. Break phases return to Focus.
Formula Core:
Once the focus length, short break, long break, and long-break frequency are fixed, progress and cycle mix are deterministic. Durations entered in minutes are converted to seconds for the live timer and then formatted back into minutes or MM:SS displays.
In these formulas, N is Long break every, sfocus is one focus duration in seconds, sshort is one short break, and slong is one long break. With 25, 5, 15, and 4, one full long cycle is 4 x 1500 + 3 x 300 + 900 = 7800 seconds, or 130 minutes. That same cycle is 100 minutes of focus, 15 minutes of short breaks, and 15 minutes of long break.
| Current phase | Condition | Next phase | Count effect |
|---|---|---|---|
| Idle | Start is pressed and countdown is 0 seconds | Focus | No completed focus is added |
| Idle | Start is pressed and countdown is greater than 0 seconds | Countdown, then Focus | No completed focus is added |
| Focus | Completed focus count after this round is divisible by the long-break frequency | Long break | Completed focus increases by 1 |
| Focus | Completed focus count after this round is not divisible by the long-break frequency | Short break | Completed focus increases by 1 |
| Short break or Long break | Break reaches 0 seconds | Focus | Completed focus does not change |
| Setting | Accepted value | Effect on timing |
|---|---|---|
| Focus length | Whole minutes from 1 to 90 | Sets the duration of each focus phase. |
| Short break | Whole minutes from 1 to 30 | Sets ordinary recovery after focus rounds that do not trigger the long break. |
| Long break | Whole minutes from 1 to 60 | Sets the longer recovery phase after the configured focus count is reached. |
| Long break every | Whole focus-round count from 2 to 12 | Controls which completed focus counts trigger a long break. |
| Goal rounds | 0 for open ended, or a whole target from 1 to 16 | Enables goal progress and ETA when greater than 0. |
| Countdown before start | Whole seconds from 0 to 60 | Adds preparation time before the first focus phase. |
| Beep frequency and duration | 200 to 1200 Hz, 40 to 500 ms | Changes the tone used for phase-change cues and optional ticking. |
Browser timing is practical for focus work, but it is not a laboratory clock. Background tabs can be throttled, busy devices can delay callbacks, and system policies can block or release notification, vibration, or wake-lock requests. For exact billing, medical timing, legal deadlines, or safety-critical intervals, use a dedicated timing method instead of relying on a web page countdown.
Limitations, Privacy, and Accuracy Notes:
No server calculation is needed for the timer state, schedule projection, time-mix chart, CSV files, DOCX files, or JSON output. The values are produced from the settings and session state in the browser.
Notifications require permission from the current site, and many browsers restrict when that permission can be requested. Vibration works only on devices and browsers that expose vibration hardware. Screen wake lock is a request to keep the display awake while the document is active; the browser or operating system may reject or release it for battery, visibility, policy, or support reasons.
The timer display should stay visible for the most predictable cues. If you switch tabs, lock the device, mute the system, deny notifications, or use an unsupported mobile browser, phase changes may still occur but the cue you expected may not be delivered.
Worked Examples:
Classic four-round block. Focus length 25, Short break 5, Long break 15, and Long break every 4 produce a 130-minute long cycle. The time mix is 100 minutes of focus, 15 minutes of short breaks, and 15 minutes of long break.
Longer coding pass. Focus length 45, Short break 10, Long break 20, and Long break every 3 produce one long cycle of 175 minutes: 135 minutes of focus, 20 minutes of short breaks, and 20 minutes of long break. Goal ETA should be checked before starting if the session must finish before another commitment.
Quiet shared-office session. Turn off the per-second tick and set Beep volume to 0 percent when audio would distract others. The timer remains usable through the live ring, phase label, remaining time, metrics table, and schedule rows. Desktop notification still depends on browser permission.
Short errand cleanup. Focus length 12, Short break 3, Long break 10, Long break every 3, and Goal rounds 3 creates a compact block for paperwork or household tasks. The count can help estimate effort next time, but the note beside the count should say what was actually finished.
FAQ:
Does every Pomodoro round need to be 25 minutes?
No. Twenty-five minutes is the common baseline, but the focus field accepts whole minutes from 1 to 90. Choose a length that matches the task and your realistic attention span.
Why did a long break appear after this focus round?
The completed focus count is checked after each focus phase advances. If the new count is divisible by Long break every, the next phase is Long break.
Why does Goal ETA disappear when Goal rounds is 0?
A goal of 0 means the session is open ended. There is no target focus count to estimate against, so goal progress and goal ETA are hidden.
Does Skip count as finishing a focus round?
If the current phase is Focus, Skip advances past that focus phase and increases the completed focus count. Use it to move the session along, not as evidence that the work interval was fully completed.
Can background tabs affect the countdown or alerts?
Yes. Browsers can throttle timers in inactive tabs, and system cues can depend on page visibility, audio policy, permission status, and device support. Keep the page visible for the most predictable display.
Is the session sent away for calculation?
No server calculation is needed for the timer state, schedule projection, chart, CSV, DOCX, or JSON output. They are generated from the values shown in the browser.
Glossary:
- Focus round
- A timed work interval that can count toward Goal rounds when the focus phase advances.
- Short break
- The ordinary recovery phase after a focus round that does not trigger the long-break rule.
- Long break
- The longer recovery phase after the completed focus count reaches the configured cadence.
- Goal ETA
- The estimated local finish time for the selected number of goal rounds under the current timing plan.
- Time mix
- The split of one long cycle across focus time, short-break time, and long-break time.
- Wake lock
- A browser request that asks the device to keep the screen from dimming or locking while the timer runs.
References:
- Pomodoro Technique, Francesco Cirillo.
- Window: setTimeout() method, MDN Web Docs, last modified March 30, 2026.
- Notifications API, MDN Web Docs, last modified May 25, 2026.
- Screen Wake Lock API, MDN Web Docs, last modified July 3, 2025.
- Vibration API, MDN Web Docs, last modified April 11, 2024.