← Back to the blog

HRV, Recovery & Readiness

Readiness Score Explained: How Recovery Apps Calculate It

Martin By Martin, Astrea co-founder
Cover image for the article “Readiness Score Explained: How Recovery Apps Calculate It”.

This is the question I get asked more than any other: how does the app actually decide if I’m “ready” or not? Most people picture a black box, some AI quietly judging them overnight. It’s actually five fairly simple ideas, stacked on top of each other. If you’re comfortable with adding, subtracting, and averages, roughly what you learn by age 12, you already have what you need to follow your own number instead of just staring at it.

Quick digest

  • A readiness score compares today’s numbers to YOUR OWN recent normal, not to everyone else’s (Shaffer & Ginsberg, 2017).
  • Small day-to-day wobbles are ignored on purpose, using a “worth caring about” buffer (Hopkins, 2000): a tiny dip doesn’t move your score, a real one does.
  • Exercise isn’t just measured in minutes. A short, hard workout and a long, easy one can add up to a similar training “cost” (Banister, 1991).
  • The app compares your last week of training to your last month, because ramping up too fast is linked to more injuries than a steady climb (Griffin et al., 2020).
  • Sleep quality counts as much as sleep quantity: deep, uninterrupted rest early in the night is worth more than the same number of hours broken into pieces (Borbély, 1982).

Idea one: compare you to you, not you to everyone

Illustration for “Readiness Score Explained: How Recovery Apps Calculate It”.

A doctor doesn’t panic the moment your temperature reads 37.2°C (99°F) instead of the textbook 37°C (98.6°F). What matters is how far that is from your own normal. Recovery apps do the same thing with your heart.

Every night, the app tracks something called HRV, short for heart rate variability: basically, how much the tiny gaps between your heartbeats wiggle around, rather than ticking like a metronome. More wiggle usually means your nervous system is calm and recovered. Less wiggle usually means it’s dealing with something, a hard workout, poor sleep, being sick, stress (Shaffer & Ginsberg, 2017).

The app keeps a rolling average of your HRV over the last several weeks, basically “what’s been normal for you lately.” Then each day it checks how far today’s number is from that average, measured in units of your own typical day-to-day swing. That distance has a name: a Z-score. A Z-score of 0 means today matches your average exactly. A Z-score of -2 means today is well below what’s normal for you specifically, not for people in general.

Here’s the arithmetic in full: say your average HRV over the last several weeks has been 50, and it typically swings up or down by about 5 points on a given day (that swing is your standard deviation). If today’s reading comes in at 40, that’s 2 full swings below your average: (40 - 50) ÷ 5 = -2. If it comes in at 47 instead, that’s only about six-tenths of a swing below average: (47 - 50) ÷ 5 = -0.6, barely worth a second look.

Idea two: ignore the noise

If the score reacted to every tiny wobble, it would bounce around constantly and stop meaning anything. So there’s a buffer built in, borrowed from sports science and often called the smallest worthwhile change (Hopkins, 2000). The rule of thumb: unless today’s number moves by more than about half of your typical day-to-day swing, the app treats it as noise, not news. In the example above, with a typical swing of 5 points, anything within about 2.5 points of your average barely registers. The 40 clears that bar easily. The 47 doesn’t.

Idea three: exercise isn’t just minutes, it’s minutes times how hard

Two workouts that both last an hour don’t cost your body the same amount. An easy hour-long walk and an hour of hard intervals are very different bills. The math the app uses for this, called TRIMP, short for training impulse, multiplies how long you exercised by how hard your heart was working, and then weights the “how hard” part so that effort near the top of your heart rate range counts disproportionately more than effort in the middle (Banister, 1991).

As a simple illustration: a 60-minute walk at a gentle heart rate might add a training load of around 40 points. A 60-minute session of hard intervals, same clock time, might add something like 140 points, more than three times as much, because the intensity weighting punishes the high-effort minutes so much harder than the easy ones.

Idea four: comparing this week to your last month

The app also compares your most recent week of training to your longer-term average. Jumping from a typical week to something well beyond it, say, going from 20 miles (32 km) of running to 30 miles (48 km) in a single week, is linked to a meaningfully higher injury risk than working up to that same volume gradually (Griffin et al., 2020). It’s less about how much you’re doing in total, and more about how much more than usual you’re suddenly asking your body to do.

Idea five: sleep quality, not just sleep quantity

Two people can both sleep 7 hours and end up with different sleep scores, because the app also looks at how much of that time was spent in deep, restorative stages versus lighter sleep or awake time. Deep sleep is heavily concentrated in the earliest hours after you fall asleep and tapers off as the night goes on (Borbély, 1982), so a solid early stretch is worth more to the score than the same number of hours spread thin and interrupted.

Putting it together: four people, four different scores

The same math produces very different-looking results depending on whose numbers go in. These four examples are illustrative, not real users, but the numbers behave the way the app’s math actually behaves.

