What sleep_efficiency measures
sleep_efficiency is the fraction of time in bed that was spent asleep: sleep duration divided by time in bed, between 0 and 1.
| Field | sleep_efficiency |
|---|---|
| Unit | Ratio from 0 to 1 |
| Reported | Daily, one value per night, when both inputs exist |
| Window | 6pm to 6pm, profile local time. Dated by the morning the window ends. |
| Wearable required | Yes, for a meaningful value |
| API | GET /api/v1/profile/biomarker/{externalId}?categories=sleep&types=sleep_efficiency plus a date range |
| Webhook | BiomarkerCreatedIntegrationEvent. Entries update in place, upsert on id. |
Data sources
Efficiency has no source of its own. It is computed from the stored sleep_duration and sleep_in_bed_duration biomarkers, so it inherits the night’s winning source as described under sleep duration. It is meaningful only when that source separates asleep from in bed:
| Source type | Efficiency |
|---|---|
| Stages or asleep periods plus in-bed (watches, rings, most Health Connect writers) | Meaningful |
| Asleep periods without an in-bed record | Duration equals the merged asleep time and in-bed equals the same records, so the value approaches 1 |
| In-bed only, including the phone estimate | Exactly 1, by construction |
How Sahha calculates sleep_efficiency
- Wait for both
sleep_durationandsleep_in_bed_durationto exist for the sleep day. - Divide duration by in-bed duration.
- Rewrite whenever either input changes.
Absence means one of the inputs is missing.
Interpreting the value
Above 0.85 is conventionally good. Clinical sleep medicine uses 85 percent as the usual threshold [1]. Values between 0.75 and 0.85 over a week suggest a lot of time awake in bed. Below 0.75 sustained is unusual for healthy sleepers and usually a device artefact or a real problem.
A value of 1.00 is a warning, not a result. Real sleepers are never perfectly efficient. A run of 1.00 values means the source cannot distinguish asleep from in bed.
Low efficiency has two causes the ratio cannot separate. Long latency and mid-night waking both reduce it. Use latency and interruptions to tell them apart.
Related scores and insights
Efficiency is not a score factor and has no trend or comparison. The sleep_efficiency archetype (highly_inefficient_sleeper to highly_efficient_sleeper) is derived from it and, like the biomarker, requires a wearable.
Use cases
A “time in bed you are not sleeping” number. In-bed minus duration, shown in minutes, is more actionable than the ratio. Pair it with the archetype label for the weekly view.
GET /api/v1/profile/biomarker/{externalId}?categories=sleep&types=sleep_efficiency&types=sleep_in_bed_duration&types=sleep_duration&startDateTime=2026-08-26&endDateTime=2026-09-02A sleep-restriction nudge. For users consistently below 0.8 with long time in bed, the evidence-based advice is to spend less time in bed, not more. It is the one sleep metric where the intervention runs opposite to intuition, and worth a dedicated flow.
Limitations
- Filter out values of exactly 1. Treat them as no data.
- It inherits both inputs’ source quirks. A totals-only provider gives a plausible ratio from session totals; a stage-based watch gives a different one from intervals. Compare within a source.
- Naps count in both inputs if the source records them in the window.
- Absence is not zero.
Related guides
- Time in bed and sleep duration for the two inputs
- Sleep latency and sleep interruptions for the two things that lower efficiency
- Archetypes explained for how the efficiency archetype is assigned
- Data dictionary in the developer docs
References
- Reed DL, Sacco WP. Measuring sleep efficiency: what should the denominator be? Journal of Clinical Sleep Medicine. 2016;12(2):263-266. https://doi.org/10.5664/jcsm.5498