Readiness
Readiness answers one question: did last night look normal for this athlete?
It compares three overnight measurements — night heart rate variability, night resting heart rate and sleep — against that athlete's own recent normal, taken over the previous 28 nights. It never compares one athlete with another.
It lives in the last column of the Training state view.
Readiness is what the body did overnight. Cardio load, relative fatigue and cardio form are what was asked of the body. They sit side by side and are never mixed, because the interesting mornings are the ones where they disagree — a perfect training week and a wrecked night, or a hard block the athlete is absorbing cleanly.
In one minute
Each night three things are read from the athlete's watch — HRV, resting heart rate and sleep — and each is compared with that athlete's own last 28 nights.
| The badge | Means | What to do |
|---|---|---|
| Normal | Everything we could read looks ordinary for them | Nothing |
| Unusual | Something is off, and not enough to act on | Worth a glance |
| Risk | Something is well outside their usual, or the night was very short | Look before you decide today's session |
Under the badge, the cell names what moved. The ⓘ button opens the numbers behind it — each measurement, that athlete's usual, last night's value, and the difference.
Three things worth knowing before you use it:
- It is a prompt to look, not an instruction to rest. It never tells you what to do with the session — that is your call, with everything else you know about the athlete.
- It compares an athlete with themselves, never with the squad. A Risk does not mean they are worse than the others.
- Normal is not praise. It means nothing stood out. There is no level above it, on purpose.
If the athlete has no watch, or it is not worn overnight, the cell says so instead of going blank — those cases are listed under when there is no reading.
That is the whole column. Everything below is optional — why it works this way, what each measurement means, and where the research comes from.
Why it is not a score out of 100
Every watch brand already produces one. A second number would be one more thing to argue with, and no way to see why the two disagree.
Readiness shows which measurements moved, and how far from that athlete's usual — so you can judge it instead of trusting it. Everything the verdict rests on is visible in the panel behind the cell: the usual value, last night's value, the difference, and how many nights are behind each figure.
Why "their own normal" is the only fair comparison
Take a night HRV of 45 ms.
| Their usual | Last night | Reading | |
|---|---|---|---|
| Athlete A | 46 ms | 45 ms | Ordinary. This is simply their number |
| Athlete B | 62 ms | 45 ms | A large drop. Worth looking at |
Same measurement, opposite meaning. HRV in particular is deeply individual — twofold differences between two healthy athletes are unremarkable — so an absolute threshold would flag one athlete every morning and never flag the other. "How far from their own normal" is the only thing that compares across a roster.
The same holds, less dramatically, for resting heart rate. It does not hold for sleep, and that exception is the one place the column deliberately breaks its own rule — see why sleep is judged twice.
What goes in
| Measurement | Why it is in |
|---|---|
| Night HRV | The most responsive early sign of illness, sleep debt and accumulated stress |
| Night resting heart rate | An early illness signal — it climbs days before symptoms appear. It is not a training-fatigue marker |
| Sleep duration | The most common ordinary cause of a bad day, and the one you can actually act on |
| Sleep score | Where the watch produces one. It sees what duration cannot — eight broken hours is not eight hours |
| What the athlete told you | Illness, pain or more than ordinary fatigue they entered themselves |
The first three are the only measurements every supported watch records — Garmin, COROS, Suunto, Polar and Apple Watch all provide all three, once health import is switched on. An athlete whose data arrives through Strava gets no health data at all, and will always show No health data.
Deliberately left out, and worth knowing why:
- Daytime resting heart rate — only two brands record it, and it is contaminated by whatever the athlete did that day. The overnight minimum is the honest measurement.
- Stress / body battery — one brand only.
- The athlete's own fatigue and illness entries as an input — they are shown, prominently, but never averaged into the verdict. An ordinary heart rate must not be able to dilute "I have flu".
How the comparison works
- The baseline is the middle value (median) of the previous 28 nights, not the average. One terrible night must move the reading, never the yardstick — under an average, a single four-hour night raises the bar for the following fortnight, so the athlete's recovery from it reads as normal and the next bad night reads smaller than it is.
- The usual range is how much that athlete's numbers normally bounce around, measured the same robust way. A very consistent athlete gets a minimum range applied, so a 20-minute short night is not treated as a crisis.
- At least 14 of the 28 nights must carry a measurement before there is a baseline at all. Below that, the column says Building baseline and counts the nights — or, if no night has been recorded at all, No night data, because there is nothing to count towards.
- The night being judged is never part of its own baseline.
- The window is 28 days because that is the reference period every watch brand uses for HRV, and the one the rest of the app already works in. A longer window fills more slowly for everyone and adds little — a middle value settles quickly.
The column states the window on every reading. A comparison without the period it was measured over cannot be checked.
What the cell shows
Three levels when there is a reading, and five reasons when there is not. The absences matter as much as the readings — a blank cell reads as "fine", and an athlete whose watch spent the night on the bedside table must never look better than one whose numbers are genuinely poor.

