Science · Training load & fitness

Training Stress Score, Normalized Power, and ride load

How Koyaro scores a bike ride — Normalized Power, Intensity Factor, TSS, and the supporting work / duration / coasting counters. Formulas match the metric catalog; this article explains them.

Last reviewed · Part of Koyaro’s public science knowledge base — the same method notes the coaching engine cites.

Athlete summary

Training Stress Score (TSS) is how hard and how long a bike ride was, relative to your FTP. One hour at FTP is 100 TSS. A two-hour endurance ride at a lower intensity might also land near 100 — same stress, different shape.

Koyaro computes TSS from the ride file the same way TrainingPeaks does (Allen & Coggan). The engine never invents a TSS from duration alone when power is present.

How the number is built

  1. Normalized Power (NP) — a 30-second rolling average of watts, raised to the 4th power, averaged, then 4th-rooted. Surges cost more than a flat average.
  2. Intensity Factor (IF) — NP / FTP. 1.0 means the ride “felt like” threshold for its whole duration.
  3. TSS — (duration_s × NP × IF) / (FTP × 3600) × 100.

Variability Index is NP / average power — how spiky the file was.

Weekly TSS is the sum of completed ride TSS Monday–Sunday. Work (kJ) is mechanical energy (Σ power × Δt / 1000). Max power is the peak sample. Pedaling / coasting seconds count samples above vs at 0 W (including resampled gaps).

What this is not

Citations

Ready when there’s a seat.

Join the waitlist for closed beta. We’ll invite you when there’s room — then import your history and start a living plan.