induwara.lk
induwara.lkUtility · Time

Online Alarm Clock — Free, No Signup, Runs in Your Browser

Set one alarm or twelve. Pick a sound, choose which days it should repeat, and snooze when it rings. The countdown stays accurate even when the tab is in the background, and nothing leaves your device.

By Induwara AshinsanaUpdated May 11, 2026
Alarm clock0 armed · 0 saved
Cross-checked · 2 algorithms
Current time · 24h
11:59:47
Friday, July 3, 2026
Armed
0 of 0
Next alarm
Fires in
No alarms armed
Tab title
Off

Add an alarm

Hours 00–23, minutes 00–59. Tap to use the native time picker.

Shown on the ringing screen and in the tab title.

Pick zero days for a one-shot alarm that fires once and turns itself off.

Saved locally in your browser — never uploaded.
No alarms yet — add one above. They'll be saved in your browser so they're here next time you open this page.
Your browser doesn't support notifications. The alarm will still ring on this page.
Schedule verified by two algorithms. Everything runs in your browser — alarms persist in localStorage and never reach a server.

How it works

The alarm clock is a thin layer over three browser APIs that have been part of the web platform for over a decade: the JavaScriptDate object for wall-clock time, the Web Audio API for synthesised sound, and localStorage for persistence. There is no server. Open the page, set an alarm, close every other tab — the alarm still rings.

The next-fire computation is the most error-prone part of any alarm clock. We compute it two independent ways and show the "cross-checked" badge only when both agree. Algorithm one (used by the UI) walks calendar days:

  1. Start at offset 0 (today). Build a candidate Date at HH:MM:00.000 on that day.
  2. If the candidate is earlier than "now", advance to the next day. Otherwise it's a valid candidate.
  3. For a recurring alarm, also require that the candidate's weekday is in the alarm's day set. If not, advance.
  4. Repeat for up to 7 day offsets. The first day that satisfies the day-set is the next fire time.

Algorithm two scans minute-by-minute from floor-now-to-minuteup to eight days in the future (worst-case 11,520 iterations). It returns the first minute whose hour, minute, and weekday all match, where the candidate timestamp is not earlier than "now". The two algorithms produce the same Date for every alarm we've tested, including the tricky cases below — midnight, exact-second boundaries, weekend-only alarms set on a weekday.

When an alarm fires, the audio playback loop schedules one cycle of the chosen sound (each cycle is the frequency list × 0.45 s per step) and re-schedules every cycle on a setInterval until the user clicks Stop. Snooze does not modify the alarm — it sets an internal "next-fire-at" deadline 5 minutes ahead, stops the current sound, and lets the tick loop catch the deadline and fire again. The original recurring schedule is unchanged.

Tab-title updates use a deterministic format — HH:MM in 1h 30m — induwara.lk — so you can pin the tab and check the countdown without switching context. The format collapses sensibly at long durations (days) and tightens to seconds in the final minute.

Worked examples

Daily 09:00 — alarm in the same calendar day

  1. Now: Mon 2026-05-11 08:30:00 (local)
  2. Try offset 0: today 09:00:00. 09:00 > 08:30 → candidate accepted.
  3. Weekday set is every day → Mon is in the set → match.
  4. Next fire = Mon 2026-05-11 09:00:00.
  5. ms until = 30 × 60 × 1000 = 1,800,000 ms.
  6. Scan algorithm confirms identical timestamp ✓

Weekdays 07:00 — set on a Saturday

  1. Now: Sat 2026-05-09 06:00:00
  2. Days set = {Mon, Tue, Wed, Thu, Fri} = {1, 2, 3, 4, 5}
  3. Offset 0: Sat 07:00 ✓ (future) but Sat (day=6) ∉ set → skip.
  4. Offset 1: Sun 07:00 (day=0) ∉ set → skip.
  5. Offset 2: Mon 07:00 (day=1) ∈ set → match.
  6. Next fire = Mon 2026-05-11 07:00. ms until = 49 × 3,600,000 = 176,400,000.

Midnight 00:00 — boundary case at end of day

  1. Now: Mon 2026-05-11 23:59:59.000
  2. Offset 0: Mon 00:00:00 — 00:00 < 23:59:59 → skip.
  3. Offset 1: Tue 00:00:00 — accepted, day matches (Every day).
  4. Next fire = Tue 2026-05-12 00:00:00. ms until = 1,000 ms.
  5. Scan algorithm walks Mon 23:59 → Tue 00:00 and returns the same instant.

Frequently asked questions

Sources & references

Behaviour last cross-checked on 2026-05-11. APIs used here have been stable web platform features for over a decade; this page is reviewed annually or when a relevant spec change ships.

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Found a bug, edge case, or want to suggest an improvement?

Email me at [email protected] — most fixes ship within 24 hours.