How Today's Workout calculates your readiness score
A 0–100 score from seven measurements, mostly from Apple Watch, each placed on a fixed reference curve rather than your personal average. Sleep counts most.
Today's Workout turns last night's Apple Watch data into one readiness score from 0 to 100 and one of five condition levels. The score is absolute, not relative: each input is placed on a fixed curve built around reference ranges (for example, 7–9 hours of sleep or 150–300 minutes of weekly aerobic activity), not compared with your own past average. The app also shows how each measurement compares with your recent average, but that comparison is for display only and does not change the score. The score is computed on your iPhone, and the app does not upload your Health measurements.
This page describes the scoring rules as implemented in app version 1.4.3 (scoring engine 1.60.0). It describes a wellness feature, not medical advice.
What the app reads
The app reads these Apple Health records, most of them written by Apple Watch overnight:
- Sleep analysis (time asleep, time in bed, sleep stages)
- Resting heart rate and heart rate
- Heart rate variability: rMSSD calculated from Apple Watch heartbeat series when they are available. When they are not, the SDNN value that Apple Health reports is used instead and flagged as a fallback. rMSSD and SDNN are different measures; the app does not convert one into the other.
- Respiratory rate during sleep
- Wrist temperature during sleep
- Workouts, active energy and step count
- Optional lifestyle records if you log them: alcohol, caffeine, mindfulness minutes, blood pressure, blood glucose, and sleep breathing disturbances
An Apple Watch is required for the overnight measurements. Without one, the app has no sleep, HRV or overnight heart data to score.
The seven axes
Each input is placed on its own 0–100 curve. The curves are informed by the reference ranges listed below. The weights, the points between the reference values and the sleep cap are product rules, and the combined score is not a clinically validated measure of recovery.
| Axis | Weight | 100 points | 0 points | Reference |
|---|---|---|---|---|
| Sleep duration | 0.30 | 7–9 hours | no sleep | NSF 2015 recommendation, AASM/SRS consensus of at least 7 h; long sleep over 10 h scores lower (Cappuccio 2010) |
| Sleep efficiency | 0.10 | 85 % or more | 30 % or less | Ohayon 2017 (NSF sleep quality indicators) |
| Weekly aerobic minutes (last 7 days) | 0.20 | 300 min | 0 min | WHO 2020: 150 min is the pass line (60 points), 300 min is full; more than 300 is not penalised (Arem 2015) |
| Weekly strength days (last 7 days) | 0.10 | 2 days or more | 0 days | WHO 2020: strength training on 2 or more days a week (1 day = 50 points) |
| Resting heart rate | 0.15 | 55 bpm or lower | 110 bpm | Zhang 2016 meta-analysis: each 10 bpm increase raises all-cause mortality risk by about 9 %; 100 bpm is the clinical tachycardia threshold |
| Heart rate variability (7-day rolling) | 0.10 | 42 ms or higher | 0 ms | Nunan 2010: healthy-adult mean rMSSD 42 ms; higher values are never penalised because individual variation is large |
| Overnight respiratory rate | 0.05 | 12–20 breaths/min | 6 or 32 breaths/min | Clinical convention, not a specific study |
Steps count toward the aerobic axis. A daily average of 8,000 steps is treated as the 150-minute pass line and 12,000 steps as the 300-minute target (Saint-Maurice 2020, Paluch 2022); 2,000 steps or fewer add nothing. The app takes the larger of logged workout minutes and step-derived minutes, never the sum, so a walk you also logged as a workout is not counted twice.
If you tell the app about a life stage that has its own WHO activity guideline, such as pregnancy, the aerobic curve follows that guideline. This can only prevent a penalty; it never scores you lower than the default curve.
How the axes become one score
- Weighted average. The seven axis scores are combined with the weights above. Sleep (duration plus efficiency) is 40 % of the score, activity 30 %, resting heart rate 15 %, HRV 10 %, respiratory rate 5 %.
- Missing data is skipped, not zeroed. If an axis has no data, its weight is removed and the others are re-normalised. A night without the watch is treated as unknown, not as a bad night.
- Lifestyle adjustment. If you log alcohol, evening caffeine, mindfulness, a short nap, or the app sees blood pressure, glucose or breathing disturbances above your own baseline, a small adjustment is added. The total adjustment is clamped to between −10 and +3 points, so measured physiology always outweighs inferred context. Days with no lifestyle records get exactly 0.
- Clamp to 0–100.
- Sleep cap. Last of all, the score cannot exceed the sleep-duration axis score plus 22 points. After five hours of sleep the sleep axis is 30, so the whole score is capped at 52 no matter how good everything else looks. If sleep was not recorded, no cap is applied. Because the cap comes last, no other step can lift a score above it.
The five condition levels
| Score | Level | Meaning in the app |
|---|---|---|
| 85–100 | 5 | Peak day |
| 70–84 | 4 | Good day |
| 55–69 | 3 | A normal day |
| 40–54 | 2 | Lower the intensity |
| 0–39 | 1 | Rest day |
The level starts from this table. A separate layer that reads additional overnight signals can then move the level shown by at most one step in total. It never changes the 0–100 score, and the app explains the move when it happens.
When the app does not show a score
- Fewer than 7 days of history: no score is shown.
- 7–29 days: the score is shown with a "learning" label.
- No core data for last night (no sleep, resting heart rate or HRV): no score. Weekly activity alone is not enough, because it describes how you have been living, not how your body is today.
What the score is not
- It is not a comparison with your personal average. Earlier versions of the app (before scoring engine 1.0.0) used a personal baseline; the current engine does not. The "compared with your usual" figures on the briefing screen are shown for context only.
- A sudden jump in training load is shown as a warning card but is not part of the score.
- Reaching the daily step goal is celebrated but adds nothing to the score or level.
- The app is not a medical device and the score is not a diagnosis. It is wellness information for deciding how hard to train today.
Privacy
All score calculations run on the iPhone. The server stores:
- Account information (email, display language), only if you create an account. Every analysis feature works without one.
- Diagnostics, only if you turn diagnostic sharing on: app events, whose names and values come from a fixed list, and error reports, which carry the error type, the system's error message and a stack trace. You can delete them in Settings.
- A once-a-day "app opened" signal: a random install ID, the date, the platform and the app version. It is not linked to your account and contains no health data. You can delete the signals already sent in Settings; deleting the app stops them.
Sources
- Today's Workout on the App Store: https://apps.apple.com/kr/app/id6803109089
- In the app: Settings › How it's calculated, which lists the same reference points and their limits.
This article is general health information and is not a substitute for medical diagnosis or treatment. Consult a healthcare professional if you have concerns.