Martin, after a hard training day. My typical HRV baseline sits around 50, with a usual swing of about 5 points. After a heavy CrossFit and running day, it reads 39: a Z-score of (39 - 50) ÷ 5 = -2.2, a real dip, not noise. That same week I’d also jumped my training volume well above my usual monthly average. Combined, the app landed my readiness around 45 out of 100: a clear, unambiguous “take it easier today.”

A nursing mother, six weeks postpartum. Before pregnancy, her HRV baseline was 55. Right after birth it dropped to around 33, a huge, expected shift. If the app compared her to that old, pre-baby baseline, a reading of 33 would show up as roughly a -4 Z-score: an emergency, every single day. Instead, the app updates her baseline quickly to reflect her real current normal, which settles around 34 within a couple of weeks. Against that adjusted baseline, today’s 33 is only about -0.2: essentially an ordinary Tuesday, not a crisis.

A cyclist in her early fifties, mid-perimenopause. Hormonal swings mean her HRV naturally moves around more than it used to, so her baseline is calculated over a wider window to avoid overreacting to any single hormonal phase. One night, a hot flash spikes her heart rate for a few minutes around 2 a.m. Counted as ordinary restlessness, that would drag her sleep score down to around 58. Recognized instead as a hot flash, using the same overnight temperature data the app already collects, her sleep score comes out closer to 76, because one brief vasomotor event isn’t the same thing as a night of poor sleep.

A sedentary office worker in his mid-forties. His typical week has almost no structured exercise, so his rolling training load average sits around 10 points, just the walking built into an ordinary day. One Saturday he joins a friend for a 3-mile (5 km) hike, adding a training load of roughly 45 points. On its own, that’s a modest outing; a trained athlete wouldn’t feel it. But compared to his own recent average of 10, it’s more than four times what his body is used to handling, which is exactly the kind of relative jump the training load comparison is built to catch (Griffin et al., 2020). His readiness score the next day comes out around 60 out of 100, not alarming, but a real nudge to ease back in gradually rather than repeating a jump that size every weekend. What mattered was never the hike’s difficulty on its own, but how large a jump it was from what his body had actually been doing lately.

What to actually do with your number

  • Look at the trend over a week, not any single day’s reading.
  • Treat a small move as noise, and a move well past your usual swing as a real signal.
  • If your score drops after a big jump in training volume, the fix is usually pacing, not rest alone.
  • Remember the app is comparing you to your own recent normal. A “low” score during pregnancy, postpartum, perimenopause, or illness reflects a shifted baseline, not a verdict on your fitness.

FAQ

Is my readiness score the same thing as being “in shape”? No. It’s a short-term read on recovery, driven mostly by HRV, resting heart rate, sleep, and recent training load. Long-term fitness (things like VO2 max) moves on a much slower timescale and isn’t what this score is measuring.

Why did I do everything right last night and still get a low score? A single night rarely tells the whole story. The score also reflects your training load from the past week or so, and things like illness, alcohol, or stress that don’t always feel obvious the next morning. Check the trend over several days before assuming something’s wrong.

Does the app compare me to other people my age? No, and that’s intentional. HRV varies enormously between individuals for reasons that have nothing to do with fitness, so comparing you to a population average would be far less useful than comparing you to your own history (Shaffer & Ginsberg, 2017).

Can two people who did the exact same workout get different training load numbers? Yes, because the math factors in your heart rate relative to your own range, not just the workout itself. The same run can be an easy jog for one person and a hard effort for another, depending on their fitness and heart rate zones.

Why does my score swing so much some weeks and barely move other weeks? Bigger swings usually track real changes: a hard training block, a rough night, a big jump in volume. Quieter weeks usually mean your recent numbers are sitting close to your normal range, which is exactly when the “ignore the noise” buffer is doing its job.

Sources

Banister, E. W. (1991). Modeling elite athletic performance. In H. J. Green, J. D. McDougal, & H. Wenger (Eds.), Physiological testing of elite athletes (2nd ed., pp. 403-424). Human Kinetics.

Borbély, A. A. (1982). A two process model of sleep regulation. Human Neurobiology, 1(3), 195-204.

Griffin, A., Kenny, I. C., Comyns, T. M., & Lyons, M. (2020). The association between the acute:chronic workload ratio and injury and its application in team sports: A systematic review. Sports Medicine, 50(3), 561-580. https://doi.org/10.1007/s40279-019-01218-2

Hopkins, W. G. (2000). Measures of reliability in sports medicine and science. Sports Medicine, 30(1), 1-15. https://doi.org/10.2165/00007256-200030010-00001

Shaffer, F., & Ginsberg, J. P. (2017). An overview of heart rate variability metrics and norms. Frontiers in Public Health, 5, Article 258. https://doi.org/10.3389/fpubh.2017.00258

A note from us We’re Martin and Marina, Astrea’s co-founders. We’re both into data and serious about our own training, but neither of us is a doctor or a clinical researcher. The health and physiology claims in this article come from published, peer-reviewed research, not our own expertise, which is why every article ends with a Sources list above. If a claim doesn’t trace back to a real source, we cut it before it gets published.

Astrea reads your HRV and recovery against your own baseline, not a population average — so a low morning number means what it actually means for you.