TimerWorks

A timer that doesn't drift

Deadline-based timing, so background tabs cannot make it wrong. The alarm is armed when you press start, and the page tells you so.

00:00

Why online timers are usually wrong

Almost every timer on the web is built the obvious way: start an interval that fires once a second and subtract one from a counter. It works perfectly while you watch it, and fails as soon as you do anything else. Browsers deliberately throttle timers in background tabs to save battery — often to once a second, sometimes far slower — so the counter falls behind real time, and the further behind it falls the longer you leave it.

The fix is not to count at all. When you press start, this page records the exact clock time your timer should end. Every frame it asks the system clock how long is left. Throttling can make the display update less often, but it cannot make the answer wrong, because the answer was never being accumulated in the first place.

You can test this against any other timer: start both, switch to another tab for ten minutes, and come back. This one will agree with your watch.

The alarm is the part that actually has to work

Accurate timing is necessary but not sufficient, because the thing you rely on is the noise at the end. Scheduling that noise from a JavaScript timer does not survive a background tab: after roughly five minutes hidden, Chrome throttles the page's timers to about once a minute, so a countdown that beeps when its tick notices zero can be a full minute late. Late is the same as broken when it is your oven.

So the alarm is not scheduled from a JavaScript timer at all. The moment you press start, the tones themselves are queued on the browser's audio clock for the exact instant your timer ends. That clock lives on the audio thread and does not care about tab visibility, throttling or what the rest of the page is doing. Once start is pressed, the sound is already committed — the countdown you can see is just the display.

The alarm problem

The second common failure is silence. Browser autoplay policy blocks sound that was not initiated by a user gesture, and a timer that creates its audio at the end of the countdown has no gesture left to point at. The result is a timer that visibly reaches zero and makes no noise — the worst possible outcome, because you trusted it.

Here the audio pipeline is created and unlocked by the same click that starts the countdown, then verified, and the result is displayed under the controls. If it says the sound is armed, it will sound. If it does not, you find out at the start rather than the end.

Bookmark the timer you always use

Put the duration in the address: #25m, #5m, #1h30m. The page starts that timer immediately on load, so the timer you use every day becomes a bookmark or a shortcut rather than four clicks. Times can be written as 90s, 25m, 1h30m or 10:30.

Questions

Will it still work if I switch tabs?
Yes, and this is the whole reason the site exists. Browsers throttle background tabs, so any timer that counts down by subtracting a second on each tick drifts — sometimes by minutes over an hour. This one never counts ticks: it records the wall-clock moment your timer ends and derives the remaining time from the system clock, so it cannot drift. One honest caveat: if a tab has been hidden for more than about five minutes, Chrome throttles it hard enough that the visible digits may lag behind by up to a minute until you look back at the tab. The alarm is unaffected — it is scheduled on the audio clock, which throttling does not touch.
Why does it say 'sound armed'?
Because browsers block audio that was not triggered by a user action, and the usual result is a timer that silently fails to make a noise at the end — which you discover too late. The alarm is prepared by the same click that starts the timer, and the page tells you whether that worked. More than prepared: the actual tones are scheduled there and then on the browser's audio clock, for the exact moment your timer ends. That clock runs on the audio thread and is not affected by tab throttling, so once you have pressed start the alarm is committed and will sound on time even if the tab has been buried for an hour.
Can I bookmark a specific timer?
Yes. Add the duration to the URL as a fragment: /#15m gives a 15-minute timer that starts on load, and /#1h30m works too. That link is shareable and bookmarkable, which is far more useful than a preset button you have to hunt for each time.
Does it keep running if I close the tab?
No — and no browser tool honestly can, because closing the tab ends the page. If you need an alarm that survives that, use your phone's clock app. What this does guarantee is accuracy for as long as the tab exists, in the background or the foreground.
Is there a full screen mode?
Yes, the button under the controls. It is built for the case where the timer is the point rather than the page — a classroom, a gym wall, a presentation — so it shows nothing but the clock and the ring at maximum size.