Technical cluster
See all guides tagged in the technical topic cluster.
How accurate are browser-based timers, the causes of drift, and which timer type is most reliable.
Most people assume that a digital timer is a digital timer — that setting a 60-minute countdown will reliably end at exactly 60 minutes. The reality is considerably more complicated. Browser timers, phone timers, dedicated hardware, and professional timer applications all have different accuracy characteristics shaped by operating system scheduling, hardware clocks, power management, and software architecture. For most casual timing purposes, these differences are irrelevant. For contexts where accuracy genuinely matters — medication timing, culinary precision, exam supervision, scientific measurement — understanding timer accuracy is not pedantic; it is essential.
Browser-based timers are built on JavaScript’s timing APIs: primarily setTimeout() and setInterval(). These functions request that the browser’s event loop call a specified function after a specified delay. The critical word is “request” — the browser does not guarantee the callback will execute exactly at the specified time. It executes at the specified time or later, when the event loop is free to process it.
JavaScript executes on a single thread in most browser contexts. If other JavaScript code is running when a timer’s delay expires, the timer callback waits in the event queue until the current code finishes. For simple pages, this delay is typically 1–10 milliseconds — negligible. For complex web applications with heavy JavaScript execution, the timer delay can be tens or hundreds of milliseconds per firing.
For a timer based on repeated setInterval() calls (counting increments rather than measuring elapsed time), these small delays accumulate. Each firing is late by a small amount, and these amounts add up over the duration of the timer. A timer using naive interval counting that fires one millisecond late per second will be approximately 3.6 seconds fast per hour — not catastrophic for a 25-minute Pomodoro, but potentially significant for a 4-hour recording session or an 8-hour monitoring task.
The most significant source of browser timer drift for web-based timers is background tab throttling. All major browsers implement power-saving policies that throttle timer callbacks in tabs that are not currently visible:
setInterval was set to 100ms), and in battery-saver mode, may be throttled further to once per minute.For a web-based timer that uses interval counting (incrementing a displayed counter every second), switching to a different browser tab during a 30-minute session could result in the counter freezing or skipping ahead when you return, producing inaccurate elapsed time display and an incorrect end-time signal.
Across browser types and computers, a commonly observed real-world drift rate for interval-based web timers in background tabs is approximately 1% of session duration. In practice:
| Timer Duration | Expected Drift (1%) | Significance |
|---|---|---|
| 5 minutes | ~3 seconds | Negligible |
| 25 minutes (Pomodoro) | ~15 seconds | Minor |
| 60 minutes | ~36 seconds | Moderate |
| 90 minutes | ~54 seconds | Noticeable |
| 4 hours | ~2.4 minutes | Significant |
| 8 hours (overnight) | ~4.8 minutes | Problematic |
For a 60-minute culinary timer (roasting meat, baking), being 36 seconds late may be inconsequential or may result in overcooking depending on the margin. For medication timing (some medications require precise intervals), 36 seconds late over a 60-minute window is acceptable, but systematic drift over multiple doses across a day could become clinically relevant.
Mobile operating systems present a more severe version of the browser throttling problem. iOS and Android both implement aggressive power management that can interrupt app execution when the device screen is off or when the app is in the background.
The practical implication: for important timing tasks on mobile, a web-based timer in a browser tab is significantly less reliable than a native timer app, which has the ability to request exemption from power management restrictions and use the device’s system timer directly.
Physical kitchen timers use simple analog or digital countdown mechanisms with no software complexity, no event loop, no background throttling. A quartz crystal oscillator (the same technology used in wall clocks and wristwatches) drives the countdown at a fixed, hardware-determined frequency.
The typical accuracy of a quartz oscillator kitchen timer is approximately ±15 seconds per hour — or about 0.4% of duration. This is actually slightly more accurate than many browser-based timers in background tab conditions, and dramatically more accurate for long-duration timing because there is no drift accumulation from event loop delays.
Professional laboratory timers, scientific-grade stopwatches, and GPS-synchronized clocks offer dramatically higher precision (±0.001 seconds or less), but these are entirely beyond the needs of productivity or cooking applications.
This site’s timer implementation uses a timestamp-based approach rather than naive interval counting, which is the correct technical solution to the browser timer drift problem. Rather than incrementing a counter each time an interval fires (which accumulates the delay of each late-firing interval), the timer records the absolute start time using a high-resolution timestamp (from the JavaScript Date API or performance.now()) and computes elapsed time by subtracting the start timestamp from the current time on each display update.
This approach means that even if a tab is throttled and timer callbacks fire infrequently (once per minute in aggressive browser throttling), when the callback finally fires, the displayed elapsed time is calculated from the actual wall-clock time — not from the number of callbacks that have occurred. A timer that fires once per minute in a throttled background tab will jump its display from, say, 00:10:00 to 00:11:00 in a single update, but the jump reflects actual elapsed time rather than a missed increment.
The end-time signal (the alarm when the timer expires) is triggered when the computed elapsed time first exceeds the target duration, regardless of how many callbacks occurred in the interim. This prevents both early and late false completions from interval accumulation drift.
If you need to verify timer accuracy for an important use case, here is a rigorous testing protocol:
The background tab and locked screen tests are the most revealing — they expose whether the timer uses timestamp-based elapsed calculation (accurate even in throttled conditions) or interval counting (which drifts under throttling).
For most productivity and study use cases (Pomodoro sessions, study blocks, break timers), a drift of 15–30 seconds over 25 minutes is entirely inconsequential. The cognitive purpose of these timers — creating session boundaries and preventing runaway work or break periods — is not meaningfully disrupted by sub-minute inaccuracies.
Timer accuracy becomes genuinely important in these situations:
For applications where accuracy matters, a phone’s native timer app is substantially more reliable than a browser-based timer for several reasons:
The practical recommendation: for cooking, medication, or any precise timing need, use your phone’s built-in Clock/Timer app rather than a browser-based timer. For productivity (Pomodoro, study blocks, work intervals), either is functionally adequate if the timer site uses timestamp-based elapsed calculation.
Third-party timer apps vary in their technical implementation and therefore in their accuracy under challenging conditions. When evaluating a timer app for precision use cases:
A simple 5-minute accuracy test you can perform right now:
Multiply your measured drift by 12 to extrapolate to a 60-minute expected drift, or by 3 to extrapolate from a 5-minute test to a 15-minute test. This gives you a practical accuracy benchmark for your specific browser, device, and site combination.
Benchmark your timer accuracy with a short 5-minute timer, then extend to a 60-minute timer to evaluate drift over longer durations. Explore additional productivity timing resources and strategies in the productivity timers hub.
See all guides tagged in the technical topic cluster.