Skip to main content

Online Stopwatch

Browser stopwatch with lap times and centisecond precision.

Written by Golam Rabbani, Founder & Lead Engineer

Runs in your browser using performance.now() for centisecond precision. No timezone is involved.

00:00:00.00

How to use this online stopwatch

  1. Press Start (the primary button) to begin timing.
  2. Press Lap to record a split without stopping the clock.
  3. Press Pause to freeze the display; press Resume to keep going.
  4. Press Reset to clear the time and laps.
  5. Use Copy to grab the total plus a list of laps as text.

About this online stopwatch

A browser stopwatch with centisecond precision (1/100 s), built on <code>performance.now()</code> and rendered with <code>requestAnimationFrame</code>. Because the elapsed time is computed against the monotonic high-resolution clock — not <code>Date.now()</code> — it cannot go backwards if the system clock changes, and it does not depend on a timezone or DST.

Each frame, the displayed value is the saved accumulated elapsed time plus the gap from the most recent start. When you press Pause, the gap is added to the saved total and the start marker is cleared. When you press Resume, a new start marker is taken and the value continues from the same total. Laps capture both the current total and the split since the previous lap so you can see per-segment times.

Worked example: press Start, wait 12.34 seconds, press Lap (total 00:00:12.34, split +00:00:12.34). Wait another 9.50 seconds and press Lap again (total 00:00:21.84, split +00:00:09.50). Press Pause; the display freezes. Press Resume and continue timing. The laps table shows the most recent lap first.

Useful for workouts, kitchen timing, quick benchmarking, or any "how long did that take?" question where you need more than wall-clock approximation.

FAQ

How precise is it?
Centiseconds (10 ms). The underlying clock is sub-millisecond, but the display caps at hundredths to stay legible.
Does it drift if I switch tabs?
No. It is rebuilt from <code>performance.now()</code> each frame, so the value matches reality whenever the tab is foregrounded. Background tabs may skip frames but resume to the correct time.
What does Lap do?
Records the current total and the time since the previous lap as a "split". The clock keeps running.
Will Reset also clear laps?
Yes. Reset zeros the time and clears the laps list.