Pomodoro Session
{{ remainingDisplay }}
{{ phase }} · Round {{ roundIndex }} · {{ playing ? 'Running' : (paused ? 'Paused' : 'Idle') }} · Ends ~ {{ current_finish_time_local }}
Focus {{ focus_min }} min Short {{ short_min }} min Long {{ long_min }} min Long every {{ long_every }} Goal {{ completed_pomos }}/{{ goal_pomos }} Live Goal ETA ~ {{ goal_eta_local }}
min:
min:
min:
focus:
rounds:
s:
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.

                
Shortcuts: Space = Start/Pause · N = Next · S = Stop · F = Fullscreen
:

Introduction

The Pomodoro method breaks work into repeated focus blocks with planned recovery in between. Its practical value is simple: a task that feels vague or endless becomes a sequence with a clear start, a clear pause, and a visible stopping point. This timer turns that structure into a working session plan instead of leaving it as a rough intention.

The package does more than count down twenty-five minutes. It tracks focus rounds, schedules short and long breaks, shows the current phase and next phase, estimates when the present phase will end, and can project a goal ETA when you set a target number of focus rounds. That makes it useful both for individual work blocks and for planning a larger stretch of the day.

A common use case is a deep-work session that alternates 25-minute focus blocks with 5-minute short breaks and a longer reset after every fourth round. Another is a shorter or more adaptive rhythm, such as 40 minutes of focus with a 10-minute break for writing, study, or administrative cleanup. The package lets you model either version and see the schedule unfold before you start.

The timer also exposes the operational details that usually get ignored in simpler tools. You can add a short countdown before the first phase begins, auto-start the next phase, enable tick and boundary cues, request a screen wake lock, use vibration where supported, and allow desktop notifications on phase changes. The schedule table, time-mix chart, and JSON export are there when you need more than a single countdown ring.

The boundary is that timing structure is not the same thing as productivity by itself. A perfectly tuned session length will not choose your priorities, prevent interruptions, or guarantee that a task was broken into the right units. The tool is best understood as a pacing aid that keeps the rhythm visible and repeatable, while the quality of the work still depends on how you use that rhythm.

Everyday Use & Decision Guide

Start with the session shape, not the alerts. Focus length, short break, long break, and long-break frequency determine the real workload pattern. If you are doing cognitively heavy work, a shorter focus block may protect quality. If you are doing steady production work, a longer focus block may reduce restart cost. Those timing choices matter more than whether the timer beeps.

The goal field changes how the session should be read. Without a goal, the timer is an open-ended phase tracker. With a goal, it becomes a forward plan: completed focus rounds are counted, the next phases are projected, and the estimated finish time becomes a meaningful pacing signal. That is especially useful when you want to decide whether four more rounds fit before a meeting or before the end of the workday.

The advanced options are best treated as environment controls. Auto-start next phase is convenient when you want the rhythm to keep moving without manual clicks. Tick, beep, vibration, and notifications matter when you may not be staring at the timer the whole time. Wake lock matters when the device would otherwise sleep and interrupt the countdown. Those settings should match the setting you work in, not just the features available in the browser.

The tab views answer different questions. Session Summary tells you what is happening right now. Pomodoro Schedule shows the projected order of upcoming phases and their local start times. The time-mix chart explains how one full long cycle divides time between focus, short breaks, and the long break. The JSON tab is useful when you want the full input and state bundle for documentation or automation.

If the timer feels unreliable, the first things to check are not the durations but the environment: background-tab throttling, notification permissions, audio restrictions, and wake-lock support vary across devices and browsers. The package does its work locally in the browser, which is good for privacy and responsiveness, but it also means browser policy and device behavior shape the user experience more than any server-side guarantee would.

Technical Details

The timer represents each phase in seconds and uses high-resolution timestamps while it is running. Focus, short-break, and long-break inputs are entered in minutes, converted to seconds, and then used as the duration source for each phase. When the timer is paused, elapsed time is frozen. When it resumes, the package rebuilds the remaining time from the frozen elapsed value rather than restarting the phase from zero.

The phase sequence follows a deterministic rule. Focus is the default work phase. After each completed focus round, the script decides between a short break and a long break by checking whether the completed round count is divisible by the configured long-break frequency. If auto-start is disabled, the next phase is staged but does not begin until you start it. If auto-start is enabled, the timer moves across boundaries automatically after the configured cues fire.

The schedule view is a forward projection built from the current state. If the timer is already running, the first schedule row starts with the remaining time in the active phase. If the timer is idle, the schedule begins with a focus phase. Goal ETA uses the same logic but stops once the requested number of focus rounds has been reached, adding the necessary breaks along the way. That is why the goal estimate can change materially when you alter long-break frequency even if the focus length stays the same.

P = clamp ( selapsed sphase , 0 , 1 ) × 100 Tcycle = N × sfocus + ( N - 1 ) × sshort + slong

