Millisecond-precision stopwatch with lap recording, and a countdown timer with alarm. Free — works in any browser, no download needed.
This tool provides two timing modes in one: a stopwatch that counts up from zero with millisecond precision and lap recording, and a countdown timer with a customizable duration and browser audio alarm. The stopwatch uses performance.now() — a high-resolution browser API accurate to sub-millisecond — rather than Date.now() or setInterval, ensuring elapsed time remains accurate even when the browser is under load.
Athletes and fitness trainers use the stopwatch for interval training, timing sprint splits, recording swim lap times, and measuring rest periods between sets. The lap function records each split without stopping the overall timer.
Cooks and chefs use countdown mode to time dishes to the minute — boiling eggs, proving dough, roasting, reducing sauces. Multiple tabs allow simultaneous timers for multi-course cooking.
Students and professionals use the Pomodoro technique with the countdown timer — 25 minutes of focused work, 5-minute break — to manage deep work sessions and prevent burnout.
Teachers and test administrators display the countdown timer on a projected screen during timed exams and classroom activities.
Developers and QA engineers use the stopwatch to time code execution steps, UI load sequences, and manual performance benchmarks during testing.
Many browser timers use setInterval(callback, 10) to update the display every 10ms, but this approach drifts — JavaScript event loops are not real-time, and intervals can be delayed by blocking operations or tab throttling. Over a 10-minute session, a setInterval timer can drift by several hundred milliseconds.
This tool records the start timestamp using performance.now() (which counts from the page load event with sub-millisecond precision), then calculates elapsed time on each display update as elapsed = performance.now() - startTime. This approach is immune to interval drift — even if the display update is delayed, the elapsed time calculation is always accurate.
Tab throttling: Modern browsers reduce the execution frequency of timers in background tabs to save battery and CPU. If you switch away from the stopwatch tab, the display update may lag behind, but the elapsed time calculation using performance.now() remains accurate because it measures wall-clock time, not interval count.
Audio alarm: The countdown alarm uses the Web Audio API to generate a tone directly in the browser. No external audio file is required. The alarm will not sound if your device volume is muted. Some browsers also block audio until there's been a user interaction on the page — ensure you click or tap something on the page before starting the countdown.
No persistence across page reloads: Closing or refreshing the page resets both the stopwatch and timer. Lap data is not saved. Use the screen-in-front approach or take a screenshot of lap times before navigating away.
Planning a global meeting or working across time zones? Learn how time zones, DST, and UTC offsets work.
World Time Zones Explained: DST, UTC & Offsets →