Sleep Cycle Calculator
Pick a wake-up time and get candidate bedtimes at 4–6 cycles of the conventional 90 minutes — or flip the mode to turn a bedtime into wake times. The fall-asleep buffer is yours to edit. Recovery pairs with training load: the TDEE Calculator and heart-rate zones cover the daytime side.
Plan around your cycles
Example: wake at 7:00 AM, 5 cycles + 15 min to fall asleep → in bed by 11:15 PM.
The arithmetic behind the clock times
Each option is (cycles × 90 minutes) of sleep plus your fall-asleep buffer, counted back from the wake time (or forward from the bedtime), wrapping across midnight when needed. That is the whole computation. The tool reads no sensor, asks for no age or weight or history, and holds no model of the person using it: every time it prints is a restatement of the two values you typed, rearranged by multiplication and addition.
Worth stating early, because cycle calculators are widely read as though they know something about the sleeper. This one knows a clock time and a delay you estimated yourself. Here is the full wake-mode schedule for a 7:00 AM alarm at the default allowance of 15 minutes, computed at build time by the same tested engine the form runs:
- 6 cycles — 9 h of sleep, 9 h 15 min in bed, so get into bed at 9:45 PM.
- 5 cycles — 7 h 30 min of sleep, 7 h 45 min in bed, so get into bed at 11:15 PM.
- 4 cycles — 6 h of sleep, 6 h 15 min in bed, so get into bed at 12:45 AM.
The 4-cycle row is the one bedtime that does not belong to the previous evening: it lands at 12:45 AM, on the same calendar day as the alarm, because its offset is shorter than the alarm's own distance from midnight. The longer options do reach back past midnight — counted back they would run to negative minutes, and the engine normalises them into the previous evening rather than printing a negative time. The 6-cycle bedtime of 9:45 PM and the 5-cycle bedtime of 11:15 PM for 7 h 30 min of sleep are both produced that way.
Where the 90-minute figure comes from — and where it breaks
The scheduler treats a cycle as 90 minutes because that is the conventional average used for planning. The engine stores it directly beside a second constant that keeps it honest: a typical measured range of roughly 70–110 minutes. Both live in the same source file deliberately. The first is what the tool schedules with; the second is how far the first can sit from any particular night.
That gap is why the output is a planning heuristic rather than a prediction of where an alarm falls inside a cycle, and the gap does not conveniently cancel out. The schedule stacks cycles end to end, so whatever difference exists between the convention and a real cycle length is added once per cycle: at the longest option on the list, 6 of them have accumulated before the alarm goes. The far end of the night is where a fixed convention is least able to say anything precise, which is exactly why the tool prints a short menu instead of one confident time.
The corollary is worth being blunt about. Because the calculator never observes a cycle — yours or anyone else's — it cannot tell you that your alarm landed on a boundary, and it equally cannot tell you that it missed one. There is no verdict here to fail. What the convention genuinely offers is regularity: a bedtime reached by a rule instead of by drift.
The companion guide — sleep cycles and choosing a wake time — is the longer read, taking the same ground at more length: what the scheduler computes, what the 90-minute convention can and cannot support, worked examples in both directions, and the ways the printed times are most often over-read.
Why the tool asks how long you take to fall asleep
Cycles are counted from sleep onset, not from lights out. A scheduler that ignored the gap between the two would be wrong in the same direction for every user who does not fall asleep instantly, and wrong without ever saying so. So the calculator asks, defaults to 15 minutes, and accepts anything from zero up to 120 minutes.
The allowance is added to the sleep total once, before the offset is applied, so it shifts every listed time one for one and changes no sleep duration at all. Keep the 7:00 AM alarm from above and raise the allowance from 15 to 40 minutes: the 5-cycle bedtime moves from 11:15 PM to 10:50 PM, the sleep total stays at 7 h 30 min, and the time in bed grows to 8 h 10 min. The extra 25 minutes buy no extra sleep. They move the bedtime earlier by exactly as much as you added.
Two limits on that input deserve naming. It is a self-estimate, so the figure you type is a belief about your evenings and every printed time inherits its error. And it is a fixed buffer rather than a model of falling asleep: if a particular night runs far longer than the number you entered, the schedule was computed hours earlier and cannot notice.
The other direction: a bedtime already decided
Wake mode suits the usual weekday shape, where the alarm is fixed and the evening is negotiable. Bedtime mode answers the question people actually have late at night — not "when should I go to bed", which the clock has already settled, but "given that I am going to bed now, what does the remaining night contain". The arithmetic is identical; only the sign of the offset changes. Getting into bed at 11:10 PM with an allowance of 20 minutes gives:
- 6 cycles — 9 h of sleep, 9 h 20 min in bed, so the alarm goes at 8:30 AM.
- 5 cycles — 7 h 30 min of sleep, 7 h 50 min in bed, so the alarm goes at 7:00 AM.
- 4 cycles — 6 h of sleep, 6 h 20 min in bed, so the alarm goes at 5:30 AM.
Every option here crosses midnight, and the engine wraps each one back into a valid clock time — the 5-cycle alarm at 7:00 AM, for instance, belongs to the following morning. None of these is a recommendation. The list is the set of wake times that complete a whole number of conventional cycles from the moment you are likely to be asleep, and which of them is usable depends on obligations the calculator has never been told about.
Why 3 options rather than one answer
A single printed bedtime would imply a precision the 90-minute convention does not have. A short menu carries the uncertainty on its face: these are the times that complete 6, 5 or 4 conventional cycles, and adjacent options sit a full cycle — 90 minutes — apart, which is wider than any confidence the convention could justify within one of them.
The menu is also the more useful shape in practice, because the constraint people bring to a sleep scheduler is rarely "what is optimal" and almost always "what fits". Options spanning 6 h to 9 h of sleep let a schedule be matched to the evening that exists. The tool does not rank them and this page will not either: how much sleep a particular person needs is outside what clock arithmetic can address, and nothing here should be read as an answer to it.
Reading the printed times honestly
Most of the ways a cycle schedule goes wrong are ways of reading it rather than ways of computing it. Three are worth stating plainly:
- The printed minute is not a deadline. Times are shown to the minute because clocks have minutes, not because the estimate is good to the minute. A cycle length ranging across 70–110 minutes implies a tolerance far wider than the digit in the ones column.
- Fewer cycles is not a more efficient night. The 4-cycle option is simply the shortest whole number of conventional cycles on the list. That is the entire claim being made about it.
- The output is not personalised. Two people entering the same wake time and the same allowance receive identical times, whatever their cycles are actually doing, because no input describes either of them.
Everything the scheduler does happens in your browser, and the time you enter is never transmitted. Every worked example above was produced at build time by the same tested functions the calculator runs, so the copy and the code cannot drift apart — if they disagreed, the site would fail to build. What none of that buys is knowledge of your sleep. A clock-arithmetic tool arranges times; it does not measure a night or assess anything about it.
Frequently asked questions
Why plan sleep in 90-minute blocks?
Because 90 minutes is the conventional cycle length this engine schedules with — a population average, stored in the code as exactly that. Multiplying it by a whole number of cycles gives a repeatable target that is the same tonight as it was last night, arrived at by a rule rather than by drift. That is the entire claim: the arithmetic is regular, not that it has located anything happening in your night.
Is everyone's cycle exactly 90 minutes?
No — that is this calculator's most important caveat. The engine stores a typical measured range of roughly 70–110 minutes right next to the 90-minute figure it plans with. Cycle length differs between people, so the printed times are planning targets that complete a whole number of conventional cycles, not predictions about where an alarm will fall.
What does the fall-asleep buffer do?
Cycles are counted from sleep onset, not from lights out. The buffer defaults to 15 minutes and accepts anything from 0 to 120, and it is added to the sleep total once, before the offset is applied — so changing it shifts every listed time by exactly that much and leaves the sleep durations untouched. A value further from an ordinary evening moves every printed time by the same amount as the discrepancy.
Which cycle count should I pick?
The tool lists 3 options and does not rank them: 6 cycles is 9 h of sleep, 5 is 7 h 30 min, and 4 is 6 h. How much sleep a particular person needs is not a question clock arithmetic can answer, and this site does not answer it. The menu exists so a schedule can be fitted to constraints the calculator knows nothing about — the alarm your work fixes, the evening everything else fixes.
Why does one of the bedtimes land after midnight?
Because the offset for a short option can be smaller than the alarm's own distance from midnight, so counting back does not reach the previous evening and the bedtime stays on the alarm's calendar date. Longer options do cross midnight, and the engine normalises them into a valid clock time rather than printing a negative number of minutes. Both are ordinary output, not errors.
Is the schedule personalised to me?
No. The only inputs are a clock time and an allowance you estimated yourself, so two people entering the same values receive identical output. The calculator reads no sensor, asks for no age or history, and holds no model of the person using it — which is why nothing it prints should be read as a statement about you.
What if a "good" time does not work out?
There is no verdict here to fail. The tool cannot locate your real cycle boundaries, so it cannot tell you that an alarm landed on one, and equally cannot tell you that it missed one — nothing in the arithmetic could establish either. This planner arranges clock times and makes no claims about sleep quality or sleep disorders; persistent trouble with sleep is a matter for a qualified clinician.
Not medical advice: this calculator provides general educational estimates from published population formulas. It cannot account for your individual health context and must not be used to diagnose or treat any condition — consult a qualified healthcare professional. It does calendar arithmetic on a population-average cycle length and does not assess sleep quality or sleep disorders. Times you enter are processed locally in your browser and never transmitted. See the methodology page.