Free Online Stopwatch
Precision stopwatch with lap recording, fastest/slowest lap highlighting, and keyboard shortcuts. Counts up from zero with millisecond accuracy.
Keyboard: Space start/stop · L Lap · R Reset
Common uses
- Stopwatch for HIIT and Interval WorkoutsTime your high-intensity intervals, rest periods, and circuit workouts with precision and lap recording.
- Cooking Stopwatch for Multi-Step RecipesTrack cooking time for steaks, eggs, pasta, and other timing-sensitive dishes with lap markers for stage transitions.
- Sports Race Timing StopwatchTime running laps, swimming sets, cycling intervals, and other athletic training sessions with precision.
- Practice Presentation Timing with StopwatchTime yourself rehearsing presentations to make sure you fit within the allotted time. Lap markers for each section.
- Stopwatch for Meditation and BreathworkTime meditation sessions, breath holds, and breathwork patterns with minimal visual distraction.
How It Works
This stopwatch runs entirely in the browser using the browser's built-in performance.now() API — a monotonic high-resolution timer — driven by a requestAnimationFrame loop that redraws the display every animation frame (typically 60 times per second). No server is involved at any point.
- 1performance.now() measures timeWhen you press Start, the tool records a reference point with performance.now(). Every animation frame, the display subtracts that reference from the current performance.now() value to compute milliseconds elapsed — avoiding the clock-drift problems that come with repeated setInterval calls.
- 2requestAnimationFrame drives the displayInstead of a fixed-interval timer, the digit readout is updated inside a requestAnimationFrame loop. This keeps the display in sync with the browser's own rendering pipeline, so the centiseconds counter scrolls smoothly and never fires faster than the screen can refresh.
- 3localStorage persists a running sessionOn every start, stop, or lap event the tool writes a snapshot to localStorage — including a wall-clock anchor timestamp. If you reload the page mid-run, the stopwatch reads that anchor, computes how many milliseconds have passed since it was written, and resumes from the correct time.
- 4Laps export as tab-separated text or CSVEach lap stores both its split time (delta since the previous lap) and the cumulative total. Copy All writes tab-separated rows to the clipboard via navigator.clipboard.writeText; Download CSV produces a UTF-8 BOM Blob so the file opens correctly in Excel without needing any import wizard.
Guide
Worked example
Press "Start". The display counts minutes, seconds and hundredths from "00:00.00", and the line under it changes from "Ready" to "Running". Press "Lap" at 01:02.34, again at 02:05.87 and again at 03:10.15, then press "Stop". The table under "Laps (3)" lists the newest first: row 3 shows a "Lap time" of 01:04.28 and a "Total" of 03:10.15, row 2 shows 01:03.53 and 02:05.87, and row 1 shows 01:02.34 for both. Row 1 is tagged "fastest", row 3 "slowest", and the header shows "Average lap: 01:03.38". Type "Heat 2" into "Session or athlete name (optional)" and press "Copy all". The text starts with "Heat 2" and today's date, then reads "Lap 1: 01:02.34 (Total 01:02.34)", "Lap 2: 01:03.53 (Total 02:05.87)", "Lap 3: 01:04.28 (Total 03:10.15)" and "Average lap: 01:03.38".
Which settings to use, and the limits
- Use one big button for Start, Stop and Resume. The round button reads "Start" at zero, "Stop" while it runs and "Resume" when paused, and the line under the time reads "Ready", "Running" or "Paused". The time shows minutes, seconds and hundredths of a second, rounded down, and gains an hours part at one hour, for example 01:01:01.23. "Lap" is greyed out until you have started, and still works while paused. "Reset" is greyed out when the time is zero and there are no laps.
- Label laps and read the summary. Each row shows the "Lap time" since the previous lap and the running "Total". From the second lap on, the quickest and slowest laps are tagged "fastest" and "slowest" and the header shows "Average lap". Type in a row's "Label" box (up to 60 characters) to name it, for example "Swimmer 2"; the name goes into Copy all and the CSV. "Session or athlete name (optional)" takes up to 80 characters and becomes the first line of copied text.
- Use the keyboard on a computer. Space starts and stops, L records a lap and R resets. Combinations with Ctrl, Cmd or Alt are left to the browser. The shortcuts are ignored while a text box, drop-down, link or button has focus, so after clicking a button, click an empty part of the page before pressing L or R. With a button focused, Space presses that button instead. The line listing the shortcuts is hidden on touch screens.
- Leave it running in the background. The time is worked out from the device clock each time it is drawn, not by adding up frames, so a hidden tab or a busy computer does not make it lose time, and it catches up when you return. While it runs, the tab title shows the time before the page title. The session is saved in this browser about once a second, so a refresh or a closed tab does not lose it. If you reopen the page while it was running, it carries on and counts the time you were away.
- Keep the screen on, or go full screen. While it runs, "Keep screen on" (ticked by default) asks the browser to stop the screen sleeping, where the browser supports that. If it refuses, for example in battery saver mode, the stopwatch keeps running and nothing is shown. The request is repeated when you return to the tab. "Full screen" enlarges the time for a classroom or gym. Where the browser has no full-screen mode, such as Safari on iPhone, the page fills the screen instead, and "Exit full screen" or the Esc key brings it back.
- Copy, share or download the laps. Above the table, "Copy all" puts plain text on the clipboard, "Download CSV" saves stopwatch-laps.csv, and "Share" opens the phone's share sheet where the browser has one (the button is hidden otherwise). Copied or shared text starts with the session name and today's date; untick "Include date when copying" to leave the date out. The CSV has no date. Its columns are #, Label, Lap time and Total, with times written like 01:02.34 rather than as seconds.
Common problems and how to fix them
- It says "Copy failed" where "Copy all" was.
- The browser refused both ways the page tries to write to the clipboard: the modern clipboard call and the older copy command. The words show for two seconds and then return to "Copy all". Use "Download CSV" instead, or "Share" on a phone, or select the numbers in the lap table by hand.
- The stopwatch is already running, or shows a time, when you open the page.
- That is the saved session. The page keeps one stopwatch, with its laps and session name, in this browser's local storage and restores it on load. If it was running when you left, the time you were away is counted. Press "Stop", then "Reset" to clear it. If the browser blocks site storage, nothing is saved and every visit starts at zero.
- It says "Stopwatch reset." and your time and laps are gone.
- "Reset" clears the time and every lap at once, with no confirmation, and pressing R does the same. "Undo" stays on screen for 10 seconds. It brings back the time and the laps but leaves the stopwatch paused, so press "Resume" to carry on; the time spent paused is not counted.
- Pressing L, R or Space does nothing, or presses the wrong button.
- The shortcuts are ignored whenever a button, link, text box or drop-down has focus, and Space then acts on that focused element. If you clicked a button a moment ago, the focus is still on it. Click an empty part of the page and try again. The shortcut hint is hidden on touch screens, where the on-screen buttons are the way to use it.
- The screen still turns off on your phone.
- "Keep screen on" works only in browsers that offer the Screen Wake Lock feature, only while the stopwatch is running, and only while the tab is visible. A lock the phone refuses is skipped without a message. If the screen sleeps anyway, the time is still right when you wake it, because it is read from the clock. Check that the box is ticked (it is hidden in full screen) and that battery saver is off.
How it compares
This is a count-up stopwatch with laps, in the same spirit as the stopwatch in a phone clock app, and its output is a lap list you can copy or download. It has no countdown, makes no sound and cannot run two stopwatches at once; it keeps one session in this browser. The display shows hundredths of a second, but it reads the device clock, so changing the clock while it runs would change the reading, and your tap adds its own delay. That is fine for lessons, workouts, cooking and practice runs. It is not a substitute for official race timing equipment. In exchange, nothing needs installing.
Related Tools
Lap Counter (Timed)
A precision lap timer that records every split with high-resolution timing. See best, average, and worst laps, export to CSV, and keep your session through a refresh. Keyboard shortcuts included.
Algorithm Visualizer
Watch sorting, pathfinding, and classic algorithms come to life — bubble/quick/merge sort, Dijkstra/A*/BFS on an interactive maze grid, plus binary search, the Sieve, N-Queens and Game of Life. Step-by-step animation, synchronized pseudocode, live metrics, and a side-by-side race mode. Mobile-friendly and 100% in your browser.
Significant Figures Calculator
Count the significant figures in a number and round it to any number of sig figs.