Skip to main content

Timer, Stopwatch & Counter

A practical countdown, lap stopwatch, and goal counter in one screen, with presets, an audible alert, fullscreen mode, and persistent counter data.

Timer

00:25:00

Set a duration and start the timer

Presets

Custom duration

How to use

  1. 1

    Choose Timer, Stopwatch, or Counter from the tabs.

  2. 2

    For a countdown, use a preset or enter hours, minutes, and seconds, then enable the completion sound if needed.

  3. 3

    Use Lap on the stopwatch to record both split and total times, then copy the complete list.

  4. 4

    Give the counter a name, optional goal, and step. Its current value is saved in the browser and the last 20 changes can be undone.

Features

  • An end-time anchored countdown that avoids cumulative interval drift
  • Presets from 1 to 60 minutes, custom duration, audible alert, and fullscreen mode
  • Centisecond display with split and total lap recording and copy support
  • A counter with custom step, visible goal progress, and 20 undo points
  • Automatic browser storage for the counter name, value, goal, and step

FAQ

Q. Does the timer stay accurate in a background tab?

A. It recalculates from the target end time on every update, so delayed callbacks do not accumulate. A sleeping device may still postpone the audible alert.

Q. What does split time mean in the lap list?

A. It is the time since the previous lap. The total elapsed time is shown beside it so you can compare individual intervals.

Q. When can saved counter data disappear?

A. It is not shared across browsers or devices and is removed when site data is cleared or a private session ends. Copy important progress before clearing browser data.

Technical Notes: Drift Correction and Timing Data

Adding one second on every setInterval callback causes delayed callbacks to accumulate as drift. The countdown stores a target end timestamp and recalculates the remaining duration from the current time on every update.

The stopwatch uses the monotonic performance.now() clock. It combines the accumulated duration before a pause with the difference measured after a restart, and stores both split and total times for each lap.

Persistent counter data is serialized as one JSON value in localStorage. Undo history stays in the current tab only, so obsolete operation history does not persist indefinitely.

Data Handling & Security Notes

Timer, stopwatch, and lap values remain in browser memory and are discarded on reload.

Only the counter name, value, goal, and step are stored in this site's localStorage. Clearing site data removes them.