⏱️ Stopwatch & Countdown Timer
A stopwatch timer with laps and countdown, driven by the system clock so it stays accurate in a background tab. Full screen, spacebar, alarm.
Space to start and stop · R to reset · L for a lap. Timing comes from the system clock, so it stays accurate in a background tab.
What Stopwatch & Countdown Timer Does
A stopwatch in a browser has one real engineering problem, and almost every online stopwatch has it: what happens when you switch tabs.
Browsers deliberately throttle JavaScript timers in background tabs to save battery. A timer is clamped to roughly one tick per second, and under heavier throttling to one every few seconds. Any stopwatch that works by counting ticks — subtracting one from a counter each time the timer fires — therefore runs slow in real terms, which means it finishes late. A 25-minute countdown measured that way finishes at 26 minutes under a mild clamp and at 50 minutes under a heavy one.
The fix is to stop counting and start looking at the clock. This tool records a timestamp when you press start and works out elapsed time by subtracting it from the current system time. Throttling can then only delay how often the digits repaint; it cannot change what they say. Switch away for ten minutes and switch back, and the display corrects itself instantly, because the answer was never being accumulated in the first place.
Beyond that it does the things this search asks for: a countdown as well as a count-up, laps with both split and lap columns, a full-screen display readable from across a room, an alarm, and space-bar control.
How to Use Stopwatch & Countdown Timer
- Choose stopwatch to count up, or countdown timer to count down from a set duration
- Press Start, or hit the space bar
- In stopwatch mode, press Lap to record a split — both lap and total times are shown
- Use full screen for a display readable from across a room
Formula Used by Stopwatch & Countdown Timer
How elapsed time is measured
elapsed = banked + (now − startedAt)
- startedAt
- The system timestamp when you last pressed start
- banked
- Time accumulated before the last pause
- Why it is robust
- Nothing is accumulated tick by tick, so nothing can be lost
Worked example
Run for 30 s, pause, wait, run 20 s more
- banked becomes 30,000 ms at the pause
- On resume, startedAt is reset to now
- Elapsed = 30,000 + 20,000
Result: 50 seconds, regardless of how long the pause lasted or whether the tab was hidden
Laps against splits
split = total elapsed at the mark · lap = split − previous split
- Split
- Cumulative — what a race clock shows
- Lap
- The interval itself — what a coach usually wants
Worked example
Four laps of 60, 62, 59 and 61 seconds
- Splits: 1:00, 2:02, 3:01, 4:02
- Laps: 1:00, 1:02, 0:59, 1:01
Result: Same data, two readings — both columns are shown
Why the countdown cannot drift
remaining = deadline − now
- deadline
- A fixed timestamp set when the timer starts
- The alternative
- remaining = remaining − 1 each tick, which is what drifts
Worked example
A 25-minute timer in a throttled background tab
- Tick-counting at a 2 s clamp: 1,500 ticks × 2 s = 50 minutes
- Deadline-based: now − deadline, checked whenever the page paints
Result: Exactly 25 minutes either way with a deadline; 25 minutes late without one
What background throttling does to a tick-counted timer
A 25-minute interval, measured by subtracting one from a counter on each timer fire. The clamp depends on the browser, the platform and how long the tab has been hidden.
| Tab state | Effective tick | A 25-minute timer finishes at | Late by |
|---|---|---|---|
| Foreground | 1.00 s | 25.0 min | — |
| Backgrounded, mild clamp | 1.04 s | 26.0 min | 1 minute |
| Backgrounded, heavy throttle | 2.00 s | 50.0 min | 25 minutes |
| Deep throttle or power saving | 5.00 s | 125.0 min | 100 minutes |
| Any of the above, deadline-based | irrelevant | 25.0 min | never |
What actually limits stopwatch accuracy
The clock is not the constraint. For hand timing, human reaction dominates every other source of error by an order of magnitude.
| Source of error | Typical size | Matters when |
|---|---|---|
| System clock resolution | Under 1 ms | Essentially never |
| Display refresh rate | ~16 ms at 60 Hz | Reading the last digit mid-run |
| Human reaction on start/stop | 200–250 ms | Always, in hand timing |
| Background tab throttling | Seconds to minutes | Only for tick-counted timers |
| Device sleep | Unbounded | Any timer left running while the device sleeps |
Keyboard control
Shortcuts are ignored while you are typing in a field, so entering a countdown duration will not trigger them.
| Key | Action |
|---|---|
| Space | Start, or pause and resume |
| R | Reset to zero |
| L | Record a lap (stopwatch mode) |
How to Read Your Result
Hand timing is limited by you, not the clock
A browser stopwatch reads the system clock, which is accurate to well under a millisecond. What it cannot do is fix the roughly 200 to 250 milliseconds of human reaction time on each of the start and stop presses. That is why hand-timed athletics results are conventionally recorded to a tenth of a second rather than a hundredth, and why official records require electronic timing triggered by the starting pistol and a finish-line beam. Displaying hundredths is useful for consistency between your own measurements, not for claiming precision you do not have.
Why the digits jump when you come back to the tab
It looks like a glitch and is actually the correct behavior. A hidden tab is not painted, so the display stops updating. The measurement continues regardless, because it is a subtraction against the system clock rather than an accumulating count. When the tab becomes visible again the page reconciles immediately and the digits jump to the true value. A stopwatch that resumes smoothly from where it left off is the one to distrust — that is the signature of a counter that lost time.
The alarm is the part that genuinely cannot be relied on
Timing survives backgrounding; sound often does not. Mobile browsers suspend audio for hidden pages, and a locked phone will not let a web page make noise. Desktop browsers are more permissive but still require the page to have been interacted with before audio is allowed. So the elapsed time will always be right when you look, but a web timer is not a dependable alarm clock. For anything you must be woken or interrupted by, use the device's own clock app, which has operating-system permission that a web page does not.
Full screen exists for a reason
It is the single most-requested feature here. The use cases are all the same shape: a timer that has to be legible from a distance. A classroom activity, a workout station, a presentation, a cooking timer across a kitchen. Enlarging the digits to fill the viewport is trivial to build and disproportionately useful, which is presumably why the leading tools all offer it.
Laps and splits answer different questions
A split tells you where you are against a target; a lap tells you whether you are holding pace. A runner aiming for a four-minute mile wants splits, to know if the first half was fast enough. A coach analyzing consistency wants laps, to see the 59 among the 61s. Most stopwatches pick one and show it, which forces mental arithmetic. Showing both columns costs nothing and removes the subtraction.
Nothing here leaves the browser
A stopwatch has no reason to contact a server, and this one does not — it reads the clock, keeps the numbers in the page, and forgets them when you close it. That also means it works with no connection at all, which matters if you are timing something in a gym, a lab or a basement. The corollary is that lap times are not saved: closing the tab loses them, so copy anything you need to keep.
Limitations & Accuracy Notes
- Hand timing is limited by human reaction, typically 200 to 250 ms on each press. The hundredths are useful for comparing your own measurements, not for claiming that level of accuracy.
- Audio may not play if the tab is in the background, and a locked phone will not sound an alarm from a web page. Elapsed time stays correct; the alert is what cannot be relied on.
- If the device sleeps or hibernates, behavior depends on the operating system. The elapsed calculation uses wall-clock time, so a sleep normally counts toward it, which may or may not be what you wanted.
- Laps are held in the page only. Refreshing or closing the tab loses them; nothing is saved or synced.
- Full screen enlarges the display within the browser window rather than requesting the operating system's own full-screen mode, so browser chrome may remain visible depending on your setup.
- Changing the system clock while the stopwatch is running will corrupt the measurement, since elapsed time is derived from it.
Frequently Asked Questions
Does the timer keep running if I switch tabs?
How accurate is a browser stopwatch?
What is the difference between a lap and a split?
Are there keyboard shortcuts?
Will the alarm sound if my phone screen is off?
Can I use it full screen?
References & Further Reading
- NIST — Time and Frequency Division — US national timekeeping authority, and the reference for how civil time is distributed to the system clocks this tool reads
- MDN — Reasons for delays longer than specified (setTimeout) — Documents the background-tab throttling and 1000 ms clamping that make tick-counted timers run long — the defect this tool was rewritten to avoid
- MDN — Page Visibility API — The mechanism used here to reconcile the display the moment a hidden tab becomes visible again
- Online Stopwatch — The #1 result for this term, whose sitelinks show that Countdown Timer and Full Screen are the two features Google considers most important on this query