Tonight
Tap a step as you complete it. The "now" tag tracks the current time.
Bedtime tonight
Streak
Current
0 days
Best
0 days
Bedtime consistency
Your typical bedtime is —
Log a few bedtimes to see your spread.
the 10-3-2-1 wind-down with a variance-scored streak
Calm nudges, a four-step wind-down, and a streak that rewards going to bed at the same time — not just showing up. No caffeine 10h before bed, no food 3h, no work 2h, no screens 1h.
Tap a step as you complete it. The "now" tag tracks the current time.
Current
0 days
Best
0 days
Your typical bedtime is —
Log a few bedtimes to see your spread.
The 10-3-2-1 rule is a four-step wind-down protocol designed to make falling asleep easier and bedtime more consistent: no caffeine 10 hours before bed, no food 3 hours before bed, no work 2 hours before bed, and no screens 1 hour before bed. Each number is a hard cutoff time calculated backwards from your chosen bedtime, so for an 11 PM bedtime the cutoffs land at 1 PM (caffeine), 8 PM (food), 9 PM (work), and 10 PM (screens).
The appeal of the rule is concreteness. "Better sleep hygiene" is a vague aspiration; "no coffee after 1 PM today" is a single decision you can either make or not. The four cutoffs target the four behaviors with the most direct evidence for sleep disruption — caffeine's 5–6 hour half-life keeps it active into the night, large meals interfere with sleep architecture, work activates the stress-response system, and short-wavelength screen light suppresses melatonin. The 10-3-2-1 framing has been popularized on YouTube and TikTok over the last two years as a memorable shorthand for sleep doctors' general advice.
The Bedtime Consistency Tracker pairs the 10-3-2-1 rule with a streak that doesn't just count how many days you showed up — it requires your actual bedtime to land in a tight window around your personal median. The combination measures both the cause (the four wind-down behaviors) and the outcome (a consistent bedtime).
Most sleep apps reward duration: 8 hours of sleep is the gold star. That's useful, but it isn't the lever most adults can actually pull. You can't reliably will yourself into eight hours; you can reliably move your bedtime within a 30-minute window. And the regularity of that bedtime turns out to be one of the strongest predictors of sleep quality — the modern sleep-science literature (Czeisler, Walker, AASM consensus statements) consistently puts consistent timing above total minutes for healthy non-shift-worker adults.
So this tracker measures what you can actually control. A night owl who goes to bed at 1:15 AM ± 12 minutes is doing better, by this rule, than someone who averages 11 PM but ranges 9 PM to 2 AM. The streak rewards holding a window — your window, set by your own median.
Bedtime variance alone is a clean signal but a thin daily ritual: you'd open the app once a night, tap one button, and close it. The 10-3-2-1 ladder is the practice that makes a consistent bedtime achievable — the four cutoffs are the things that actually move bedtime earlier on average. Coupling them inside the streak rule means the streak measures the outcome (bedtime consistency) while the ticks support the cause (the wind-down behaviors). Hit the wind-down and your bedtime tends to fall in the window; the streak just confirms it.
Don't move your target bedtime around. The whole point of the consistency score is that your median is the truth — moving the target every week means the cutoffs shift and the wind-down stops feeling familiar. Pick a target you can hold for at least a week, then adjust deliberately.
The 10-hour caffeine cutoff feels extreme on day one. It's the most punishing step for most people and the one with the biggest research evidence behind it — caffeine's half-life is 5–6 hours, so a 3 PM cold brew is still doing real work at midnight. If you can't get there yet, tick 3 of 4 (skipping the caffeine rung) and let the streak still count. The threshold setting is there for exactly this reason.
If you're shift-working or otherwise on a non-standard schedule, this tracker may not help. The streak rule assumes you sleep at roughly the same time every night, in the evening-to-early-morning window. If your bedtimes legitimately span noon and midnight in the same week, your median is meaningless and the variance score won't tell you anything useful.
No. There is no sign-in, no email field, and no profile. Everything you enter is saved only in this browser's local storage on your own device. Nothing is sent to any server.
Two things have to be true for a night to count toward the streak: (1) you ticked at least the threshold number of wind-down steps (default 3 of 4), and (2) your actual bedtime sat within ± your tolerance (default 30 minutes) of your personal 14-night median. The streak walks backwards from tonight's sleep day. If tonight has no bedtime logged yet — you might still be mid-wind-down or simply haven't gone to bed — a one-night grace applies and the walk starts from last night instead. Once tonight has a bedtime logged, the rule applies firmly: a bedtime far off your median is a genuine streak break, not a "still in progress" state.
With fewer than 3 logged bedtimes, the variance check is skipped — the streak counts on wind-down ticks alone. As soon as you have at least 3 nights logged, the median kicks in and the tolerance starts mattering. With 14+ nights, the median is a rolling window of the most recent 14.
A 0–100 number derived from the standard deviation of your last 14 logged bedtimes. Zero spread (the same bedtime every night) is 100; roughly a one-hour standard deviation is 0. It's there so you have a meaningful number from day 3 onwards, before the streak has had time to build. Unlike the streak, the score is informational only — it never breaks. Watch it climb as your bedtimes converge.
You have a one-night grace period. If you haven't logged a bedtime for tonight, the streak walks from last night instead — so a single "I forgot to open the app" doesn't reset progress. Two consecutive unlogged nights breaks the streak. Use the calendar to log retroactively if you want.
Yes — the rule scores consistency, not duration, so a bedtime that's far earlier than your median breaks the streak the same way a far-later one does. If your 14-night median is 11:00 PM and your tolerance is 30 minutes, a 9:30 PM bedtime is 90 minutes off and counts as a break. That's by design: "going to bed at the same time every night" is the lever, and an unusually early night is just as inconsistent as an unusually late one. If you're deliberately shifting your schedule, expect the streak to reset while your median catches up over the next two weeks.
Each day's tile is colored by its outcome: green if the night qualified for the streak (enough wind-down ticks and bedtime within tolerance of your median), amber if you logged something but didn't qualify (close-but-not-quite — a couple of ticks short or just outside tolerance), red if your bedtime was more than twice your tolerance off the median or you logged only zero-to-one ticks with no bedtime, and gray if the day has no log at all.
So bedtimes that cross midnight (11:50 PM one night, 12:15 AM the next) come out adjacent on the math, not 24 hours apart. Internally the tracker treats each "sleep day" as a window that rolls over at noon: an 11:30 PM bedtime and a 1:30 AM bedtime are both logged against the same calendar date — the night you started. The drift calculation against your median is also cyclic, so a bedtime at 11:55 PM and a median at 12:10 AM are scored as 15 minutes apart, not 23 hours and 45 minutes.
Not in this version. The rule is the rule: 10, 3, 2, 1 hours before bed. If a different schedule works for you, the threshold setting lets you require fewer ticks (e.g., 2 of 4) without changing the cutoffs themselves.
Not via push notifications — the web platform can't reliably notify you while the tab is closed. The ladder's live "now" tag and the bedtime log button on this page are the closest the app gets. If you keep the tab open in the evening, the wind-down rungs naturally surface as the cutoff times pass.
The tracker resets, because progress is stored locally rather than in an account. Switching browsers, switching devices, or using private browsing has the same effect.
Once the page has finished loading, all tracking works without an internet connection. Reconnecting is only needed to load the page initially or to visit other pages on OmniAppHub.