Skip to content

Stopwatch

0:00:00.00

Estimates for educational purposes — not financial, medical, or legal advice. See terms.

A stopwatch that measures elapsed time in hours, minutes, seconds, and centiseconds. Tap Start, tap Stop to pause, tap Reset to clear everything. The Lap button records a split without stopping the timer.

Everything runs in your browser — there’s no server. The timer reads the wall clock via performance.now(), which typically delivers millisecond or sub-millisecond accuracy on modern hardware. The display rounds to the nearest centisecond (10 ms) because anything finer flickers too fast to read.

How the state works

The stopwatch has three distinct states: idle (at 0, no laps), running (accumulating time from the start point), and paused (has elapsed but not running). Each button transition is independent:

  • Start from idle or paused → running
  • Stop from running → paused (elapsed accumulates)
  • Start again from paused → running (resumes from accumulated elapsed, not from zero)
  • Lap → records current elapsed, timer continues if running
  • Reset → back to idle, clearing elapsed and laps

The start/stop/start/stop sequence accumulates time correctly across multiple runs. If you start, run 30 seconds, stop, wait an hour, then start again and run another 45 seconds, the display shows 1 minute 15 seconds — not 1 hour and some.

Example: interval training

Running 8 × 400m intervals with 60-second rests. Start the stopwatch before the first rep, tap Lap as you finish each 400m, and tap Lap again when you start the next rep. The split column shows your rep times interleaved with rest durations; the total shows cumulative elapsed from the workout start.

After the session, the lap list is a complete record of the workout with all 16 splits (8 work + 8 rest). Copy it to your notes before closing the tab — the tool doesn’t persist anything.

Example: cooking with stages

Making bread: mix (5 min), bulk ferment (60 min), shape (2 min), proof (45 min), bake (30 min). Start the stopwatch when you begin mixing, and tap Lap at each stage transition. You get a record of how long each stage actually took versus the plan, which is useful for recipe notes and for predicting timing on the next bake.

Example: chess or game turn limits

Informal blitz chess with a 5-minute-per-side rule: start the clock when your opponent plays their move, tap Stop when you play yours. Reset between games. The centisecond display makes it easy to see exactly how much time each move took, which is useful for post-game review of time usage even in casual play.

Precision and limits

Timer precision is limited by the browser’s performance.now() implementation — typically 0.1 to 1 ms in modern browsers, enough for 10 ms display to be meaningful. The display tick rate is 50 ms (20 Hz), which is the human-perceptible limit for smooth numeric display and is deliberately slower than the precision of the underlying clock. You won’t see every millisecond increment, but the final lap times are stored to millisecond precision internally.

For accuracy better than about 10 ms, a browser-based tool isn’t the right fit. Use a dedicated hardware timer, a phone app with a native timer, or a specialized lab instrument. Browser JS timing can be affected by tab throttling (background tabs run at reduced rates), GC pauses, and other system load.

What this tool does not do

It doesn’t count down — this is a stopwatch, not a countdown timer. For countdowns (cooking timer, pomodoro, yoga savasana), use the pomodoro timer or the interval timer.

It doesn’t save or sync across devices. Everything lives in the browser tab. Close the tab and the data is gone.

It doesn’t handle multiple timers simultaneously. If you need to time two things at once, open the tool in two browser tabs.

Frequently asked questions

How accurate is the stopwatch?

The tool displays 10 ms (one centisecond) precision and reads the clock via performance.now(), which in modern browsers typically delivers 0.1–1 ms accuracy. That's enough for any consumer-grade timing — workouts, cooking, chess turn limits — but not for scientific or sports-official timing, which needs dedicated hardware triggered by external sensors. If your use case depends on accuracy better than a tenth of a second, a phone stopwatch or a purpose-built timer is the right tool.

Does closing the tab reset the stopwatch?

Yes. The stopwatch state lives only in the browser tab — there's no server storing it. Closing or refreshing loses the current elapsed time and the lap list. This is the right default for most uses, but if you need to preserve timing data across sessions, copy the lap list somewhere else before closing the tab.

What's the difference between lap time and split time?

A lap time is the duration from one lap button press to the next — the time for just that segment. A split time (also called cumulative time) is the total elapsed from the stopwatch's start to the moment the lap was recorded. Both are shown in the results table: 'split' is the per-lap duration, 'total' is the cumulative time. For running intervals, split is usually what you care about; for multi-stage events where you want to know 'how long did it take to get here', total is more useful.

Can I record laps without stopping the stopwatch?

Yes — the lap button records a split without affecting the running timer. It's the standard stopwatch behaviour: lap captures the current elapsed, the timer keeps going, and the next lap records the difference from the previous one. You can record as many laps as you want in a single run.

What happens if I press start when the stopwatch is already running?

Nothing — the start action is a no-op when the stopwatch is already running. You can only restart the stopwatch from zero by pressing reset first. This avoids the easy mistake of resetting a timer accidentally mid-run.