Last updated: 31 July 2026
Garmin calls it Body Battery, Whoop calls it a Recovery Score. Apple Health has no answer to the question — and it is one of the most common reasons runners switch to Garmin. This page shows which 4 factors Runnerd builds its readiness score from, at what weights, why it works without an Apple Watch, and where it stops.
The score is a value between 0 and 100. It comes from 4 quantities, all of them either read from Apple Health or computed from it:
Heart rate variability, 30 %. The variation between your heartbeats overnight. It shows how recovered your autonomic nervous system is. Higher is better. Runnerd compares your value as a z-score against your own baseline over the past 60 days.
Resting heart rate, 20 %. The same calculation, inverted: lower is better. An elevated resting heart rate is one of the earliest signs that your body is still working — on recovery, or on an infection.
Sleep, 25 %. Two parts. 60 % of this sub-score comes from duration, where 7 to 9 hours counts as optimal. 40 % comes from quality: deep sleep and REM together should make up at least 30 %.
TSB, 25 %. Your form from the performance management chart — the difference between long-term fitness and current fatigue. TSB is scored not as a raw number but as a percentage of your CTL — the same −9 weighs twice as much at CTL 30 as at CTL 60. Balanced form (0 %) gives 50 points, +20 % gives 90, −20 % gives 10. How that number comes about is on the page about CTL, ATL and TSB.
Each factor is normalised to 0–100, then added with its weight:
A resting heart rate of 52 says nothing on its own. For one runner that is a good day, for another a warning. So Runnerd does not compare against a standard table but against your own values over the past 60 days.
That comes with one condition: for a stable z-score, heart rate variability needs at least 7 data points within those 60 days. Until they exist, the HRV factor stays out and its weight moves to the others.
Apple asks for each data type separately, and some values are simply absent: no watch on your wrist overnight, no sleep tracking active, HRV without a baseline yet. Runnerd does not treat that as an error. The score always appears — it gets better the more data flows in.
When a factor is missing, Runnerd spreads its weight across the rest:
In practice: without an Apple Watch you get a score from your runs. With an Apple Watch but no sleep tracking you get a considerably more precise one. And the display does not hide what is missing — the sub-values sit under the score, and anything unavailable is marked as unavailable.
One caveat belongs here: TSB counts as reliable only from 21 days of training history. Before that it is treated as a missing factor. If no factor is usable at all, Runnerd shows the neutral value 50 rather than false precision.
What the weights actually do shows up across two days. The sub-values appear here as finished scores between 0 and 100. How a z-score turns into points does not matter for the example. What matters is what the weighting makes of them.
Monday morning, after Sunday's long run. Heart rate variability sits below your baseline and gives 45 points. Resting heart rate is elevated: 40. You slept well: 70. TSB stands at −9 — around −15 % of your CTL — which puts it at 20.
44 means moderate: keep the intensity down. The long run is still in your legs, and 2 of the 4 factors show it independently of each other. Good sleep lifts the value but does not tip it.
Thursday morning, after 3 easy days. Variability is back above baseline: 72. Resting heart rate is normal: 68. Sleep was average: 65. TSB has recovered to −2 — around −3 % — and sits at 44.
62 means ready. From 44 to 62 in 3 days. Nothing about your fitness changed — the score measures recovery, not capability. Where Monday's −9 comes from is shown in the worked training week.
The score is not just displayed, it changes the recommendation. On a high score Runnerd suggests intensity, provided your ratio of easy to hard runs holds up. On a middling score it stays with easy sessions. On a low score it recommends a rest day and names the sub-value pulling the score down.
Those same sub-values feed the notes on the coach page: "resting heart rate slightly elevated", "HRV 12 % above baseline", "sleep quality below your average". So there is not just a number, there is the reason for it.
It does not measure recovery, it estimates it. From 4 numbers. Sore quads after a downhill run, neuromuscular fatigue, stress at work, bad news — the score knows none of it.
It is not a medical statement. A low score may be an infection starting, or simply a hard training week. Runnerd does not tell those apart and does not claim to.
Stale data makes it blunt. If values are older than 24 hours, Runnerd marks that and carries on with the last known state.
Your own sense beats the number. If the score says 82 and your legs say 40, the legs are right.
Download Runnerd and let it read your Apple Health data once. The score then sits on the coach page: the value, the level, the 4 sub-values and the past 7 days. One look in the morning, and the question is answered.
Runnerd is free. Pro unlocks the full analytical depth, a one-time 8.99 € for Mac and iPhone together. No subscription.
Get Runnerd on the App Store — or read what else your Apple Health data holds.
Runnerd is not a medical product and does not replace medical advice. Apple, Apple Health, Apple Watch, HealthKit and App Store are registered trademarks of Apple Inc. Garmin, Body Battery and Whoop are trademarks of their respective owners.