Stopwatch with Lap Times
High-precision stopwatch with lap tracking, best/worst lap highlighting, and CSV export.
About this tool
A high-precision stopwatch powered by performance.now() that records individual lap splits and cumulative elapsed time. The lap table highlights your fastest lap in green and slowest in red so you can spot trends at a glance. An animated canvas clock face tracks the elapsed seconds visually. Export all lap times as a CSV file for further analysis.
How to use
- 1 Click 'Start' to begin the stopwatch — the timer and canvas clock hand start immediately.
- 2 Click 'Lap' at any point to record a split; the table updates with the lap number, split time, and total elapsed time.
- 3 The fastest lap row is highlighted green and the slowest is highlighted red automatically.
- 4 Click 'Export CSV' to download all lap data, or 'Reset' to clear the timer and lap table.
Why this stopwatch is accurate — performance.now() vs the wall clock
A naive stopwatch reads the system clock (Date.now()) to measure elapsed time, which is fragile: the system clock can jump if it syncs with a time server or the user changes it, and it's only reliable to the millisecond in theory. This tool instead uses performance.now(), a monotonic timer that only ever moves forward and is designed for measuring durations rather than telling the time of day. It counts elapsed milliseconds from a fixed origin with sub-millisecond resolution and never goes backward, which is exactly what you want when timing laps. The display updates via requestAnimationFrame, redrawing in sync with your screen so the digits and the clock hand stay smooth without wasting battery on updates you can't see.
Split versus total: the two numbers that matter
Every lap records two values, and confusing them is the most common mistake people make with lap timers. The total is the cumulative time since you pressed Start. The split is the time for that lap alone — the gap between this lap mark and the previous one. The tool computes them as total = elapsed since start and split = total − total at previous lap. Worked example: you press Lap at 1:30, again at 3:10, and again at 4:25. The totals are 1:30, 3:10, 4:25; the splits are 1:30, 1:40, and 1:15. Notice the splits always add back up to the final total — that's the consistency check. When you're comparing performance, the split is what tells you whether each lap got faster or slower; the total just tells you how long you've been going.
Reading the best/worst highlighting
Once you have more than one lap, the table highlights your fastest split in green and your slowest in red. This is computed on the split times, not the totals, so it genuinely flags your quickest and slowest individual laps. For an athlete running intervals, the green row is your peak and the red row is where you faded; for anyone pacing a repetitive task, the spread between green and red is a measure of how consistent you were. A tight spread means even pacing; a wide one means you started too hot or slowed badly at the end.
Common use cases
- Interval and lap training — time each lap of a track or pool and compare splits to spot fade.
- Cooking and process timing — mark stages of a multi-step task and see which step takes longest.
- Productivity and study — time focus blocks, using laps to separate sessions.
- Experiments and demos — anywhere you need repeatable, millisecond-resolution timing you can export.
Practical tips
- Export the CSV for analysis. The Export button writes a CSV with lap number, split, and total for every lap, ready to drop into a spreadsheet to chart your pacing or average your splits.
- Lap is only active while running. You can't record a lap when the stopwatch is stopped — the button disables itself — which prevents accidental zero-length splits.
- Start doubles as Stop. The same button toggles: it accumulates elapsed time when you stop and resumes cleanly when you start again, so you can pause without losing your total.
- Reset clears everything. Reset zeroes the time and empties the lap table — there's no undo, so export first if the laps matter.
Common mistakes and pitfalls
- Comparing totals instead of splits. Totals always increase, so they can't tell you whether a lap was fast or slow. Look at the split column.
- Forgetting laps don't persist. Unlike some tools here, the stopwatch keeps its data only in memory for the session — reloading the page or hitting Reset loses the laps. Export before you leave.
- Background tab throttling. Because the visual update rides on the animation frame, switching to another tab can pause the on-screen ticking. The underlying time is measured from timestamps, so your final total stays correct, but the live display may lag until you return.
- Over-trusting millisecond precision. The clock is precise, but human reaction time when pressing Lap adds tenths of a second. For close comparisons, the trend across many laps is more reliable than a single millisecond reading.
Frequently Asked Questions
Set multiple named countdown timers to any target date and watch them tick live.
Measure your typing speed in WPM with live accuracy tracking and difficulty levels.
Focus timer using the Pomodoro Technique — 25-minute work sessions with 5-minute breaks, fully customizable.