NordVPN
SponsoredStrict no-logs VPN with 6,400+ servers in 111 countries. Threat Protection blocks ads, trackers, and malware while you work online.
Get NordVPN →Browser-based stopwatch using performance.now() for jitter-free timing. Start, pause, resume, capture laps, and reset. Each lap shows split (delta from previous) plus cumulative time.
Most browser stopwatches use Date.now() and setInterval, which can drift by tens of milliseconds during a session. This implementation uses performance.now() — a monotonic clock that doesn't jump backward when the system clock is adjusted. Combined with requestAnimationFrame for display updates, accuracy stays within ±1 ms.
If you switch tabs, the displayed time may freeze briefly because browsers throttle background work. The internal clock keeps running correctly — when you switch back, the display catches up to the actual elapsed time.
When you press Lap, the current cumulative time is recorded. The displayed split is the delta from the previous lap: in a 5×400m run, each split is one 400m segment time, while the cumulative is total elapsed since start.
Most lap-list users care about splits, not cumulative. We show both. Cumulative also makes it easy to identify the best individual segment — useful for athletes tracking interval consistency.
Sports: track lap times for running, swimming, cycling intervals. Smaller is better; consistency between splits is a sign of good pacing.
Cooking: time multiple steps simultaneously by using laps as 'check points' (mix added, dough resting started, etc.).
Study/work: timeboxing focused work sessions. Pair with our Pomodoro timer for structured breaks.
Process timing: measure duration of any task — software builds, manual data entry, customer support resolution. Use the export-friendly lap list for later review.
No — closing the tab clears the in-memory state. To preserve a long timing session, take a screenshot of the running display or copy the lap list before closing.
performance.now() resolution is browser-dependent: most browsers limit to 1ms or 0.1ms for security reasons (timing attack mitigation). This is plenty for human-scale timing — far more accurate than human reaction time (~250ms).
The internal clock is precise; the display is rendered ~60 times per second so you see a smoothly updating millisecond field. Each frame computes the latest elapsed value from performance.now().
Not directly — copy the lap list manually. Saving sessions to local storage is on the roadmap.
Browser-based, no app install needed. Equally accurate for human-scale timing. Phone stopwatch survives screen lock; browser tab needs to stay open (but doesn't need focus).
No. Everything runs locally; no laps or times are transmitted.
If you tap Lap immediately after Start, the elapsed time may round to 0 with display precision. Run for at least a fraction of a second between laps.
Yes, down to ~1ms. For nanosecond timing (chip benchmarking) you'd need different tooling, but for any human-observable event this is precise enough.
Strict no-logs VPN with 6,400+ servers in 111 countries. Threat Protection blocks ads, trackers, and malware while you work online.
Get NordVPN →Managed cloud hosting for WordPress and web apps on DigitalOcean, Vultr, and AWS. Fast setup, no server headaches.
Try Cloudways →Hire freelancers for design, writing, dev, and marketing — or sell your own services. Millions of gigs at every budget.
Browse Fiverr →