WRLD CLOCK

Alarm

Back to world clock

No alarm set

--:--

Your next alarm is not set.

Keep this tab open. Browsers may pause alarms if the device sleeps.

Set a one-time alarm using the local time on this device.

What it does

Pick a time and the alarm fires once, at the next occurrence of that time on this device. If the time you choose has already passed today, the alarm rolls forward to tomorrow, so 06:30 set at midnight means the following morning rather than an alarm that never rings.

Keep the tab open

The alarm is scheduled inside this page, so the tab has to stay open for it to sound. Phones and laptops that fall asleep can delay or suppress the tone entirely — for anything you cannot afford to miss, set a second alarm on the device itself.

What pressing Set alarm does

The time field is a pending value. Until you press Set alarm it is not an alarm, and the readout above it does not show it. Pressing the button runs a short, fixed sequence. The page reads the hour and minute from the field, asks this device for today's date at that hour and minute with the seconds set to zero, and compares that instant with the device's clock. If the instant is now or earlier, the page moves it forward by one day. It then subtracts the current moment from the target to get the wait, schedules a single callback for that wait, and shows the armed time in the readout. That subtraction happens once. The page keeps the target instant, but only to show it in the readout: the schedule is that one fixed wait, and it is never recomputed from the stored target. The callback is scheduled inside the page and nothing writes the target to storage, which is why the tab has to stay open. Pressing the button again — it reads Update alarm once something is armed — repeats the same sequence with whatever is in the field now and replaces the earlier schedule, so there is only ever one alarm on the page. Cancel discards the schedule and returns the page to its idle state without ringing.

The roll-forward rule, worked through

The rule in the first section can be read off two fixed examples, each computed from the engine's wall-clock arithmetic for the dates stated. Take Wednesday 14 January 2026 with the device clock reading 23:50, and an alarm set for 06:30. That day's 06:30 is already behind, so the alarm rolls to Thursday the 15th, and the wait is 6 hours 40 minutes. Now take the following morning, Thursday the 15th, with the clock reading 06:20 and the same 06:30 alarm: the target is still ahead, no roll-forward happens, and the wait is 10 minutes. The page never displays these waits — its readout shows the target time, not a countdown — but the subline under the readout names the day the alarm will ring, which is how you can tell which of the two cases you are in. An alarm that rolled forward is announced with tomorrow's date, and that is the page working as designed rather than a mistake to correct.

Seconds are not part of the alarm

The time field takes an hour and a minute, and the alarm instant is always the start of that minute: the seconds are set to zero before anything else happens. The consequences can be computed. With the clock reading 06:29:59 on Thursday 15 January 2026 and the alarm set for 06:30, the start of the minute is still ahead by 1 second, so the alarm rings almost at once. With the clock reading 06:30:40 and the same alarm, the start of that minute is already behind, the comparison is "now or earlier", and the alarm rolls to Friday the 16th: the wait is 23 hours 59 minutes 20 seconds. At exactly 06:30:00 the comparison also rolls forward, and the wait is 24 hours. So an alarm set for the minute you are in is an alarm for tomorrow, and the subline will say so. If you want it to ring soon, set the next minute rather than the current one.

The exception to the anchor engine

The countdown, pomodoro, speech and interval timers each store an epoch anchor and derive their display from now minus that anchor on every tick, so nothing accumulates between ticks and a reload resumes from the stored epochs. The alarm is one of two timing tools not built on that engine (the stopwatch is the other); it is scheduled inside its page. In practice that means three things. It keeps the target instant only to show it in the readout; the schedule is one fixed wait, computed when Set alarm is pressed and never recomputed from that target. It has no stored envelope — the persistence module keeps keys for the pomodoro, speech, interval, countdown timers only, and nothing on this page writes one — so a reload or a closed tab brings back a page with no alarm set. And nothing on the page re-derives the schedule after an interruption, because the callback was scheduled once and the target was never written anywhere it could be read back from. The methodology page describes the engine as a whole, and the guide on how the timers stay accurate works through what the anchors guarantee with fixed example instants; the alarm is the case those guarantees do not reach.

How to read the display

The stage above the controls names its state in its small label: No alarm set, Alarm set, or Ringing now. With nothing armed the large readout shows --:--, because there is no time to show and the page does not invent one from the field. Once armed, the readout shows the target time in the way this device writes times, with AM or PM set to one side where the locale uses them, and the subline underneath reads Alarm set for, then the time, then on, then the weekday and date. The date is how a roll-forward shows itself. When the alarm goes off, the label changes to Ringing now, the tone plays, the tab title becomes Alarm · WRLD CLOCK, and the subline changes to two sentences: Alarm ringing now. Dismiss it to clear the display. The readout keeps showing the time the alarm was set for until you press Dismiss, which returns the page to its idle state and restores the tab title. The primary button reads Set alarm with nothing armed and Update alarm once something is; Cancel appears only while an alarm is armed, and Dismiss only while one is ringing.

