Online Stopwatch — Start/Stop, Lap Times, Splits & Millisecond Timer
Press Start and a precise running clock appears. Stop pauses the count without resetting, Start resumes from where you stopped, and Reset clears everything back to zero. The Lap button records the current elapsed time as a split — the page shows both the absolute lap time (e.g. 1:23.45 from start) and the delta from the previous lap (e.g. +18.32). Useful for timing intervals on a track or in a kitchen, recording multiple steps of a workout, measuring how long someone takes for a presentation rehearsal, comparing iteration times in code optimisation, or just being a stopwatch when you don't have one and your phone is across the room.
About this tool
Timing uses `performance.now()`, the browser's monotonic high-resolution clock — it's not affected by NTP adjustments, daylight-saving changes, or system clock edits the way `Date.now()` would be, and most browsers expose it at sub-millisecond resolution (5 microseconds when cross-origin isolation isn't a concern, otherwise rounded to 100 microseconds for Spectre mitigation). Display refresh is driven by `requestAnimationFrame`, which syncs updates to the browser's repaint cycle (typically 60 Hz, 144 Hz on high-refresh displays) — that's smoother than `setInterval(fn, 10)` and far more battery-efficient because the browser pauses rAF when the tab isn't visible. Stopping calls `cancelAnimationFrame` to halt the loop cleanly. Lap deltas are computed from cached prior elapsed values, not from re-reading the clock, so they're consistent even on a slow device. Use cases: athletic interval training, cooking multi-step recipes, presentation rehearsal pacing, code optimisation iteration timing, simple lab timekeeping, kids' games.
- performance.now() — monotonic clock, immune to NTP/system-clock edits
- requestAnimationFrame display — battery-efficient, smooth on 144 Hz displays
- Sub-millisecond accuracy where the browser allows it
- Start, stop, resume — Stop preserves elapsed; Reset clears
- Lap times with absolute time + delta from previous lap
- Copy all laps as a formatted list with one click
- Display switches between mm:ss.cs and hh:mm:ss.cs past one hour
- Pauses cleanly when tab is hidden (rAF behavior)
- No upload — every tick stays in your browser
- Useful for athletic intervals, cooking, presentations, code timing
Free. No signup. Your inputs stay in your browser. Ads via Google AdSense (consent required).