The short version
Recovery is a single number from 0 to 100 that answers one question each morning: how ready is your body to take on load today? We don't compare you to anyone else — we compare you to yourself, by learning your personal baselines for the signals that track recovery (heart-rate variability, resting heart rate, sleep, breathing rate, skin temperature, blood oxygen) and measuring how far today sits from your own normal. Each signal is scored, the scores are weighted by how much they actually tell us, and they combine into one number. This page lays out every input, every weight, and every fallback.
Why we're publishing this
Recovery feeds back into almost everything: it scales your Strain, it shapes how much sleep we tell you to get, and it colors the advice your coach gives. A metric with that reach should be inspectable. So here is the complete recipe — what we measure, how we turn a raw heart-rate-variability reading into a 0–100 sub-score, and exactly how the pieces add up.
The core idea: you versus your own baseline
There is no universal "good" HRV or "healthy" resting heart rate that applies to everyone. A value that signals deep recovery for one person signals strain for another. The only meaningful reference is your own recent history.
So for each physiological signal we maintain a rolling personal baseline — the mean and spread of your values over a recent window (about two weeks). Today's reading is then expressed as a z-score: how many standard deviations above or below your normal it sits.
That z-score is mapped to a 0–100 sub-score through a single smooth curve:
sub-score = 70 + 30 × tanh(z)
This tanh shape has three properties we wanted:
- At your baseline (z = 0), you score 70 — a solid, neutral "normal."
- It's gently saturating. A reading one standard deviation better than normal lands near 93; two or three deviations better doesn't keep running off to absurd values. Real recovery signals are noisy, and we don't want a single unusually good (or bad) night to dominate.
- It's symmetric and bounded, naturally living between 40 and 100 before weighting, so no single metric can crater your whole score on noise alone.
For signals where lower is better (resting heart rate, breathing rate) we simply invert the z-score before the curve. For skin temperature, where deviation in either direction is a warning sign (fever, or the dip that can precede illness or hard adaptation), we score the absolute deviation — being far from your normal in either direction pulls the score down.
The six inputs and what each weighs
The final score is a weighted average of up to six sub-scores:
| Input | Weight | Direction | What it tells us |
|---|---|---|---|
| Sleep performance | 0.30 | higher better | Did you get the restorative sleep your body needed? |
| Heart-rate variability (HRV) | 0.25 | higher better | The single best autonomic-nervous-system readout of recovery |
| Resting heart rate | 0.20 | lower better | A rise above your normal flags incomplete recovery, illness, or strain |
| Skin temperature | 0.10 | deviation bad | Departures from your thermal baseline can precede illness |
| Respiratory rate | 0.10 | lower better | A stable, sensitive marker; rises with stress and illness |
| Blood oxygen (SpO₂) | 0.05 | higher better | A secondary signal; informative mostly at its extremes |
The weighting reflects how much each signal genuinely moves the needle on next-day readiness. Sleep and HRV together carry more than half the score — they're the two best-validated recovery signals consumer wearables can measure.[1] Resting heart rate is the reliable third. Skin temperature, breathing rate, and blood oxygen are valuable refinements, weighted to match their (smaller, noisier) contribution.
When a signal is missing
Not every device measures everything, and not every night is clean. If we don't have a signal, we don't guess — we drop it and renormalize the remaining weights so they still sum to one. A score built from sleep and HRV alone is computed over those two weights and is perfectly valid; it just leans entirely on what we actually observed. We also surface a confidence value — the share of the full weighting we were able to use — so you can tell a six-signal reading from a two-signal one. If we have nothing at all to go on, Recovery defaults to a neutral 50.
How sleep enters the score
Sleep is special: it arrives already scored 0–100 by our sleep model,[2] so we don't push it through the z-score curve from scratch. Instead we use that absolute sleep score directly, then nudge it against your sleep baseline: if last night was notably better or worse than your recent norm, we adjust by up to ±10 points. Small, ordinary variation (within half a standard deviation of your normal) gets no adjustment at all — we don't want to manufacture signal from noise.
How your baselines are built
- The rolling window is roughly the last two weeks, always excluding today — today is what we're scoring, so it can't be part of its own reference.
- The baseline is the mean and standard deviation of your values in that window.
- New users and sparse data: until a signal has history, its sub-score falls back to neutral (around 50, or your raw sleep score for sleep). If a signal has history but zero variation (every day identical), we treat it as mildly positive rather than dividing by zero. The score gets sharper and more personal the longer you wear your device — the first weeks are necessarily approximate.
Reading the number
| Band | Score | What it means |
|---|---|---|
| 🟢 Green | ~67–100 | Recovered — your body is ready for load |
| 🟡 Yellow | ~34–66 | Moderate — train, but listen |
| 🔴 Red | 0–33 | Compromised — prioritize rest and recovery |
These bands are guidance, not a verdict. A single red morning after a hard session or a bad night is normal; a string of them is the signal worth acting on.
Cycle awareness
For users who track their menstrual cycle, recovery signals shift predictably with hormonal phase — resting heart rate and body temperature rise in the luteal phase, for instance, which would otherwise read as "poor recovery" when it's simply normal physiology. To avoid penalizing you for your own cycle, we apply a small corrective bump: +3 points in the luteal phase and +2 on the first couple of days of menstruation. It's a light touch — enough to offset the expected baseline shift without papering over a genuinely hard day.
What we're honest about
What we’re honest about
- It's only as good as your sensors. Garbage or absent data in means a less confident score out. We tell you the confidence; weight your trust accordingly.
- Two weeks is a deliberate compromise. A longer baseline is more stable but slower to follow real fitness changes; a shorter one is twitchy. Two weeks tracks your current state without chasing noise — but it does mean a genuine step-change in fitness takes a couple of weeks to fully re-baseline.
- The weights are judgment, not a fitted model. They encode the current evidence on how much each signal predicts readiness. They're defensible and stable, but they're our calibration, and they'll move as the science and our own data do.
- Recovery is an input to Strain, not the other way around. Yesterday's strain doesn't directly enter today's recovery score — its effect reaches you through the physiology it leaves behind (suppressed HRV, elevated resting heart rate, disrupted sleep), which is exactly what these signals are built to detect.
- One number can't capture everything. Stress, illness, alcohol, altitude, and travel all move these signals, and Recovery will reflect them — but it's reading your physiology, not diagnosing the cause. It tells you that you're under-recovered, not always why.
How this metric evolves
This is Recovery v1.0. As we accumulate data we expect to refine the weights, sharpen the baseline windows per signal, and add cleaner illness- and anomaly-detection on top. Material changes will be noted here. If a recovery score consistently feels wrong for a body you know well, tell us — the point of publishing this is that the metric should be defensible in the open.
References
- [1] Plews D.J., Laursen P.B., Stanley J., Kilding A.E., Buchheit M. Training adaptation and heart rate variability in elite endurance athletes: opening the door to effective monitoring. Sports Medicine, 43(9):773–781 (2013). doi:10.1007/s40279-013-0071-8 · Kiviniemi A.M., Hautala A.J., Kinnunen H., Tulppo M.P. Endurance training guided individually by daily heart rate variability measurements. European Journal of Applied Physiology, 101(6):743–751 (2007). doi:10.1007/s00421-007-0552-2 · Vesterinen V., Nummela A., Heikura I., et al. Individual endurance training prescription with heart rate variability. Medicine & Science in Sports & Exercise, 48(7):1347–1354 (2016). doi:10.1249/MSS.0000000000000910
- [2] Watson N.F., et al. Recommended Amount of Sleep for a Healthy Adult. Journal of Clinical Sleep Medicine, 11(6):591–592 (2015). · Hirshkowitz M., et al. National Sleep Foundation's sleep time duration recommendations. Sleep Health, 1(1):40–43 (2015). See the Sleep methodology page for how the sleep sub-score itself is built.
This document describes a proprietary metric. The reasoning and weights are published in the interest of transparency; the underlying implementation is our own.