[HEALTH]
Read Your Recovery Score in Base
[THE SHORT ANSWER]
The recovery score is three standardised measures against your own thirty-day history — heart-rate variability, resting heart rate and sleep — weighted and mapped onto a 0 to 100 scale centred on 50. Fifty is an average day for you. It needs about a month of data before the baseline means anything, and it shows nothing rather than guessing when an input is missing.
The formula
Base publishes it, in the app and here, in the same wording as the code comment beside the implementation:
zHRV = (todayHRV − mean30d) ÷ sd30d
zRHR = (mean30d − todayRHR) ÷ sd30d // inverted: lower is better
zSleep = (todaySleep − mean30d) ÷ sd30d
z = 0.5 × zHRV + 0.3 × zRHR + 0.2 × zSleep
score = clamp(50 + 15 × z, 0, 100)
Each input is expressed as a z-score: how many standard deviations today sits from your own thirty-day mean. That is what makes the score personal rather than comparative — it has no opinion about whether your HRV is high in absolute terms, only whether it is high for you.
Resting heart rate is inverted, because lower is better there and higher is better for the other two.
The weights
| Input | Weight | Why |
|---|---|---|
| HRV | 0.5 | Most responsive to autonomic state day to day |
| Resting HR | 0.3 | Same direction, slower, less resolution |
| Sleep | 0.2 | An input to recovery rather than a measure of it |
The weighting reflects how much signal each carries, not how important each is in life. Sleep matters enormously; last night's sleep duration is just a weaker instrument for reading today's autonomic state than HRV is.
The scale
50 + 15 × z puts one standard deviation at 15 points. So:
- 50 — a normal day for you
- 65 — one SD better than normal
- 35 — one SD worse
- 80 / 20 — two SDs, genuinely unusual
Clamping to 0–100 keeps an extreme reading on the scale.
Why your own baseline
A population-referenced recovery score tells you how your autonomic state compares to other people, which is close to useless. Absolute HRV varies enormously between individuals for reasons that have nothing to do with training — age, genetics, measurement method.
What predicts today is whether you are above or below your normal. That is what a z-score against your own history measures.
The cost is that the score is meaningless for the first few weeks. Base needs thirty days to have a baseline worth comparing against, and until then the number moves for reasons that are mostly about the baseline still forming.
Missing inputs
If an input is missing, no score is shown.
This is the same rule as everywhere else in the app and it matters most here. A score computed from two inputs with the third silently defaulted would look identical to a real score, and would be indistinguishable from a genuine low. Since the most common missing input is a night the watch was charging, the fabricated score would systematically appear on exactly the days you most want to trust it.
What it drives
Two things, both covered in handling a deload:
- The readiness banner on the Workout tab, when the score is low enough to count as a fatigue signal
- Your RIR target, backed off by about a rep when under-recovered
Note the second is a nudge, not a cancellation. Under real fatigue the same bar sits further from failure than it feels, and holding the usual target turns into a missed set and a 10% deload. Backing off a rep keeps the session productive.
What it cannot see
Illness in its early stages, psychological stress, alcohol the night before, a newborn, travel across time zones, and how your warm-up sets actually moved.
Some of those do show up indirectly — alcohol reliably depresses HRV — but the score sees three numbers. It is one input to a decision, and you have others it does not.
Common mistakes
Reading it in week one. The baseline is not formed.
Skipping training on any score below 50. Half your days are below 50 by construction.
Treating it as a health metric. It is a training-readiness signal, not a diagnosis.
Chasing HRV. It is a measurement, not a target, and most interventions that "raise HRV" work by improving recovery — which the score is trying to measure rather than be.
Assuming a missing score is a bug. It means an input was missing, which is the honest rendering.
Ignoring it every week because you always feel fine. Signals are useful precisely when they disagree with how you feel.
What to do next
Long-press the recovery tile on your dashboard and read the formula. Then check whether your thirty-day baseline has enough data behind it — if you have worn the watch for under a month, the number is still settling and is not yet worth acting on.
Questions
How is the recovery score calculated?
Three standardised scores against your own thirty-day history — heart-rate variability, resting heart rate and sleep — weighted 50/30/20, combined, and mapped onto a 0 to 100 scale centred on 50. A score of 50 means an average day for you; higher is better recovered than your normal.
Why is HRV weighted most heavily?
Because it is the most responsive of the three to autonomic state. Resting heart rate moves in the same direction more slowly and with less resolution, and sleep is an input to recovery rather than a measure of it. The weighting reflects how much signal each carries, not how important each is in general.
What does a score of 50 mean?
An average day, for you. The score is centred on your own thirty-day baseline rather than on a population, so 50 is your normal rather than a middling result. That is why it takes about a month of data before the number means anything.
Why is my recovery score missing?
Because one or more inputs is missing, most often a night the watch was not worn. Base shows no score rather than computing one from partial data, because a score with a fabricated input reads exactly like a real one and would be indistinguishable from a genuine low.
Should I skip training on a low recovery score?
Not automatically. Base backs your RIR target off by about a rep when under-recovered, which keeps the session productive rather than cancelling it. The score sees three numbers and does not know you slept badly because of a newborn or that your warm-up sets moved well. It is information, not an instruction.
[KEEP READING]
[HELP]
Read Your Sleep Score and Stages in Base
Deep sleep is when repair happens. REM carries a disproportionate share of the night's testosterone release.
[HELP]
When Base Tells You to Deload, and Why
Two independent fatigue signals firing at once is the trigger. Week six is the backstop, not the rule.
[HELP]
Connect Apple Health or Health Connect to Base
Base reads from one store per platform, and never sums two sources for the same metric.