How the formula works
Andrew Coggan defined Training Stress Score so that one hour at FTP equals exactly 100:
TSS = (durationsec × NP × IF) / (FTP × 3600) × 100
Because IF = NP / FTP by definition, this simplifies in IF-only mode to:
TSS = durationsec × IF² × 100 / 3600
The IF² term is the key insight: TSS scales with the square of intensity. A 1-hour ride at IF 0.7 is 49 TSS; at IF 1.0 it's 100 TSS — the same duration but more than twice the load. That non-linearity reflects the disproportionate physiological cost of riding closer to threshold and beyond.
Load category bands
- < 50 TSS — Recovery / very low. Easy spin or short tempo. Negligible next-day fatigue.
- 50–100 TSS — Low. A standard endurance ride. Fully recovered the next day.
- 100–150 TSS — Moderate. A "real" workout (long endurance + tempo, or threshold session). Mild residual fatigue 24 h.
- 150–300 TSS — High. Hard sessions or moderate races. Recovery in 36–48 h.
- 300+ TSS — Very high. Half-Ironman or Ironman bike, gran fondo, ultra-long ride. Multi-day recovery required.
What it's good for
- Comparing dissimilar workouts. A 4-hour endurance ride and a 90-minute threshold session can both be 200 TSS — same physiological load via different routes.
- Computing CTL, ATL and TSB. Chronic training load is an exponentially weighted 42-day average of daily TSS; acute load is the 7-day version. CTL / ATL / TSB explained.
- Planning weekly load. Knowing your typical 7-day TSS budget keeps you from accidentally overloading after a missed workout.
Limitations
- It assumes accurate FTP. An out-of-date FTP biases every TSS number — usually downward (FTP rises in untrained athletes faster than they retest). Use the FTP calculator or AthleteOS' continuous FTP detection.
- It only measures cycling load directly. rTSS (running) and sTSS (swim) extend the metric but use different inputs (pace × duration scaled by threshold pace).
- It can't see fatigue context. A 100-TSS workout the day after a 250-TSS ride is far more stressful than the same workout when fresh. TSS is one input; HRV, sleep and RPE complete the picture.
- It rewards consistency over peaks. Two 100-TSS workouts on consecutive days produce more chronic adaptation than one 200-TSS workout followed by rest, even though the weekly TSS is identical.
TSS in your AthleteOS dashboard
AthleteOS computes TSS on every cycling workout pulled from Garmin, Wahoo or Strava, computes rTSS and sTSS for run and swim sessions, then rolls them into a single CTL trace and TSB readiness signal. When TSB drops below −20 (high fatigue zone), the AI plan automatically inserts recovery days and pushes hard sessions back. Generate your free AI plan and your weekly TSS will be prescribed against your live CTL.
Related reading: TSS vs TRIMP · CTL / ATL / TSB · Aerobic decoupling · Polarized vs pyramidal · HRV readiness.
Citation
Allen H, Coggan AR (2010). Training and Racing with a Power Meter, 2nd ed. VeloPress. ISBN 978-1934030554. The TSS, NP and IF metrics are introduced in chapters 7–8.