WRLD CLOCK

Countdown

Back to world clock

Countdown

00:05:00

Ready. Press start, or press the space bar.

Full screen turns this into a room display: very large digits, high contrast, and no advertising on screen.

This browser does not offer the Screen Wake Lock API, so the display can still dim or sleep while the timer runs. Set the screen timeout on the device before a talk or a class.

Count a duration or a fixed date and time, full screen, with your own message under the clock.

Two ways to count

Duration mode counts a length of time — five minutes for a presentation slot, ninety seconds for a demo, forty minutes for an exam section. Date-and-time mode counts to a fixed instant: doors at 19:30, a launch on Friday, midnight on New Year's Eve. Both read the same clock, so you can switch between them without losing your place.

Built for a room, not just a desk

Full screen turns the page into a room display: oversized digits, high contrast, no navigation, and no advertising on screen. Your message sits under the clock, which is usually all an audience needs — Doors close, Break ends, Round two. Press Escape or use the exit button to come back.

It does not drift, and it survives a reload

The countdown stores the instant it should reach zero and recomputes the remaining time from the system clock several times a second. Nothing is accumulated tick by tick, so an hour-long countdown ends when it should rather than seconds late. Reloading the page mid-count restores the same target, because that target is what was saved — not a number of seconds left.

Daylight saving is handled honestly

A date-and-time countdown is measured against the wall clock in this device's own time zone. If the clocks change between now and the target, the countdown is an hour shorter or longer than the calendar suggests, which is exactly what will happen in the room.

What the countdown actually stores

A duration countdown is in one of three states: idle, running against an end instant, or paused holding a balance. Pressing start takes the duration and the current instant and records only their sum — the epoch at which the count reaches zero. Every frame after that, the display is that end instant minus now; there is no counter that is decremented, and so nothing that can fall behind when a tick arrives late. Take the default of 5 minutes started at a fixed instant, 2026-01-14T09:00:00Z — which instant does not matter, since every figure below is a difference from it. After 1 minute the engine reports 00:04:00. Pause at that moment and the run becomes a stored balance; 20 minutes later it still reads 00:04:00, because a paused balance is a number, not a clock. Resume, and the engine adds the balance to the instant of resuming to make a fresh end instant — so the resumed run reads 00:04:00 and now ends 25 minutes after the original start: the time counted before the pause, plus the time spent paused, plus the balance that remained.

The default, the floor and the ceiling

The shipped duration is 5 minutes, which the readout shows as 00:05:00. It is a starting point you change, not a limit. Settings are normalised before a run starts, and the bounds are fixed: a duration below 1 second is raised to 1 second, and anything above the ceiling is held there, so asking for 120 hours yields 99:00:00, which is 99 hours. The message shown under the clock is cut at 120 characters — a message of 240 characters is kept to the first 120. Mode is normalised too: a saved or shared setting that asks for date-and-time mode without a readable target is normalised back to duration mode at 5 minutes when the page loads, which is why the tool never opens on an empty, unusable count.

How a date and time is read

Date-and-time mode takes a plain datetime-local value — a year, month and day, a Tor a space, then hours and minutes, with seconds optional — and reads it as a local-time instant using this device's own zone rules, daylight saving included. Values that cannot be an instant are rejected rather than guessed at: 2026-02-31T00:00 would roll into March, so it is rejected; 2026-06-15T25:00 names an hour that does not exist, so it is rejected. A space in place of the T is read the same way: 2026-12-25 09:00 parses to the same instant as 2026-12-25T09:00, and the methodology pagetables the accepted and rejected shapes. A time that does not exist only because the clocks sprang forward that morning normalises to the following instant, matching the platform's own resolution. Once a target is readable the label above the digits names it in full — weekday, date and time — in your own locale and zone. The remaining time is then target minus now: for 2026-12-25T09:00, 36 hours before that target the engine reports 36:00:00, and 5 seconds after it the figure is negative — minus 5 seconds— the engine's sign for a target that has passed; the readout holds at 00:00:00 rather than counting past it.

Exactly one hour, measured

