Countdown Timer

Set an event name, date and time to start a live countdown — pause and resume it, go full-screen, or share it with a link that reproduces the same countdown for anyone who opens it.

The event you enter stays in your browser and in the shareable link itself — nothing is stored on a server.

How the countdown stays accurate

The display is recalculated from the actual system clock on every update, rather than a counter that ticks down by one second per timer callback. Timer callbacks drift under load or when a browser tab is backgrounded — a countdown that just subtracts one second per callback quietly falls behind. Recomputing "target time minus now" every tick can't drift, because it never accumulates timer error in the first place.

Pausing freezes the display; resuming jumps straight back to the true remaining time rather than crediting back the paused interval — the event itself happens at a fixed moment regardless of whether the tab was open.

How does the countdown stay accurate if the tab is in the background?

The remaining time is recalculated from the actual system clock on every update, rather than a counter ticking down by one second per timer callback — a fixed-step counter drifts when the browser is busy or the tab is backgrounded; recomputing from the real clock can't.

What happens when I pause and resume?

Pausing just freezes the display. Resuming jumps straight back to the true remaining time — it doesn't credit back the paused interval, because the event itself happens at a fixed real-world moment regardless of whether the tab was open.

How does the shareable link work?

The event name, date and time are encoded directly into the page URL. Opening that link starts the same countdown — nothing is stored on a server, so the link itself is the only place the event data lives.

What happens after the event passes?

The display switches to counting up instead, showing how much time has elapsed since the event.