Notice how little of that column is a badge. On a real roster the absences are a large share of it, which is why each one is named separately below instead of sharing a single "no data" cell.
When there is a reading
| The cell shows | Means | What to do |
|---|---|---|
| Normal (neutral badge), alone | Everything this athlete normally records arrived, all of it is ordinary for them, and they slept over six hours | Nothing. Train as planned |
| Unusual (amber badge) + the night + what moved | Short of ordinary and short of a verdict: a measurement moved, one never arrived, sleep was under six hours, or the athlete reported something | Worth seeing. Not a reason to change today |
| short sleep / less than usual / broken sleep | Which of the three things we read about sleep went wrong. More than one can be lit | See what the sleep labels mean |
| Risk (red badge) + the night + what moved | Something is well outside their usual range, or the night was short enough to say so on its own | Read the panel, then decide |
| habitually short / short recently | Short sleep, and which kind it is | See chronic or one-off |
| HRV · not recorded | A measurement this athlete normally records did not arrive. Their usual is known; the night is not | Ask them to wear the watch overnight |
| a flag line — Light pain · reported 06-09-2026 | The athlete reported illness, pain or fatigue themselves | Believe it. It needs no baseline to be true |
| a Yesterday chip beside the badge | The reading is not from last night | Usually clears by mid-morning; check the watch if it persists |
Three levels and never a fourth: Normal, Unusual, Risk. Every readable night gets one, because a row with no badge on it cannot be told apart from a row nobody looked at. Under the badge the cell says why: the measurements that moved, by name, and the hours slept when sleep is one of them.
A figure appears only when it is part of the problem. Normal is the badge alone — that level is already gated on sleep clearing six hours, so printing the hours would restate what the badge just certified. And the hours stay off a Risk caused by HRV and resting heart rate, where the only number on the cell would belong to the measurement that did not fire.
Sleep is shown as a figure where the other two are shown as names, and that is not favouritism: hours interpret themselves, where 42 ms and 48 bpm do not without the baseline and the spread behind them. Those, and the watch's sleep score — 84 out of what, against whose normal? — live in the panel, one click away.
Normal means ordinary for this athlete — nothing more. An exceptional night and a perfectly unremarkable one carry the identical badge, on purpose. There is no Great, no Well recovered, no level above the top one, and there never will be: grading the good end would make the column congratulate, and a high HRV reading is not even reliably good — in endurance athletes an abnormally elevated one is associated with overreaching, not freshness.
What separates Normal from an empty cell is a gate. Everything the athlete normally records has to have arrived, sleep has to clear six hours, there must be no sleep shortfall, and the athlete must not have reported anything.
Normally rather than all three, on purpose: many watches measure heart rate but not heart-rate variability, and demanding all three would leave those athletes on Unusual every night for ever, for a measurement their device has never produced. A measurement they usually record and did not record last night is a different matter — that does block Normal.
A watch that stopped syncing cannot reach Normal either; it lands on No reading. That gate is what makes the level trustworthy as "we looked at everything we could and it was fine" rather than "we found nothing to say".
This is the same rule that keeps Peaked styled neutrally in cardio state.
The column once said Typical, which told a coach nothing: an eight-hour sleeper and a five-hour sleeper both got it, and it described the comparison rather than answering the question. Normal is not that word returning — Typical fired on a single measurement and on a five-hour night alike, where Normal has to pass all four conditions above.
When there is no reading
| The cell shows | Means | What to do |
|---|---|---|
| No health data | No watch connected, and nothing has arrived in 90 days | Ask them to connect a watch, or to switch on health import in the app |
| Building baseline — sleep · 2 of 5 nights | A watch is connected, nights are being recorded, and there are not yet enough of them. The cell names the measurement it is counting | Wait. Normal for a newly connected athlete |
| No night data — watch not worn at night | The watch reports all day and nothing from the night | Ask them to wear it overnight. Waiting will not help |
| No night data — nothing arriving from this source | A source is connected and nothing at all is coming through | Check the integration. Waiting will not help here either |
| No reading — none since 02-09-2026 | The baseline is intact; nothing arrived last night or the night before | The watch has gone quiet — worth a nudge if the date is old |
| Too few inputs — one measurement only | Something arrived, but fewer than two measurements could be compared | Open the panel; whatever did arrive is shown with its usual value |
The absences render as plain quiet text, never as badges, so they read as we cannot say rather than as a further verdict standing beside the others.
The three measurements do not need the same number of nights before they mean anything. Sleep needs 5. It is a duration, it varies in a way we can read quickly, and it also has an absolute floor to fall back on. Night HRV and night resting heart rate need 14 — they are small numbers with a lot of night-to-night noise, and a handful of nights cannot tell an unusual one from an ordinary one.
So the cell reports whichever measurement is closest to its own target, and names it. Four nights of sleep is four fifths of the way to a reading; nine nights of HRV is not. Two athletes reading sleep · 2 of 5 and HRV · 5 of 14 are not being held to different standards — those are two different measurements.
They look alike and mean the reverse of each other. Building baseline says wait — nights are arriving and the counter is climbing. No night data says waiting will change nothing.
They were one status until real rosters showed what that cost. An athlete who wears the watch all day and charges it overnight sends a health entry every single morning — steps, calories, daytime resting heart rate — and not one of them is a night. Their cell read Building baseline · 0 of 14 nights every day for ever: a counter that could never move, telling a coach to wait for something that was never coming.
If you see No night data, the fix is at the athlete's end, today.
The detail panel
Every cell — including every absence — carries an ⓘ button. It opens instantly and loads nothing: everything it shows already arrived with the roster.