Because the target is read as wall-clock time, a count that spans a clock change is short or long by exactly one hour, and one that spans no change is not altered at all. The zones are fixed inputs here — New York's America/New_York and Sydney's Australia/Sydney, both taken from this site's own city list — with each night evaluated from the offsets Intl reports for its zone when the page is built, using the site's own zone-offset helper rather than the countdown parser, which only knows your device's zone. In New York, the night of 2026-03-07T20:00 to 2026-03-08T08:00 is written as 12 hours and measures 11 hours — 1 hour shorter than written — because Intl reports UTC−5 at its start and UTC−4 at its end. In Sydney, the night of 2026-04-04T20:00 to 2026-04-05T08:00, also written as 12 hours, measures 13 hours, 1 hour longer than written, with UTC+11 at its start and UTC+10 at its end. The mid-year check in Sydney, 2026-06-14T20:00 to 2026-06-15T08:00, measures 12 hours — the written span exactly — with UTC+10 at its start and UTC+10at its end. The engine's own parser does that arithmetic in whatever zone your device keeps, so the same written night comes out differently in different zones: the New York night of 2026-03-07T20:00, measured instead in Sydney's zone, is 12 hours — the written span exactly — with UTC+11 at its start and UTC+11at its end. What does not change is the rule, which is the one a wall clock on the venue's wall follows. The guide on counting down to a date across daylight saving works through the two directions in detail.

How to read the display

The readout is hours, minutes and seconds, with the hours field always present, so the default shows as 00:05:00 rather than a bare minutes-and-seconds pair. Seconds are rounded up, not down. That is why a freshly started count reads 00:05:00 for its first second instead of flashing one second less at once: the engine formats a remaining time 400 milliseconds short of the full duration as 00:05:00. The same rule means the last millisecond still reads 00:00:01, and 00:00:00appears only when the remaining time is genuinely zero. A date-and-time target is labelled with the engine's own description of that instant, in full, in your own locale and zone. Your message, if you set one, sits under the clock, and while the count runs the browser tab carries the same remaining figure, so a backgrounded timer is still readable from the tab strip.

What the countdown does not do

It does not count past zero. The engine's remaining figure for a run is clamped at zero unless a timer asks to count past it, and the countdown does not ask: on the fixed example, 5 seconds after the default run's end instant the engine reports 00:00:00, and only with the option the countdown leaves off would it report -00:00:05. If you need to see how far over time a speaker has run, the speech timer is the tool built to keep counting into the negative. A date-and-time countdown cannot be paused: the engine keeps no run state for a target — the figure is the target instant minus now, parsed afresh from the typed string whenever it is needed — so there is no balance to hold, and stopping the count would mean moving the target; use a duration when a count needs to stop and start. It reads the target in this device's zone only — a countdown to nine in the morning somewhere else needs that time converted to your own wall clock first. And, described rather than simulated, the page cannot ring from a tab that is closed: the display is correct whenever a tick runs, and a reload restores the saved end instant, but nothing ticks while no page is open, and a device that has gone to sleep can delay or suppress the tone. For an unattended end-of-day alert, the alarm clock page sets out the same limits for a clock time.

Restoring after a reload

The running state is saved to this browser as an envelope holding the end instant of a running count, or the balance of a paused one — never a figure that has to be counted down from the moment of reload — so a reload picks the count up exactly where the wall clock says it should be — including reloads that happen while a phone was in a pocket. The envelope records when it was written, and a saved run older than 12 hours is dropped back to a fresh, idle timer rather than resumed as if nothing had happened. On the fixed example, a run saved at the start instant is restored when the page is opened 1 hour later and discarded when it is opened 13 hours later. The check runs the other way too, for a device whose clock has been set back since the save: an envelope dated 45 minutes ahead of the clock is restored, and one dated 2 hours ahead is discarded. The boundary between those two is the engine's own, not a figure typed here: an envelope dated exactly 1 hour ahead is restored, and one dated 1 hour 1 second ahead is discarded. Before age is even considered the envelope has to decode: the engine's own saved text for the default run is decoded by its own decoder, and the same text with its version number altered is rejected, so a stored envelope that is not valid JSON, carries another version, or holds a state the timer's validator refuses opens the timer idle. What comes back from a restore is the state, not a figure: the default run saved while running and reopened 1 hour later comes back as a running state whose end instant passed 55 minutes before the page was opened — it reads 00:00:00, and the engine reports it expired — while the same run saved paused at 00:04:00 reopens at 00:04:00 — a paused balance is a number, and waits.

