Stopwatch
Start, pause, lap and reset — with a lap table that highlights your fastest and slowest laps automatically.
{{ display }}
| Lap | Lap time | Total time |
|---|---|---|
| {{ l.n }} | {{ fmtTime(l.lapMs) }} | {{ fmtTime(l.totalMs) }} |
Timing happens entirely in your browser. Nothing is recorded or sent anywhere.
How the timing stays accurate
Elapsed time is always computed as "time now minus when this run started, plus whatever was already banked from earlier runs" — read fresh on every frame, not a counter incremented by a fixed step per timer callback. A fixed-step counter drifts whenever the browser is busy or the tab is backgrounded; recomputing from the system clock cannot, because there's no accumulated error to drift by.
The fastest and slowest laps are highlighted once there are at least two, so a pattern is visible without doing the comparison by eye.
Frequently asked questions
How is the elapsed time kept accurate?
It's always computed as "time now minus when this run started, plus whatever was already banked from earlier runs" — read fresh on every frame rather than incremented by a fixed step per timer callback, which is what lets it stay accurate even if the browser is busy.
What do the highlighted laps mean?
Once there are at least two laps, the fastest is highlighted in one colour and the slowest in another, so a pattern is visible without comparing every row by eye.
Does Reset clear the lap table?
Yes — Reset clears both the elapsed time and every recorded lap. Pause does not; you can pause, review laps, and resume from where you left off.
Can I use this for interval training?
Yes — press Lap at the end of each interval to record it, and the running total time keeps counting throughout the whole session.