The device's own zone rules

The alarm does no time-zone arithmetic of its own. It asks the device for today's date at the hour and minute you typed and lets the device's own zone rules place that instant — the same platform rule the countdown's date-and-time mode relies on. The practical reading is the one the questions below give: the time you type is the time you will see on the device when it rings. If the device's clock or zone setting is wrong, the alarm follows it, because it has nothing else to follow and checks it against nothing. The guide on counting down across daylight saving works through the countdown's target mode under the same platform rule; the alarm places its target the same way.

What the alarm does not do

It fires once. There is no repeat, no second alarm and no snooze; pressing Update alarm replaces the schedule rather than adding to it. It takes a time, not a date, so the target is always the next occurrence of that time: 24 hours ahead at most for the January example above, and an hour more or less than that on a night the clocks change, for the reason the guide on counting down across daylight saving gives for the countdown's target mode, which the alarm follows. It does not count down: the readout shows the target, not the time remaining, so the 6 hours 40 minutes wait from the example above is never displayed here, whereas the countdown in its date-and-time mode would show that same wait as 06:40:00 and count it down to zero. It does not survive a reload, for the reason given above. It does not read the query string: the shareable preset links described on the methodology page cover the pomodoro, speech, interval and countdown timers, and an alarm has to be set by hand on the page. It does not change the device's clock or zone, and it does not check them against anything. For a target further ahead than a day, use the countdown; for a sequence that repeats, the pomodoro timer or the interval timer.

Common misreadings

The field is not the alarm. Editing the time field after pressing Set alarm changes nothing until Update alarm is pressed; the readout keeps showing the armed time and the subline keeps naming it, precisely so the field cannot be mistaken for the schedule. Tomorrow is not an error. An alarm set for a time already behind you — including the minute you are in — is an alarm for tomorrow, and the date in the subline says so. A reload is not a pause. The anchored timers resume from their stored epochs after a reload; the alarm stores no epoch to resume from, so the only state that counts is a page that is open and a device that is awake. Phones and laptops that fall asleep can delay or suppress the tone entirely. The advice above stands: for anything you cannot afford to miss, set a second alarm on the device itself. The tone is the whole event on the page. The page plays it and changes its own title, then waits for Dismiss.

Questions

Does the alarm work if I close the tab?
No. The alarm lives in this page, so closing the tab or the browser cancels it. Leave the tab open, and ideally keep the device awake.
Which time zone does the alarm use?
Your own. The alarm reads the clock and time zone your device reports, so the time you type is the time you will see on the device when it rings.
I set the alarm for the minute I am in and the page says tomorrow. Why?
Because the alarm instant is the start of the chosen minute, with the seconds set to zero, and a target that is now or earlier rolls forward by a day. With the clock reading 06:30:40 and an alarm set for 06:30, the start of that minute is already behind you, so the alarm is for 06:30 tomorrow and the wait is 23 hours 59 minutes 20 seconds. Set the next minute instead if you want it to ring soon.
I changed the time field. Has the alarm changed?
No. The field is a pending value and the readout shows only the armed alarm, never the field. Press Update alarm to replace the schedule with the field's current value; until then, the alarm you set earlier is the one that will ring.
What happens if I reload the page?
The alarm is gone and the page opens with nothing set. The countdown, pomodoro, speech and interval timers save their running state as epochs and resume from them after a reload; the alarm has no stored envelope — the persistence module keeps keys for the pomodoro, speech, interval, countdown timers only — and nothing on this page writes one.
Can I set more than one alarm, or a repeating one?
No. The page holds one schedule, and Update alarm replaces it. For a sequence that repeats, the pomodoro timer chains focus and break phases and the interval timer compiles rounds of work and rest; for a single moment further away than a day, use the countdown in its date-and-time mode.
Can I share an alarm as a link?
Not for the alarm. The shareable preset links cover the pomodoro, speech, interval and countdown timers; the alarm reads nothing from the address and has to be set on the page. A countdown to a fixed instant can be shared with its ?at= parameter if a link is what you need.
Why does the readout show --:--?
Nothing is armed. The readout shows only an alarm that has been set or one that is ringing, never the contents of the time field, so with no alarm there is no time to show. Press Set alarm and the readout fills with the armed time.

The waits quoted on this page were computed from the engine's own wall-clock arithmetic when the site was built, for the fixed example dates stated; the alarm itself reads this device's clock only when Set alarm is pressed. The methodology page describes every tool's engine.