Pomodoro
A focus timer that actually feels good. Twenty-five on, five off, longer break every fourth round — and a small pile of details that turn a stopwatch into a habit.
The Pomodoro widget runs a focus / break loop, mirrors the time in your tab title if you want, plays a sound that doesn't make you flinch, and keeps a tally of completed rounds. All of it is configurable. None of it gets in your way.
Add it to your dashboard
From any new tab, press E to enter edit mode, then A to open the widget picker. Choose Pomodoro. It drops in at its default size — four grid columns wide, four rows tall — and you can drag it around or resize it from there. Press E again (or Esc ) to lock the layout in.
Pomodoro has a minimum height of four rows and a maximum of five — the ring, the time read-out, and the controls all need a bit of room to breathe but the timer doesn't gain much from extra vertical space beyond that. The default 4×4 cell is the sweet spot; stretch it one row taller for more breathing room, or eight or twelve columns wide if you want it to dominate the dashboard. The dashboard's twelve-column grid snaps widget widths to four, eight, or twelve — there's no awkward in-between size to land on.
In edit mode you can also keyboard the widget into place: Tab to focus it, arrow keys to nudge it, Shift + arrows to resize.
How a session runs
The default loop is the one Francesco Cirillo described in the eighties, with all the small lever-arm details exposed:
- Focus phase. Twenty-five minutes by default. Hit Start, and a thin ring around the time read-out winds down to zero. When it hits, you'll hear the alarm and (optionally) get a desktop notification.
- Short break. Five minutes. Same ring, same readout. The label at the top switches from Focus to Short break, so a glance is enough to tell you which side of the loop you're on.
- Long break. After four focus phases (configurable), fifteen minutes instead of five. The widget tracks completed rounds in the little counter at the bottom — it resets when you reset the timer.
- Pause and reset. Pause freezes the ring and holds the remaining time. While the timer is running, tweaks to the focus or break length don't disturb the current countdown — they take effect on the next phase. While the timer is paused or stopped, changing those same lengths rewinds the read-out to the new full duration, so you start the next phase at the value you just picked. Reset takes you back to a fresh focus phase and zeros the round counter.
Settings
Enter edit mode with E , then either click the gear icon in the Pomodoro's title bar, or right-click anywhere on the widget. Either opens the settings panel as a modal. Everything is per-instance — you can have a 25-minute timer on one dashboard and a 50-minute one alongside without them stepping on each other.
| Setting | Type | Default |
|---|---|---|
| Focus duration Length of a focus phase. Most people land between 20 and 50 — go longer if your work needs runway, shorter if you struggle to start. | minutes | 25 |
| Short break The break that runs after a normal focus phase. Long enough to stand up; short enough that you don't open a new tab and lose the thread. | minutes | 5 |
| Long break The bigger break, taken every fourth focus phase (or whatever you set "rounds until long break" to). Treat it like a real pause. | minutes | 15 |
| Rounds until long break How many focus phases happen before the long break kicks in. Classic Pomodoro is four; set it to one if you want a long break every time. | count | 4 |
| Alarm sound A short synthesised tone when a phase ends. Sounds are generated on the fly with Web Audio — nothing is downloaded, and "silent" disables it entirely. | beep · chime · bell · silent | chime |
| Volume Caps the alarm. Picking a new sound previews it at the current volume, so you can dial it in without waiting for a phase to end. | 0 – 100% | 40% |
| Auto-start next phase When a phase ends, immediately begin the next one. Useful if you want zero friction between focus and break; off if you prefer a moment to decide. | toggle | off |
| Countdown in tab title Mirrors the running countdown in the browser tab title (e.g. | toggle | off |
| Show notifications Sends a system notification when a phase ends — so you know to switch even when the browser isn't in focus. The first time you turn this on, your browser will ask for permission. | toggle | on |
Small things you might miss
Most of what makes the Pomodoro widget pleasant to use isn't visible until you reach for it. A short list of behaviours worth knowing:
- The ring is a real countdown. Stroke length matches remaining seconds, so you can tell at a glance how much of the phase is left without reading the digits. Useful when the widget is on a second monitor and you only catch it in your peripheral vision.
- The alarm is synthesised, not sampled. Each sound is a short oscillator with a decaying envelope, generated by Web Audio when the phase ends. That keeps the extension small and lets the "silent" option be genuinely silent — there's no background audio thread.
- Picking an alarm previews it. The moment you change the dropdown, you hear the new sound at the current volume. Adjust the volume slider and the next preview reflects it. No need to wait for a phase to end.
- Tab title mirroring restores itself. Turn the toggle off,
switch tabs, or unmount the widget — the original tab title comes back
cleanly. You'll never end up stuck with
00:00 · butter. - Notifications ask permission up-front. The first time you flip the notifications toggle on, the browser asks for permission then — not twenty-five minutes later when the timer ends and you've forgotten what you were enabling.
- You can rearrange mid-session. Drag or resize the Pomodoro in edit mode and the countdown keeps running — the ring keeps draining, and Start / Pause / Reset stay clickable. Only the grid handles around the card respond to edit mode; the timer doesn't care.
Heads up
- Timer state persists locally. The countdown, the
round counter, and the running / paused state are saved per-instance
to
chrome.storage.local. Reload the new tab and the timer picks up where it left off — even mid-phase. Per-device, not per-account: opening butter on a second Chrome starts that copy fresh. - If a phase ended while you were away, butter advances silently. Reload during what would have been your break and you land at the start of that break (or the next focus phase), paused. No alarm or notification fires after the fact — you don't want a chime thirty minutes late.
- The timer needs a butter tab open to run. Chrome doesn't keep new-tab pages alive in the background, so closing every butter tab ends the countdown. Keep one tab open while a session is running, or turn on countdown in tab title so you can switch to a working tab and still watch the time tick down.
- Notifications need OS permission too. If notifications don't appear, check your system settings — macOS, Windows, and most Linux desktops have a "notifications from Chrome" toggle that has to be on before the browser-level permission matters.