Calculate sleep cycle

Count backward from a fixed wake time to two bedtimes separated by 90-minute sleep intervals.

freeworks offlinenothing uploaded
ToolSleep Cycle Calculator
Input
Output
Put this on your own site

The frame below runs the same code as this page, in the reader's own browser. Nothing is sent to us, and nothing is sent to you.

Pick a dark background and the text and panels follow it, so the frame stays readable on a dark page.

Preview

How it works

The entered sleep-onset delay is removed first, followed by either 6 × 90 minutes for 9 hours or 5 × 90 minutes for 7.5 hours. The clock wraps through midnight and returns times without dates; 90 minutes is the midpoint of the approximate 80-to-100-minute cycle range, not a measured personal cycle.

Formula
candidate bedtime = wake time − sleep-onset delay − 90 minutes × cycle count
  • Sleep-onset delay is required because assuming 15 minutes would move both candidate times.
  • Only the 7.5- and 9-hour intervals are shown, avoiding the former 4.5- and 6-hour suggestions.

Worked example

Waking at seven
The bedtimes that land on a cycle boundary
Input
											Wake time: 07:00
Minutes to fall asleep: 15
										
Output
												Bedtimes: 21:45, 23:15
Cycles: 6, 5
Recommended: 21:45 for 6 cycles
Hours if recommended: 9
											

When to use this

Work and school alarms can be counted backward into candidate lights-out times, sleep diaries compare scheduled time in bed with onset delay, and shift schedules use the previous-day result when the clock wraps past midnight.

Edge cases

  • Actual sleep cycles vary from roughly 80 to 100 minutes and change during the night, but both candidates retain fixed 90-minute blocks.
  • Night-to-night variation in time to fall asleep is compressed into one entered delay that shifts both results equally.
  • A time that wraps before midnight has no date attached, so 23:15 means the previous calendar day for a morning alarm.

References