What sleep_regularity measures
sleep_regularity is a number from 0 to 1 describing how consistent bed and wake times were over the last week. It is independent of how long the user slept. A short but identical schedule every night scores 1.
| Field | sleep_regularity |
|---|---|
| Unit | Index from 0 to 1 |
| Reported | Weekly periodicity, recomputed whenever a new night’s timing lands |
| Window | The last 7 sleep days |
| Wearable required | No |
| API | GET /api/v1/profile/biomarker/{externalId}?categories=sleep&types=sleep_regularity plus a date range |
| Webhook | BiomarkerCreatedIntegrationEvent. Entries update in place, upsert on id. |
Data sources
Regularity has no source of its own. It reads the stored sleep_start_time and sleep_end_time biomarkers for each of the last 7 sleep days, whichever source won each night. See sleep timing for how those are derived and sleep duration for how the night’s source is chosen.
How Sahha calculates sleep_regularity
- For each sleep day in the last 7, take the stored start and end times, expressed as minutes from 6pm on the evening the window opened.
- For each pair of consecutive nights, compute the absolute shift in start time and the absolute shift in end time.
- Average the start shifts and the end shifts separately, add them, divide by 720, and subtract from 1. Floor at 0.
- If fewer than 2 nights have both times, no value is written.
The construction follows the Sleep Regularity Index of Phillips et al. [1]. For a person with one sleep period per night, the minutes of mismatched sleep-wake state between two consecutive days equal the start shift plus the end shift, so the two formulations agree. Naps and split sleep are not represented.
A worked example: bedtimes of 11pm, 11:30pm, and 10:45pm with wake times of 7am, 7:15am, and 6:30am give average shifts of 37.5 and 30 minutes, so regularity is 1 minus 67.5 over 720, which is 0.91.
Absence means fewer than two nights of timing data, not irregularity.
Interpreting the value
Convert to minutes for the user. Multiply the distance from 1 by 720 to get the total average shift in minutes. A value of 0.75 is a three-hour combined shift. That is what users understand.
Weekend shift dominates most people’s value. A weekday schedule that is identical five nights running and slides two hours on Friday and Saturday produces roughly 0.85 to 0.9. The value is sensitive to the size of the weekend shift, not to small weekday noise.
It reacts within a week. The window is 7 days, so a single late night is fully forgotten a week later.
Related scores and insights
Score factor. Sleep regularity is a factor, under the name sleep_regularity, in the Sleep, Wellbeing, and Mental Wellbeing scores, with unit index and goal 1. The factor score is the value itself, with no transformation.
Trend. A sleep_regularity trend is available.
Comparison. None.
Archetypes. sleep_regularity (highly_irregular_sleeper to highly_regular_sleeper) is derived from it directly. sleep_pattern combines it with timing to label consistent and inconsistent early risers and late sleepers.
Use cases
A schedule-consistency streak. Count consecutive weeks with regularity at or above the user’s recent typical value. It recognises keeping a schedule rather than sleeping more, which suits users who cannot add hours.
GET /api/v1/profile/biomarker/{externalId}?categories=sleep&types=sleep_regularity&startDateTime=2026-08-05&endDateTime=2026-09-02A “your weekend is the problem” insight. Compare the shift between Friday and Saturday nights with the weekday shifts using the timing biomarkers. If the weekend accounts for most of the distance from 1, say so.
A prerequisite gate for other sleep coaching. Regularity is the sleep factor most within a user’s control. Coaching on stages or latency before regularity is above roughly 0.8 usually fails.
Limitations
- One late night is a big hit. With 7 nights, a single 3-hour shift in bedtime costs about 0.07 on its own.
- Phone-estimated nights add noise. Estimated windows move by tens of minutes between nights even for a regular sleeper.
- Split sleep is misrepresented. A biphasic sleeper with a consistent pattern can score low because only the longer session sets the times.
- The unit label may read as a percentage in some outputs even though the value is a 0 to 1 index.
- Absence is not zero.
Related guides
- Sleep timing for the start and end times regularity is built from
- Sleep debt for the other weekly sleep signal
- Sleep duration for how the night’s source is chosen
- Sleep Score explained for the seven sleep factors
- Data dictionary in the developer docs
References
- Phillips AJK, Clerx WM, O’Brien CS, et al. Irregular sleep/wake patterns are associated with poorer academic performance and delayed circadian and sleep/wake timing. Scientific Reports. 2017;7:3216. https://doi.org/10.1038/s41598-017-03171-4