Skip to main content
OS

Online Stopwatch

A precise stopwatch with lap timing — start, stop, record split times and reset, all running in your browser.

Did you like the tool? Thanks!
Share:
Elapsed Time

Uses performance.now() for precise timing — no drift over long durations. All in your browser.

How to Use Online Stopwatch

Click Start to begin timing. Click Lap to record the current split time without stopping the clock — each lap shows the lap number, the split time for that lap, and the total elapsed time. Stop pauses the clock; Reset clears everything back to zero.

About Online Stopwatch

A stopwatch is the most fundamental time-measurement tool — start, stop, lap, reset, and nothing else. Unlike a countdown timer that counts toward zero and stops, or a Pomodoro timer that cycles through phases, a stopwatch runs forward indefinitely from the moment you start it, measuring elapsed time with no predetermined end point. This makes it the right tool for timing a run, measuring how long a task actually takes, tracking cooking intervals, recording split times during an exercise circuit, or any scenario where the finish is not known in advance. The Online Stopwatch on this page is built for precision at human scale. It uses JavaScript's performance.now() to capture the exact start timestamp (rather than accumulating setInterval ticks, which can drift over long periods due to timer throttling), and updates the visible display every 10 milliseconds to give a smooth, responsive tenth-of-a-second readout. The actual elapsed time is always calculated from the original start timestamp minus any paused intervals, so the display accuracy depends on your device's clock resolution (sub-millisecond on modern hardware) rather than the reliability of a repeating timer callback. The lap function works while the stopwatch is running, which is what distinguishes a stopwatch from a countdown timer: you do not need to stop the clock to capture a split time. Each lap records two values — the split time for that individual lap (the elapsed time since the previous lap, or since Start for the first lap) and the cumulative total elapsed time at that moment — so you can see both how long each segment took and the running total. Laps are numbered and displayed in a scrollable list below the main timer display. All of this runs locally in your browser. The start timestamp, lap records and elapsed time are JavaScript variables in the page — nothing is transmitted to a server, nothing is stored beyond the current session. Refreshing the page clears everything. This privacy-by-default design means you can time anything without the measurement data being shared or logged anywhere.

Details & Tips

How the stopwatch works: • Start: records the current timestamp via performance.now() and begins updating the visible display every 10 ms. • Stop: pauses the elapsed-time accumulator and stops the display update loop. • Lap (while running): records the split time since the last recorded point (the previous Lap or Start) plus the cumulative total, appends both to the lap list, and continues running without interruption. • Reset: stops the timer if running, clears the elapsed time to 00:00.00, and empties the lap list. Display format: • First 60 seconds: MM:SS.ms (e.g., 01:23.45 = 1 minute, 23 seconds, 450 milliseconds, displayed as 45 centiseconds). • After 60 seconds: HH:MM:SS (e.g., 01:12:05 = 1 hour, 12 minutes, 5 seconds). Worked example: • Start → display shows 00:00.00 and ticks upward. • At 12.34 seconds → click Lap. Lap 1 recorded: split 12.34s, total 12.34s. • At 45.67 seconds → click Lap. Lap 2 recorded: split 33.33s (45.67 − 12.34), total 45.67s. • At 1:30.00 → click Stop. Display freezes at 01:30.00. • Click Start again → resumes from 01:30.00 (accumulator preserved). • Click Reset → display returns to 00:00.00, laps cleared. Edge cases handled: • Rapid double-click on Start: the second click is ignored (already running). • Lap while stopped: the Lap button is shown only while the stopwatch is running; clicking it while stopped has no effect. • Reset while running: the stopwatch stops and clears immediately, with no intermediate state. • Very long durations (hours): the display adapts from MM:SS.ms to HH:MM:SS as needed; lap entries continue to accumulate without loss of precision. • Browser tab in background: setInterval throttling can delay display updates, but the elapsed time is always derived from the original start timestamp, so when you return to the tab the display shows the correct actual elapsed time — it does not lose seconds while backgrounded.

Frequently Asked Questions

How accurate is the online stopwatch?
It uses performance.now() for the start timestamp — a high-resolution timer with sub-millisecond accuracy on modern browsers — and calculates elapsed time from that fixed reference rather than accumulating setInterval ticks (which can drift). The displayed time updates every 10 milliseconds for a smooth readout.
What is the difference between Lap and Stop?
Stop pauses the stopwatch and freezes the display at the current elapsed time. Lap records the current split time without stopping the clock — it captures the interval since the previous lap (or the Start) and appends it to the lap list, while the main display keeps ticking upward uninterrupted.
Does the stopwatch keep running if I switch to another tab?
It keeps the correct elapsed time even when the tab is in the background — the elapsed time is always derived from the original start timestamp, so when you return, the display shows the actual time elapsed, not a frozen or lagging readout. The display update may be throttled by the browser in the background, but the underlying time is still correct.
What happens if I click Start again while the stopwatch is already running?
Nothing — the button has no effect while the stopwatch is running. You cannot accidentally reset or double-start the timer.
How many laps can I record?
There is no hard limit beyond what your browser's memory can hold — the lap list is a JavaScript array that can accommodate thousands of entries. The lap display is scrollable, so long lists are accessible.
Does the stopwatch show milliseconds?
It shows hundredths of a second (centiseconds) for the first minute — displayed as MM:SS.ms where the two digits after the decimal are 0-99 — then switches to HH:MM:SS format after 60 seconds. The underlying time is measured with sub-millisecond precision, but the visual display rounds to centiseconds for readability.
What happens to my lap times if I close or refresh the page?
Everything is lost — the stopwatch data (elapsed time, lap records) lives only in the current page's JavaScript state. There is no server-side storage and no localStorage persistence. If you need to save lap times, copy them from the display before closing the page.
Can I use the stopwatch offline?
Yes, once the page has loaded. The stopwatch runs entirely in JavaScript in your browser — no server communication is needed for timing operations. Start, Stop, Lap and Reset all work without an internet connection.
Why does the display sometimes pause briefly during a lap click?
The main timer display continues updating even while a lap is being recorded — the lap capture is instantaneous (reading the current elapsed time value) and does not pause the display. Any visible pause would be due to a browser rendering hiccup, not the stopwatch logic itself.
Can I export my lap times?
The current version displays laps in the browser only — there is no built-in CSV or clipboard export. You can manually copy the lap list text from the display.
Is any timing data sent to a server?
No. The start timestamp, elapsed time and lap records are all JavaScript variables in your browser — nothing is transmitted, logged, or stored anywhere outside your device.

Part of These Collections

Also Available As

online stopwatch, stopwatch with laps, lap timer, split timer, free stopwatch, elapsed time tracker

Found a Problem?

Let us know if something with Online Stopwatch isn't working as expected.

Thanks — we'll take a look.