Disclosure first: I work on OnePassApps.
The Focus Timer at app.onepassapps.com/apps/focus-timer does two jobs in one tab: a Pomodoro cycle and a plain countdown. I ran both in the live browser and measured what actually happens, so every number below comes from the app running, not from a marketing page.
Try it: Focus Timer in the browser
Two modes, and the limits on each setting
Pomodoro mode opens with Focus 25 min, Short break 5 min, Long break 15 min and the cycle rule shown in the panel as "Long break every 4 sessions". The number fields are bounded, and I read the bounds off the inputs themselves: Focus 1 to 180 minutes, Short break 1 to 60, Long break 1 to 120, Long break every 2 to 12 sessions.
Countdown mode is the other half. It swaps those four fields for Hours (0 to 24), Minutes (0 to 59) and Seconds (0 to 59), opening at 10 minutes. The readout changes format with the value: under an hour it shows minutes and seconds, "00:05" for a five-second countdown; with hours set it shows "5:10:00".
The tab title is the timer
The page says it plainly: "The tab title shows the time left while running." It does. A running focus block rewrote the browser tab title to "24:57 · Focus · Focus Timer" within seconds of the press, and a running countdown to "5:10:00 · Countdown · Focus Timer". Paused, the title went back to "Focus Timer — Pomodoro and countdown timer — OnePassApps": the phase name leaves the title the moment the clock stops.
The keyboard works, but not while a button holds the focus
The page prints three hints - Space start or pause, R reset, S skip - and ships three buttons labelled Start, "Reset (R)" and "Skip to next phase (S)".
With the focus still sitting on the Start button, R and S did nothing at all: the clock kept running and the panel never changed. Space still worked there, but only because it re-activated that focused button. After I moved focus onto the page body instead, all three behaved as advertised: Space started the run ("Countdown started."), Space again paused it ("Paused."), R reset it to the start of the phase ("Reset to the start of this phase."), and S in Countdown mode left the panel reading "Countdown reset." - a countdown has no next phase to skip to, so the app reports the reset instead.
One more measured detail: once the timer is running, the settings lock. The panel says "Pause the timer to change these." while the clock is going.
What happens at zero
I set the countdown to five seconds and let it run out. The panel read "COUNTDOWN", "00:00", "Countdown finished." and "Time is up. Press Start to run it again.", and the button changed from Pause to "Start again".
The chime is real Web Audio, not an audio file. I wrapped the AudioContext constructors before the app's own scripts ran: one AudioContext at 44.1 kHz is created when the page loads, and at the moment the countdown hit zero the page created three oscillators and three gain nodes within four milliseconds of each other. I can tell you how the sound is built; I cannot tell you what it sounds like, because I was reading API calls, not listening to the output.
Nothing leaves the tab
The page's own summary reads "Pomodoro and countdown timer with a chime. Nothing leaves your browser." and the panel says "Nothing leaves this tab."
With the network log open for a whole session - load, settings, run down to zero - the page made 125 requests. Every one was a GET except a single CORS preflight, and not one request carried a body. The hosts involved were app.onepassapps.com, api.onepassapps.com, clerk.onepassapps.com and Cloudflare's own script beacon.
On storage, the panel says "Nothing is stored. Closing this tab clears the timer." For the timer itself that is accurate - no timer value is written to localStorage or sessionStorage. The keys that are in localStorage belong to the surrounding site shell (a recently-visited list, a theme preset, Clerk's environment blob), not to the timer, so closing the tab really does clear the clock.
What I did not test
- The full Pomodoro cycle - focus into break into long break - was not run to completion, so I have not measured what the panel does at the end of a focus block.
- "Start the next phase automatically" was left off, and "Show a browser notification" was left off too; the browser's notification permission stayed at its default, so the notification path is untested.
- One browser, one signed-out session, one build on 6 Nov 2026.
If you want the longer version, the app's own guide covers both modes: How to run a Pomodoro or countdown timer
Disclosure again, because it matters: I work on OnePassApps.
Top comments (0)