Shareable setup

The whole configuration fits in the query string, so a bookmark can stand in for setup instructions. Copy preset link writes the shortest token that round-trips: the default produces ?d=5m, and a count to 2026-12-25T09:00 with the message “Doors open” produces ?at=2026-12-25T09%3A00&msg=Doors+open (the colon is percent-encoded and the space in the message becomes a plus when the link is copied; read back through the parser the target names the same instant as the plain ?at=2026-12-25T09:00form in the questions below, and the message reads “Doors open” again). Parsing is forgiving about form and strict about validity. ?d=90s opens the timer at 1 minute 30 seconds; ?d=banana cannot be read, so it is ignored and the timer opens at the default 5 minutes — a mangled link still opens a working timer. Clock and compound tokens are read too: the token 05:00 parses to 5 minutes and 1h30m to 1 hour 30 minutes; the guide on shareable timer links lists every form.

Common misreadings

“It started a second late” — it did not; the readout holds the full figure for the first second because seconds round up, and the end instant was fixed the moment you pressed start. “My overnight count is an hour out” — if the clocks changed during the night, the count is one hour shorter or longer than the calendar arithmetic, exactly as the wall clock in the room will be. “Reloading reset it” — a reload restores the saved run. The timer opens idle when nothing was saved, or when the envelope is older than 12 hours, is dated more than 1 hourahead of this device's clock, or cannot be decoded; a run whose end instant has already passed is still restored, reading 00:00:00, and the engine reports it expired. “The link opened the default, not my date” — a target the parser cannot read is ignored and the default kept: ?at=25%2F12%2F2026+09%3A00, which carries the day-first 25/12/2026 09:00, opens in duration mode at 5 minutes, because only the year-first datetime-localshape is accepted. “I cannot pause it” — a date-and-time target has no pause, by design: the engine keeps no run state for a target; use a duration if the count needs to stop and start.

Questions

Can I share a configured countdown?
Yes. Copy preset link produces a URL that carries the setup, such as ?d=25m for a twenty-five minute countdown or ?at=2026-12-25T09:00 for a fixed instant, with an optional &msg= for the message under the clock. Anyone opening that link gets the same timer.
What happens if I reload while it is running?
The countdown resumes at the correct remaining time. The target instant is stored in this browser and the remaining time is recalculated from it on load, so a reload costs nothing.
Will my screen stay awake in full screen?
Where the browser supports the Screen Wake Lock API, yes — the timer holds a lock while it is running and this tab is visible. Where it does not, the page says so rather than pretending, and you should raise the device's own screen timeout.
Does the tab title show the countdown?
Yes. While the countdown runs, the browser tab shows the remaining time, so a backgrounded timer is still readable from the tab strip.
What is the longest countdown I can set?
Duration mode runs up to 99 hours, shown as 99:00:00; a longer figure is held at that ceiling — a figure a preset link such as ?d=99h reaches, opening at 99 hours — and anything under 1 second is raised to 1 second. Date-and-time mode is not clamped — it counts to whatever instant you choose.
Why does it read 00:05:00 for a moment after I press start?
Because seconds are rounded up. The engine formats a remaining time 400 milliseconds short of 5 minutes as 00:05:00, so the full figure holds for the first second and 00:00:00 appears only when the remaining time is genuinely zero. The end instant itself was fixed the moment you pressed start.
Can I pause a countdown to a date and time?
No. The engine keeps no run state for a date-and-time target: the remaining figure is the target instant minus now, parsed afresh from the typed string whenever it is needed, so there is no balance to hold and pausing would mean moving the target. Duration mode pauses by holding the remaining balance and resumes by adding it to the instant you resume at.
Does it keep counting after it reaches zero?
No. At the target the readout holds at 00:00:00: the engine's remaining figure is clamped at zero unless a timer asks to count past it, and the countdown does not ask. The speech timer is the tool that keeps counting into the negative, so a speaker can see how far over they are.

Every figure in this text is computed when the page is built, by calling the countdown engine — and, for the daylight-saving nights, the site's own zone-offset helpers — with the engine's defaults or with the fixed inputs stated beside each example. The methodology page sets out the same mechanisms for the whole timer suite.