The cue system is local and browser-dependent. Beeps are synthesized in the browser from the configured frequency, duration, and volume. Optional ticking uses the same audio path at one-second intervals while the timer runs. Vibration is only attempted when the device exposes the vibration API. Desktop notifications depend on permission state. Wake lock is requested only when that toggle is enabled and the browser supports the Screen Wake Lock API.

The exported surfaces are derived from the same session state. Session Summary can be copied or downloaded as CSV and DOCX. Pomodoro Schedule can be exported the same way and includes projected local start times and durations. The time-mix chart renders the relative focus, short-break, and long-break share for one long cycle, with image and CSV export options. The JSON tab records settings, current phase state, and the schedule projection in a structured payload.

Pomodoro session controls and effects
Input or toggle Package behavior Why it matters
Focus, short break, long break Converted from minutes into per-phase second totals Defines the core workload and recovery rhythm
Long break every Switches every Nth completed focus round to a long break Changes both schedule projection and goal ETA
Goal rounds Counts completed focus phases and estimates total time to target Turns the timer into a finite session planner
Countdown before start Creates an initial countdown phase before the first focus block Gives a setup buffer before the session begins
Auto-start next phase Continues across phase boundaries without a manual restart Useful for uninterrupted rhythm, but it reduces deliberate pause points
Tick, beep, vibration, notifications, wake lock Enables local boundary cues and device-behavior requests where supported Improves awareness away from the screen, but support varies by browser and device
Result surfaces and exports
Surface What it shows Exports available
Session Summary Current phase, round, progress, remaining time, next phase, and goal ETA CSV copy, CSV download, DOCX export, single-metric copy
Pomodoro Schedule Projected sequence of upcoming phases with local start times and durations CSV copy, CSV download, DOCX export, single-row copy
Time Mix chart Relative focus, short-break, and long-break share for one long cycle PNG, WebP, JPEG, and CSV
JSON Inputs, current state, and schedule projection Clipboard copy and JSON download

Step-by-Step Guide

  1. Set focus, short-break, long-break, and long-break frequency values that match the kind of work you are about to do.
  2. Add an optional goal round count if you want a finish estimate instead of an open-ended timer.
  3. Decide whether countdown, auto-start, audio cues, vibration, notifications, or wake lock should be active for this session.
  4. Start the timer and watch the Session Summary to confirm the phase, round index, and goal ETA look plausible.
  5. Open Pomodoro Schedule if you need the projected order of upcoming phases or the local start times for planning.
  6. Use the time-mix chart or JSON export when you need to document the session structure rather than just watch the countdown.

Interpreting Results

The large timer display is the live phase truth. Round index, phase label, and progress bar only make sense in relation to that remaining-time number. If the timer is paused, the current phase has not failed or been skipped; it is simply holding the frozen elapsed value until you resume or stop.

The goal ETA is best read as a schedule estimate, not a promise. It assumes the configured structure continues exactly from the current state and that all future focus and break phases will happen at the chosen lengths. If you skip a phase, pause for longer than planned, or change the timing inputs mid-session, the estimate updates because the assumptions changed.

The time-mix chart is a structural view of one long cycle, not the current session history. If focus dominates the chart, that means the configured cycle spends most of its total time in focus work, not that you personally maintained that rhythm today. Use it for planning and explanation, not for retrospective productivity scoring.

Worked Examples

A standard four-round work block

A user sets 25 minutes of focus, 5-minute short breaks, a 15-minute long break, and a long break every fourth round. The schedule projects four focus blocks, three short breaks, and then the longer reset, while the time-mix chart shows how one full cycle divides attention and recovery.

A quieter timer for shared spaces

Someone working in a shared office leaves tick disabled, keeps volume at zero, enables notifications, and skips vibration. The browser still surfaces phase changes visually and through system notifications, while the work environment stays quiet.

Planning whether three more rounds fit before a meeting

A user sets a goal of three focus rounds, starts with a short countdown, and watches the goal ETA update as the first round runs. That gives a better answer to "do I have time for this?" than a plain timer would, because the estimate includes the breaks required to finish the structure.

FAQ

Does wake lock guarantee my screen will stay on?

No. The package can request a screen wake lock, but support and behavior still depend on the browser, the device, and system policy.

Why can the timer feel inconsistent in a background tab?

Browsers often throttle background activity. The package keeps the timer state locally, but visual updates and cue timing can still feel different when the tab is not active.

What happens if I set goal rounds to zero?

The timer still runs normally, but goal ETA is disabled because the session no longer has a finite focus-round target.

Can I use the schedule tab before starting?

Yes. When the timer is idle, the schedule is projected from a fresh focus phase using the current settings, which is useful for planning before you begin.

Glossary

Focus round
One work interval counted toward the goal round total.
Long cycle
The full sequence from the first focus round through the long break that follows the configured long-break interval.
Goal ETA
The estimated local finish time for the requested number of focus rounds under the current timing rules.
Wake lock
A browser-level request to keep the screen from sleeping while the timer is running.
Phase progress
The fraction of elapsed phase time divided by total phase time, displayed as a percentage.