Training Stress Score (power)
A single number summarizing how stressful a ride was, scaled so one hour right at your threshold power counts as exactly 100.
- A 1-hour ride held exactly at FTP: Intensity Factor (IF) = Normalized Power / FTP = 1.0.
- TSS = (duration_s / 3600) × IF² × 100 = (3600/3600) × 1.0² × 100 = 100.
Matches Friel’s own published heuristic verbatim: “100 TSS is about an hour done as hard as you can do it.”
Source: Joe Friel’s published TSS heuristics
Formula, provenance & citation
- Formula
- TSS = (duration_s / 3600) × IF² × 100, where IF = NP / FTP
- Inputs
- duration_s, np_w (Normalized Power), ftp_w (athlete’s configured/estimated FTP).
- Provenance
- computed
- Unit
- TSS
- Method
- Coggan power Training Stress Score
- Citation
- Allen H., Coggan A., McGregor S. — Training and Racing with a Power Meter, 2nd ed. (2010), ch. 7.
- Licensing note
- "TSS" is a TrainingPeaks/Peaksware trademark for this Coggan/Allen formula; the math itself is public domain — user-facing copy attributes it to Coggan/Allen, not to a TrainingPeaks integration.
- Implementation pointer
api/backend/backend/pipeline/metrics/load.py:111 (normalized_power), load.py:185 (compute_power_load). Tests: api/backend/tests/pipeline/test_metrics_load.py.