The panel above belongs to a Normal cell, and that is the one worth showing: every measurement arrived, every difference is small, and the closing note says exactly that — nothing is out of place, never they are ready. The panel is as useful on a quiet cell as on a loud one, because what it shows is that the column actually looked.
It contains:
- a caption naming the night and the window,
- one row per measurement: Measurement / Usual / Last night / Difference, each labelled with how many nights are behind it,
- the last three nights of sleep, with dates and the watch's score,
- units the way a person reads them —
ms,bpm, and sleep as hours and minutes (7:32), never raw minutes. The difference is a real-world difference (−4:32), not a statistical one, - a closing note that changes with the status.
Two details in that table are worth pointing out, because both are answers to a question coaches ask:
- A measurement with a baseline but nothing recorded last night says not recorded, and still shows its usual value. We know their normal, they just didn't wear it is a different sentence from we have never known their normal, and the panel says whichever is true.
- Only a difference that runs the wrong way is coloured. Sleep is judged on three things at once,
so a night can be flagged while its duration improved — and a red
+00:52would read as "sleeping more is bad".
When Risk appears
Any one of three things.
1. Two measurements agree. Both are at least 1.5 "usual ranges" the wrong way — HRV down, resting heart rate up, sleep short.
Usual HRV 62 ms, last night 41. Usual resting HR 43 bpm, last night 51. Two measurements, both well out. → Risk
2. One measurement is far enough out to speak alone — roughly twice that distance.
Usual sleep 7:30, last night 3:10, and nothing else recorded. → Risk
A three-hour night against a seven-and-a-half-hour normal does not need a second opinion. Requiring one was the rule protecting itself rather than the athlete.
3. A run of short nights, even where no single one of them stands out. Sleep debt accumulates across nights in a way the other measurements do not.
Below all three, a single measurement moving on its own reads as Unusual, with the measurement named in amber beneath the badge. It is worth seeing, it is not a reason to change today's session, and it deliberately does not reach the Needs attention filter — a filter that fills with observations is one coaches stop opening.
Both are readings of the same autonomic system. So "two measurements agree" is in practice closer to "the autonomic signal moved, and sleep agreed" than to three independent votes. Worth knowing when you read a two-measurement Risk.
What usually triggers it, in practice
Measured across the real roster: the most common Risk is a very short night, not two measurements agreeing. Sleep alone accounts for around 40% of all flags; the two-measurement rule for about 16% by itself.
That is not a quirk of the maths. Sleep is simply the measurement that swings — an athlete can sleep three hours and cannot sleep fifteen — where HRV and resting heart rate stay much closer to their usual from night to night. Resting heart rate in particular is built to be quiet.
So a Risk badge most often means "they barely slept", and the panel always names which measurement it was.
Why sleep is judged twice
Sleep is the one measurement read against two things at once: the athlete's own recent nights, and fixed lines at six and five hours.
The reason is that a personal baseline cannot judge itself. An athlete with a newborn who sleeps four hours every night has a four-hour normal — and against that normal, a four-hour night is unremarkable. It is not unremarkable. The baseline absorbs the problem it should be reporting.
The evidence
This is the best-evidenced part of the whole feature, and it goes against intuition hard enough to be worth stating in full.
Adaptation to short sleep does not happen. The canonical experiment (Van Dongen et al., 2003) restricted people to four or six hours a night for two weeks. Performance deficits were cumulative and dose-dependent — they kept getting worse, night after night, with no plateau.
The decisive half is what the participants said. Their subjective sleepiness rose once, then flattened — and could not distinguish six hours from four. People stop feeling impaired long before they stop being impaired.
That is why "four hours is fine for me" is not evidence of anything. It is what impairment feels like from the inside. Genuine short sleepers do exist — a handful of families carrying known genetic variants — and are far too rare to design a roster tool around.
Athletes need more than the general population. Recommendations run 7–9 hours minimum, commonly 8–10 for athletes in heavy training. Sleeping under 7–8 hours raises injury risk; in adolescent athletes, under 8 hours is associated with roughly 1.7× the injury rate (Milewski et al., 2014), and under 6–7 hours roughly doubles it. Around half of elite athletes sleep less than recommended.
Why the line is six hours, not seven
This is a presentation decision, not a physiological one, and the difference matters.
On the real roster, the median athlete's sleep baseline is 7 h 06 and the lower quartile 6 h 34. A seven-hour line would mark roughly half of every roster. That is very probably a true statement about athlete sleep — it matches the ~50% figure in the literature — but a marker on half the rows tells you nothing about who to talk to first.
Six hours catches the unambiguous ~10%, and it is the same line the sleep status on the calendar's health card already draws, so the two surfaces agree.
Nothing here says an athlete sleeping 6 h 30 is sleeping well. It says the column will not mark them every single morning, because a permanent alarm is one nobody acts on.
If a lot of your squad gets sleep alerts, that is the answer, not a fault in the column. The bar is fixed in hours, so it does not adjust itself to make a convenient number of rows light up. If they all sleep badly, all of them are marked; if they all sleep well, none of them is. Tuning it to show fewer would quietly turn the column into a ranking — the worst sleepers marked and everyone else implied to be fine — which is the one comparison it refuses to make.
What the sleep labels mean
Sleep is read three ways, and the cell names whichever ones went wrong rather than saying just sleep. More than one can be lit at once — like two warning lights on a dashboard, two together is a worse night than either alone.
| label | means |
|---|---|
| short sleep | Under six hours, in plain terms. No interpretation needed |
| less than usual | Well down on their own recent nights — six and a half hours for someone who normally sleeps eight and a half. Still over the six-hour line, and still worth knowing |
| broken sleep | Their watch rated the night poorly. This is the one the hours cannot show you: eight hours with a score of 45 looks like a good night on the cell and was not one |
Broken sleep is the label most worth opening the panel for. The others you can largely read off the durations already on the row; that one you cannot.
Chronic or one-off
The distinction that decides what you do about it:
| Means | What to do | |
|---|---|---|
| habitually short | This athlete's normal is under six hours | A conversation, not a change to today's session. It is how they are living at the moment, not something that happened last night |
| short recently | Their recent nights are short but their usual is not | Something has changed. Worth asking what, and worth taking into account today |
A habitually short sleeper's shortfall is reported as a standing fact and withheld from the daily verdict — otherwise their row would carry a red badge every morning for ever, and would fill the Needs attention filter until the other triggers there lost their meaning. Roughly one athlete in ten with a sleep baseline falls into this group.
Resting heart rate is an illness alarm, not a tiredness gauge
This is the single most misread input, and the correction is worth the paragraph.
Overreaching barely moves resting heart rate. Studies of functional overreaching report changes under 2 bpm, and several reviews find no relationship at all. The widely repeated "+5 bpm means overtrained" traces back to a paper that does not contain it.
Infection moves it a great deal. Elevated resting heart rate appears two to nine days before symptoms in the large majority of cases, with a median rise near 7 bpm — fever adds roughly 8.5–10 bpm per degree.
So this input only speaks when the rise is real: at least 7 beats above that athlete's own normal, or 15% of it, whichever is larger.
| Their usual | Last night | Reading |
|---|---|---|
| 42 bpm | 45 bpm | Ignored. Night-to-night drift |
| 42 bpm | 50 bpm | +8, clears the bar. Flagged |
| 60 bpm | 65 bpm | Ignored — 5 beats, and only 8% |
| 60 bpm | 70 bpm | +10 and 17%. Flagged |
The proportional half exists because the two anchors agree in the middle and diverge at the ends. Without the absolute floor, the statistical rule alone fired at 3.75 bpm on a steady athlete — ordinary drift, and nowhere near an infection.
Two consequences:
- Expect this input to be quiet for weeks, and then matter a great deal. It is a rare strong signal, not a frequent weak one.
- A resting heart rate below normal is never a warning. That is what a well-recovered athlete looks like.
Why HRV is read at night, not in the morning
Night HRV is roughly twice as stable as a morning reading — a day-to-day variation of about 9.5% against 19.4% for morning measurements. That stability is what makes a 28-night personal baseline viable at all; on morning readings, the noise would swamp the signal.
In infection, vagally-derived HRV falls one to two days before symptoms, ahead of resting heart rate in some groups, which makes it the earliest device signal available here.
It carries no absolute floor, unlike the other two. 39 ms means nothing between two athletes, so distance from their own median is the only reading there is.
What the athlete told you
If an athlete entered illness, pain or more than ordinary fatigue in the app, the cell says so — on every status, including an athlete with no watch at all, and including one whose watch says everything is fine.
What counts: any illness entry and any pain entry, from the first level up — each is a default the athlete had to move off deliberately, and Light pain names something that was not there before. Fatigue alone starts a level higher, at Medium, because Light tiredness is what an ordinary training week feels like.
Three reasons it is treated separately from everything else on this page:
- It reaches the athletes nothing else can. Around a third of athletes have no health integration. For them this is the only signal there is.
- It arrives sooner. Someone who feels flu coming says so today; night heart rate shows it tomorrow.
- It is never averaged in. Blending would let an ordinary heart rate dilute "I have flu" — the exact failure it exists to prevent.
It is also the one readiness trigger that reaches the Needs attention filter without any threshold behind it. There is no deviation being judged and nothing that can be miscalibrated: the athlete told you something.
What it will not do
- Compare athletes. Only "how far from their own normal" is comparable across a roster.
- Tell anyone to rest. It reports what was measured. The decision is yours, with the athlete.
- Diagnose anything. It is not a medical instrument and must never be described as one.
- React to training. A hard block with clean overnight numbers is an athlete adapting well, not a strained one — and that is the reading, not a miss.
Known limits — worth saying out loud
It knows a bad normal from a bad night only for sleep. A personal baseline cannot say whether that baseline is any good, because it is the yardstick. Sleep has fixed lines to fall back on; HRV and resting heart rate have nothing comparable, so a slow slide over months is genuinely invisible to this column.
Normal does not mean "slept enough" and it does not mean "ready". It means every measurement we read arrived and none of them is out of place for this athlete. An athlete whose own normal is six and a half hours can sleep six and a half hours and read Normal — open the panel for the figures.
Changing watch quiets it for a while. Brands measure HRV differently, so a switch mid-window makes the athlete's usual range look wider, which makes everything read as less unusual. The column goes quiet rather than raising false alarms, and settles as the old nights age out.
A night the watch did not record is an absence, and is shown as one — never filled in with the night before.
The morning grace
Watches upload a few hours after the athlete wakes, so at 06:00 there is often nothing for today yet. Readiness therefore accepts today, or failing that yesterday — never further back — and says so whenever the reading is not from last night, as a small outlined Yesterday chip beside the badge. Silently accepting an older reading is how a watch that died last week comes to look like a good night's sleep.
Because the grace stops at one day, the answer is always the same word, which is why it is a word and not a date: working out whether 09-09 was last night or the night before is arithmetic nobody should have to do while scanning a roster. It sits beside the badge because it qualifies the verdict — the reading is right, it is simply a night older than you might assume — and it usually clears on its own by mid-morning.
If a partial reading arrives for today, that partial reading is used. Today's thin data is never replaced by yesterday's complete data: answering a three-hour night with yesterday's eight-hour verdict would be worse than saying nothing.
Common questions
Why doesn't my athlete have a reading? Either no watch is connected, the watch is not worn overnight, or there are not yet enough nights to compare against. The cell says which — and only the last of the three is worth waiting out.
Their watch is clearly working. Why does it say No night data? Because it is reporting only the day. Steps, calories, daytime resting heart rate and stress all arrive from a watch worn from breakfast to bedtime and charged overnight. Readiness reads night HRV, night resting heart rate and sleep — none of which exist unless the watch is on the wrist while the athlete sleeps.
Why does it say Yesterday next to the badge? Because the reading is not from last night — the watch had not uploaded when the list was drawn. Watches usually send a few hours after waking, so it normally clears by mid-morning. The reading itself is correct; it is simply a night older than you would assume.
Why is Normal not a "good" state? Because the good end of these measurements has no clear meaning. A high HRV night is not reliably good — in endurance athletes an unusually high reading is associated with overreaching. Normal says nothing stood out, which is as much as three overnight numbers can honestly support, and there is no level above it.
Their watch gives them a readiness score. Why is it different? It is a different thing. Vendor scores blend their own recovery model, often including training load. This compares three measurements against that athlete's own 28-night history, and shows the working — so when the two disagree, you can see why.
Does a Risk badge mean skip the session? No. It means look before deciding.
My athlete had a huge training week and readiness says nothing. Is it broken? No — that is the intended reading. Readiness measures what the body did overnight, not what training asked of it. An athlete absorbing a hard block cleanly is the good case. What training cost them is in rTFF and cardio state, one column to the left.
Where the science comes from
The thresholds on this page were set against the literature first and then checked against the real roster. The main sources:
- Van Dongen, Maislin, Mullington & Dinges (2003), Sleep — the two-week sleep-restriction study behind "adaptation does not happen" and the finding that subjective sleepiness cannot distinguish six hours from four.
- Milewski et al. (2014), Journal of Pediatric Orthopaedics — adolescent athletes sleeping under eight hours were around 1.7× more likely to be injured.
- Sleep recommendations for athletes — consensus positions putting the requirement at 7–9 hours minimum and commonly 8–10 during heavy training, and reporting that around half of elite athletes fall short.
- Resting heart rate in overreaching — intervention studies and reviews reporting changes under 2 bpm, against which the frequently quoted "+5 bpm" rule does not hold up.
- Resting heart rate in infection — wearable cohort studies finding elevated resting heart rate two to nine days before symptom onset in the large majority of cases, with a median rise near 7 bpm.
- Nocturnal versus morning HRV — repeatability work reporting day-to-day variation around 9.5% for night-time RMSSD against 19.4% for morning readings.
Where the roster data and the literature disagreed, the page says so explicitly — the six-hour sleep line is the one place a threshold was set for usefulness rather than for physiology, and it is labelled as such above.