piapia123
en

Timer

Generators

Everything runs locally in your browser — nothing is uploaded

Countdown
00:00

⚠️ `1:30` means **1 minute 30 seconds** (reading right to left: minutes, seconds). For 1 hour 30 minutes write `1h30m` or `90m`.

Keyboard: Space to start or pause, R to reset

A timer that counts down or up: enter a duration (25m, 90s, 1:30) and press Start to count down, or leave it empty to count up. Common durations are a row of presets, 25 minutes among them for a pomodoro. ⚠️ One convention comes first: 1:30 means 1 minute 30 seconds, since the colon form reads right to left as seconds, minutes, hours. For 1 hour 30 minutes write 1h30m or 90m. That ambiguity is the classic trap in this kind of field, so it is fixed rather than guessed, and the rule is printed under the input. The clock is monotonic (performance.now()) rather than wall time, so a system time correction, a timezone change or a manual clock change cannot make the countdown jump. The alarm is synthesised in the browser rather than loaded from a file, which means this page makes no network requests at all.

Features

  • Counts down or up (leave the duration empty to count up)
  • Nine presets: 1, 3, 5, 10, 15, 25 (pomodoro), 30, 45 minutes and 1 hour
  • The readout switches to tenths for the last ten seconds, so you are not squinting at whole seconds
  • An alarm at zero, synthesised with an oscillator, plus a note of how far past zero you are
  • Pausing and resuming loses no time and does not jump; elapsed and start point are tracked separately
  • ⚠️ A monotonic clock, so a system time correction cannot stretch or shrink the countdown
  • Keyboard: Space starts or pauses, R resets
  • Decimals and units both parse: 1h30m, 90s, 2.5m
  • Everything runs in your browser; no network requests

How to use

  1. Tap a preset, or type a duration (25m, 90s, 1:30)
  2. Press Start, or just hit Space
  3. Space pauses and resumes; R resets
  4. At zero it beeps three times and shows how many seconds past zero you are; the timer keeps running

FAQ

Is 1:30 one and a half minutes or one and a half hours?
Here it is 1 minute 30 seconds. The colon form reads right to left as seconds, minutes, hours, so 1:30 is ninety seconds, 0:05:00 is five minutes and 1:30:00 is ninety minutes. It is fixed rather than guessed because both readings are plausible, and guessing wrong means an alarm an hour early or late with no warning at all. For ninety minutes write 1h30m or 90m, which have no ambiguity.
Why does the timer keep running past zero?
Because it counts up as well. Past zero the readout notes how many seconds over you are, which is useful in plenty of situations: in a meeting you may want to know that a planned fifteen minutes actually took nineteen, and a timer that freezes at zero loses that number. To stop immediately, press Space or R.
Will a system clock change throw the countdown off?
No. The clock is monotonic (performance.now()), which only ever moves forward from the moment the page opened, unaffected by time corrections, timezone changes or a manual clock change. An implementation based on wall time can have a single time correction turn a 25 minute countdown into 24 or 26 minutes, and that kind of drift shows up only on some machines, which makes it hard to reproduce.
Does it keep counting if I close the page?
No. This is a purely client-side page with no background worker and no notifications, so closing the tab ends the timer. That makes it right for sitting in front of it (cooking, a break, a focus block) and wrong for waking you up tomorrow morning. Use your phone alarm for that.

Related tools