Skip to main content

Free Sleep Cycle Calculator

Find the best time to go to bed or wake up based on 90-minute sleep cycles, so you wake between cycles feeling refreshed instead of groggy.

Works offline once loaded
Fine-tune
Go to bed at
9:45 PM
9 hrs
6 cycles Β· ideal
Go to bed at
11:15 PM
7.5 hrs
5 cycles Β· ideal
Go to bed at
12:45 AM
6 hrs
4 cycles
Go to bed at
2:15 AM
4.5 hrs
3 cycles

πŸ’‘ Sleep happens in ~90-minute cycles. Waking at the end of a cycle (rather than mid-cycle) helps you feel refreshed instead of groggy. Most adults do best with 5–6 cycles (7.5–9 hours), plus ~15 minutes to drift off. Actual cycle length and sleep needs vary by person and age. These are general estimates, not medical advice.

Common uses

  • Find the Best Bedtime to Wake Up RefreshedEnter your alarm time and get bedtimes that align with sleep cycles.
  • Plan an Early Morning Wake-UpCatching an early flight or meeting? Find the bedtime that minimizes grogginess.
  • Time a Power NapUse Nap mode to set the perfect alarm for a 10–20 minute power nap or a full 90-minute cycle.
  • Schedule Sleep for Shift WorkPlan cycle-aligned sleep around night shifts and rotating schedules.
  • Set a Bedtime for School Wake-UpsWork back from the school alarm to a consistent, cycle-friendly bedtime.

How It Works

All calculation happens in your browser using plain JavaScript arithmetic on Date objects β€” no external library, no server call. The tool works backward or forward from a time you provide, fitting complete 90-minute sleep cycles (adjustable) plus a configurable fall-asleep latency so the suggested times land between cycles, not inside one.

  1. 1
    Pick a mode and anchor time
    Choose whether you know your wake time (calculate when to go to bed), your bedtime (calculate when to wake up), or want a nap alarm. You can type a specific time or let the tool anchor to the current clock via JavaScript's Date object, which refreshes automatically every 30 seconds while the tab is open.
  2. 2
    Cycle arithmetic runs instantly
    The calculator iterates from 6 down to 3 sleep cycles. For each count it multiplies cycles by your chosen cycle length (default 90 minutes, adjustable to 80–110 via a range slider) and adds your sleep-latency offset (default 15 minutes, adjustable to 0–45), then adds or subtracts that total from your anchor time using Date.setMinutes.
  3. 3
    Intl.DateTimeFormat formats results for your locale
    Rather than hardcoding AM/PM, the tool passes your browser locale to Intl.DateTimeFormat so the displayed times respect your region's 12-hour or 24-hour convention automatically. Five- and six-cycle results (7.5–9 hours) are highlighted as recommended.
  4. 4
    Copy or download a calendar reminder
    Each result row has a copy button that writes the time string to the clipboard via navigator.clipboard, and a calendar button that hand-builds a valid iCalendar (.ics) file β€” including a zero-offset VALARM β€” and triggers a download via Blob, so you can import the reminder into any calendar app.

Related Tools

Frequently Asked Questions