Timer
GeneratorsEverything runs locally in your browser — nothing is uploaded
⚠️ `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
- Tap a preset, or type a duration (25m, 90s, 1:30)
- Press Start, or just hit Space
- Space pauses and resumes; R resets
- 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
Online Stopwatch
GeneratorsA lap-timing stopwatch: Space to start or pause, L to lap, R to reset. Marks the fastest and slowest laps and keeps running in a background tab.
Meeting Speaker Timer
GeneratorsPaste a list of speakers and their minutes: it shows who is up and how long is left, beeps when time is up, and marks overtime without skipping ahead.
Reaction Time Test
GeneratorsClick the panel when it turns green: the wait is randomised each time, clicking early counts as a false start, and results show best and median.
UUID Generator
GeneratorsGenerate a column of UUID v4, v7, ULID, NanoID or MongoDB ObjectId values, one per line, ready to paste into a spreadsheet. Runs in your browser.
Lorem Ipsum
GeneratorsGenerate placeholder text as Latin lorem ipsum, English sentences, Chinese or Japanese filler, in paragraphs, sentences or words — all in your browser.
Mock Data
GeneratorsDescribe your fields once and get realistic mock records, exportable as JSON, CSV, TSV, SQL, XML, YAML or TOML. All generated in your browser.