Overview
Daily Strain answers one question: how much load did this day actually put on your body? It is shown as an absolute 0–100% value, so 40% means the same thing on Monday as it does six months later.
Beside it sits the Target Strain Zone: a range for today, set from your own recent history and the evidence Grio has about your current state. Strain describes what happened; the Target describes what today was set up for. They are deliberately two different numbers.
Everything here is computed on Grio’s servers. The app renders the result and never recalculates it, so the same date reads the same on every device.
How it’s calculated
Inputs
| Input | Role |
|---|---|
| Recorded workout sessions (Grio and imported Apple workouts) | Session load, reconciled so an overlapping pair is not counted twice |
| Apple exercise minutes | The day’s ambient movement outside recorded sessions |
| Phone step count | The fallback movement channel for a day the watch never covered |
| Average heart rate per session | Intensity, converted to a fraction of your heart-rate reserve |
| Declared session intensity | The stand-in for intensity when no heart rate was recorded |
| Resting and maximum heart rate, age, sex | The personal physiology the impulse is scaled by |
| Recent strain history and your Check-In | Inputs to the Target, not to the day’s strain |
The algorithm in plain terms
Each session is converted into a training impulse: how hard it was, expressed as a fraction of your heart-rate reserve, multiplied by how long it lasted, weighted by an exponential curve so that intensity counts for more than duration. That curve is sex-weighted, and where measured heart rate is absent Grio resolves intensity from your declared intensity, then from a moderate default.
Your heart-rate reserve is the span between your resting and maximum heart rate. Grio prefers the values your data supplies and falls back to an age-based estimate. Working at 70% of that reserve means the same physiological thing for a 25-year-old and a 55-year-old, which is why the reserve, rather than raw bpm, is the unit.
Movement outside recorded sessions is added once as an ambient term, at a light intensity, and only for the minutes not already inside a session. Muscular load from strength work is added on its own term rather than being pressed into the cardiovascular one.
The sum is projected through a nonlinear curve into an internal 0–21 index, and that index is mapped to the 0–100% figure you see. The nonlinearity matters: the difference between an easy day and a moderate day is larger, in strain terms, than the difference between a very hard day and a brutal one, and a linear scale would hide that.
How the Target Strain Zone is set
The Target centers on a high quantile of your recent strain history rather than its middle. A target prescribes a training day, and someone who trains three days a week has a two-humped history whose median sits in the empty valley between rest and training; targeting the median would prescribe neither.
The centre is then bounded, and adjusted by evidence about today: notably, a Check-In reporting fatigue lowers it. Before you have history, a starter centre is used.
A Target freezes the first time a day’s refresh sees a visible active or completed workout session. From then on, corrections to health data or edits to the workout can change the day’s resulting strain, but never the target it was measured against. A day that closes without such a session freezes its last open snapshot as it stands.
Strain Performance is your day’s strain relative to the frozen target’s midpoint, expressed as a signed percentage. It is calculated from unrounded internal values, so display rounding can never flip a status.
Edge cases and fallbacks
- No watch: movement is observed from phone steps. See Strain without a watch.
- No movement channel reported anything: the day is
unavailable, not 0%. - A measured day with almost no movement: genuinely 0%, a measured rest day.
- An overlapping Apple and Grio workout: reconciled to one canonical session, never counted twice.
- A long session that produces few steps (such as an hour of lifting) can cancel the day’s ambient channel entirely, because ambient minutes always subtract session minutes. The error runs conservative by design.
- Active energy is a display fact and never enters Strain, because deriving load from it would inherit another vendor’s estimate.
How to read your score
Read the pair, not the number:
- Inside the Target Zone: the day did what it was set up to do.
- Below: a lighter day than planned. That is a fact, not a failure; most weeks need some.
- Above: More load than the target anticipated. Worth noticing when it repeats, and unremarkable as a one-off.
Absolute Strain is not target completion. A 55% day against a 40% target and a 55% day against a 70% target are the same load with opposite meanings, which is why Grio shows both rather than a single percentage-of-goal.
The Target is also not a safety threshold or an injury-risk classification. Grio deliberately declines to make that claim.
What to do with it
- Use the Target to size the session, not to authorise it: Condition Score is evidence that feeds the target; it is never an exercise permission gate.
- Look at the week, not the day: a single day above target says very little. Four in a row is the pattern the Target is built to surface.
- Record intensity when your watch missed the heart rate: Declared intensity is the next-best input, and a session with neither falls back to a moderate default that will usually understate a hard effort.
Troubleshooting & FAQs
- Why is my Daily Strain still 0% after a long walk?
- Check whether the movement was observed at all. Strain reads Apple exercise minutes, and falls back to phone steps only for a day the watch never covered. Active energy is a display fact and never enters Strain. A day whose channels all stayed silent reads as unavailable rather than 0%; a measured day with almost no movement genuinely reads 0%.
- My target did not change after a hard week. Is it stuck?
- A target freezes once the day's refresh first sees a visible active or completed workout session. After that, later health corrections or workout edits can change the resulting Daily Strain but never the frozen target. That is what keeps the day's yardstick from moving after you were measured against it.
- Why did an hour of lifting produce less strain than a run?
- Strain is driven by cardiovascular impulse (intensity relative to your heart-rate reserve, multiplied by duration) plus a muscular term. A steady run holds a high reserve fraction for the whole session; a lifting hour is mostly rest between sets. Session length alone was never the input.