The days until Christmas calculator tells you exactly how long is left until 25 December in days, sleeps, weeks, hours and minutes — all live, using your device clock and local time zone. Whether you are counting down with children, planning deliveries, booking a holiday or just curious, this tool gives you every useful measure at a glance.
How it works
The calculator reads your device clock and builds a target at midnight on 25 December of the chosen year (local time). It then computes the difference between now and that target and breaks it into several complementary units:
Days — whole 24-hour periods remaining, calculated as the floor of the total milliseconds divided by 86,400,000.
Sleeps — the ceiling of the same division. A sleep counts the nights you will rest before waking on Christmas morning. If only 3 hours remain you have zero full days left but still one sleep. This is the measure most meaningful to children (and many adults).
Weeks and days — the total days divided into complete 7-day weeks plus the leftover days.
Hours, minutes, seconds — the live ticker shows the precise moment Christmas will arrive in your time zone, updating once per second.
The donut ring fills as the waiting period shrinks. It measures progress from 1 January 00:00 to 25 December 00:00 of the target year. When the ring is full, it is Christmas.
Worked example
Suppose today is 1 October 2026 at 09:00 in London (GMT+1). Christmas 2026 is on Friday 25 December:
- Distance from 1 Oct 09:00 to 25 Dec 00:00 is 84 days and 15 hours — so 84 whole days remaining.
- Sleeps = ceil(84 + 15/24) = ceil(84.625) = 85 sleeps.
- That is 12 weeks and 0 days (12 × 7 = 84).
- In hours: 84 × 24 + 15 = 2,031 hours remaining.
- The donut would show roughly (275 / 359) ≈ 76% of the waiting period elapsed (where 359 days run from 1 Jan to 25 Dec).
Once Christmas passes, switching the dropdown to Christmas 2027 immediately recalculates all figures for the next year.
Formula note
All arithmetic uses only your device clock and standard date-arithmetic — no network calls, no external APIs:
- Total milliseconds remaining =
christmasDate.getTime() - Date.now() - Days =
Math.floor(totalMs / 86_400_000) - Sleeps =
Math.ceil(totalMs / 86_400_000) - Total hours =
Math.floor(totalMs / 3_600_000) - Total minutes =
Math.floor(totalMs / 60_000) - Donut progress =
(now - Jan1OfTargetYear) / (Dec25OfTargetYear - Jan1OfTargetYear)
The live ticker re-evaluates these expressions every second via setInterval, so the display stays accurate even if you leave the page open overnight.