Online Stopwatch
Free online stopwatch with lap times. Start, stop, and reset with a clean interface. Record splits and export lap data.
This online stopwatch times anything in your browser with hours, minutes, seconds, and centisecond precision. It uses the browser's high-resolution performance timer, records unlimited lap splits, and exports results as CSV. Press Space to start or stop and L to record a lap. Everything runs client-side - nothing is uploaded or stored on a server.
About Online Stopwatch
How the Stopwatch Works
The stopwatch calculates elapsed time from timestamps, not by counting ticks. When you press Start it records a reference timestamp via performance.now(), then on every animation frame it subtracts that reference from the current timestamp to compute elapsed milliseconds. Because the time shown is always derived from the gap between two timestamps, it never drifts - even if the browser throttles background tabs or the device is under load. The same approach is what powers professional timing libraries and benchmarking tools.
performance.now() is defined by the W3C High Resolution Time specification and returns a DOMHighResTimeStamp measured in milliseconds with microsecond resolution. In modern browsers the value is clamped to 0.1 ms or 1 ms increments (depending on cross-origin isolation state) to mitigate Spectre-style timing attacks. That precision is more than enough for human-scale timing: the biggest source of error in any hand-operated stopwatch is your own reaction time.
| Display Component | Range | Update Frequency |
|---|---|---|
| Hours | 0-99+ | Every second |
| Minutes | 00-59 | Every second |
| Seconds | 00-59 | Every frame (~16ms) |
| Milliseconds | 000-999 | Every frame (~16ms) |
Controls Reference
| Button | Action | When Available |
|---|---|---|
| Start | Begins or resumes the stopwatch | When stopped or paused |
| Stop | Pauses the stopwatch at the current time | While running |
| Lap | Records the current time as a split without stopping | While running |
| Reset | Clears the time and all laps back to zero | When stopped |
Lap and Split Times
Press the Lap button while the stopwatch is running to record a split. Each lap entry shows three pieces of information:
| Column | What It Shows | Example |
|---|---|---|
| Lap number | Sequential count of recorded laps | Lap 3 |
| Lap time | Duration of this individual lap (time since the previous lap) | 1:23.456 |
| Total time | Cumulative time from the start | 4:15.789 |
The lap time column is the most useful for comparing segments. For example, if you are timing intervals in a workout, the lap time tells you how each interval compares to the others, while the total time tells you the overall elapsed time.
Common Uses for a Stopwatch
| Activity | How to Use Laps | What to Look For |
|---|---|---|
| Running intervals | Lap at the end of each sprint or rest period | Consistent lap times indicate steady pacing |
| Cooking | Lap between steps (boil, simmer, rest) | Total time vs recipe estimate |
| Study sessions | Lap at each topic change or chapter | Time spent per topic helps balance revision |
| Board games / puzzles | Lap per turn or per round | Track who takes longest and average turn times |
| Science experiments | Lap at each observation point | Time between events for rate calculations |
| Meeting timing | Lap at each agenda item | Which items overrun their allocated time |
| Music practice | Time each piece or exercise | Total practice time and time per piece |
Stopwatch vs Countdown Timer
| Feature | Stopwatch | Countdown Timer |
|---|---|---|
| Direction | Counts up from zero | Counts down from a set time |
| End point | Runs until you stop it | Stops at zero with an alarm |
| Best for | Measuring how long something takes | Limiting how long something should take |
| Laps | Yes - record splits as you go | Not typically needed |
| Alarm | No alarm (open-ended) | Audible alarm when time is up |
How Accurate Is Human Reaction Time?
Average human simple reaction time to a visual stimulus is around 250 milliseconds, with highly trained athletes reaching roughly 150-200 ms, according to published meta-analyses in the journal Ergonomics and reaction-time databases used in sports science. That means any hand-started stopwatch carries a baseline error of about a quarter of a second per start and another quarter-second per stop. For context, the 2009 IAAF rule required automatic timing for all official 100 m sprints precisely because hand timing was found to flatter times by an average of 0.24 seconds versus electronic gates.
| Scenario | Typical reaction delay | Practical impact |
|---|---|---|
| Trained athlete starting on a gun | 120-180 ms | Near the limit of human anticipation |
| Adult starting on a visual cue | 200-300 ms | Most recreational timing falls here |
| Adult starting on audio and visual cue together | 150-250 ms | Multimodal cues speed up responses |
| Tired or distracted user | 350 ms+ | Sleep loss can double reaction time |
For sub-100-millisecond precision, use automated timing such as photo-finish cameras or electronic sensors. For cooking, workouts, study sprints, and most everyday timing, a browser stopwatch is easily precise enough.
Background Tab Accuracy and Browser Throttling
Most browsers throttle JavaScript timers in background tabs to save battery. Chrome, Edge, and Firefox all reduce setInterval and requestAnimationFrame callbacks when a tab is hidden - Chrome clamps them to roughly one tick per second after 30 seconds in the background, and to one tick per minute on battery-saving laptops. This affects how often the display repaints, but not the underlying time. Because this tool derives the reading from timestamps, you see the correct time the moment you switch back.
If you need guaranteed foreground updates during a long timing session, keep the tab visible. Picture-in-picture or a second monitor works well for cooking and workout use. To pair timing with a count down instead of a count up, the countdown timer runs in the same way but with an alarm when time runs out.
What Is a Worked Example Using Lap Times?
Imagine four 400-metre running intervals with 60 seconds of rest between each. Start the stopwatch on your first step, press Lap when you cross the line, press Lap again when the rest ends, and so on. After eight laps, the table might look like this:
| Lap | Segment | Lap time | Total |
|---|---|---|---|
| 1 | Interval 1 | 01:28.42 | 01:28.42 |
| 2 | Rest 1 | 01:00.15 | 02:28.57 |
| 3 | Interval 2 | 01:29.80 | 03:58.37 |
| 4 | Rest 2 | 01:00.05 | 04:58.42 |
| 5 | Interval 3 | 01:31.20 | 06:29.62 |
| 6 | Rest 3 | 00:59.88 | 07:29.50 |
| 7 | Interval 4 | 01:34.05 | 09:03.55 |
| 8 | Rest 4 | 01:00.21 | 10:03.76 |
The lap column tells you pacing drift - intervals 1-4 slowed from 1:28 to 1:34, a 4% fade typical of lactate accumulation. The total column tells you you finished the full set in just over 10 minutes. Export the table to CSV to build a training log, or paste it into a spreadsheet alongside heart-rate data from your watch.
Stopwatch vs Wall Clock vs Monotonic Clock
There are three ways browsers tell time, and a stopwatch should always use the last one. Wall-clock time from Date.now() can jump forward or backward when the operating system syncs with NTP, daylight-saving kicks in, or the user changes their clock. Manual interval counting adds the expected tick length on each frame, which drifts because frames are never exactly 16.667 ms. Monotonic time from performance.now() always moves forward at a steady rate relative to page load, and is the correct choice for measuring durations.
| Source | Can jump backwards? | Drift over 1 hour | Correct for a stopwatch? |
|---|---|---|---|
Date.now() | Yes (NTP sync, DST, user change) | Depends on host clock | No |
| Counting setInterval ticks | No | Seconds per hour on throttled tabs | No |
performance.now() | No | None (monotonic) | Yes |
Timing Accuracy Comparison
| Timing Method | Typical Accuracy | Limitations |
|---|---|---|
| Browser stopwatch (this tool) | ~1-5 ms | Limited by display refresh rate and human reaction time |
| Phone stopwatch app | ~1-5 ms | Same limitations as browser |
| Mechanical stopwatch | ~100-200 ms | Spring mechanism, harder to read at speed |
| Professional sports timing | ~0.001 ms | Uses electronic sensors, not manual start/stop |
For any hand-operated timer, the biggest source of error is human reaction time (typically 150-300 ms), not the timer's precision. The tool is accurate enough for workouts, cooking, games, study sessions, and any activity where sub-second precision is not critical.
For a fixed-duration timer with an alarm, use the countdown timer. For structured work and break intervals, the Pomodoro timer automates the cycle. To find the tempo of music, the BPM calculator uses similar timing technology.
Common Mistakes When Using a Stopwatch
Pressing Lap then Stop on the line. Laps should be the last press before the finish, not paired with a stop. Pressing both in sequence adds your reaction gap twice. Use Lap alone at the finish and Stop later if you need to end the session.
Forgetting that the first lap includes a reaction delay. Every hand-started lap 1 is slightly longer than the real time because you reacted to the start signal. Subsequent laps only suffer from the lap-press delay, which is consistent per lap and so cancels out when comparing laps against each other.
Comparing hand times to official times. Published race times from the IAAF, World Athletics, and FIFA are all electronic. Subtracting 0.2-0.3 seconds from a hand-timed personal best before comparing is a widely used rule of thumb, as noted by USA Track and Field and the UK Athletics rules of competition.
Trusting browser tabs that have been idle for hours. After long idle periods, some browsers may suspend timers entirely rather than just throttle them. This does not affect this stopwatch because the calculation is timestamp-based, but the display will not update until you tab back. If you need a visible running clock on a second screen, keep the tab in the foreground or pin it.
Sources
- W3C - High Resolution Time Level 3
- MDN - Performance.now()
- MDN - Window.requestAnimationFrame()
- Chrome - Timer throttling in background tabs
- World Athletics - Competition and technical rules (timing)
- PubMed Central - Human simple reaction time meta-analysis
- USA Track and Field - Rules of Competition
Frequently Asked Questions
How accurate is the online stopwatch?
The stopwatch uses your browser's high-resolution performance timer combined with requestAnimationFrame for smooth visual updates. Accuracy is typically within a few milliseconds, which is more than sufficient for everyday timing tasks.
Can I record lap times?
Yes. Press the Lap button while the stopwatch is running to record a split. Each lap entry shows the lap number, the time for that individual lap, and the cumulative total time. All laps appear in a table below the main display.
Does the stopwatch keep running if I switch tabs?
Yes. The stopwatch tracks elapsed time based on timestamps rather than frame counting, so switching to another tab or minimizing your browser does not affect accuracy. The display updates when you return.
Can I use keyboard shortcuts?
Yes. Press Space to start or stop the stopwatch, and L to record a lap while it is running. Shortcuts are disabled while typing in an input field. The on-screen buttons work on both desktop and mobile.
Can I export my lap times?
Yes. Once you have recorded one or more laps, the Export CSV button downloads a spreadsheet with lap number, lap time, and total time. Copy copies the same data as plain text to your clipboard for pasting into notes or messages.
Related Tools
Link to this tool
Copy this HTML to link to this tool from your website or blog.
<a href="https://toolboxkit.io/tools/online-stopwatch/" title="Online Stopwatch - Free Online Tool">Try Online Stopwatch on ToolboxKit.io</a>