All posts

What is TSS, and why 'two hours easy' isn't two hours hard?

7 min read

Imagine two riders. One did a flat 2-hour spin at chat pace. The other did 1 hour of hard intervals. Who worked harder? Whose body needs more recovery tomorrow?

"2 hours" alone can't answer that. "Average power" alone can't either. The metric coaches use to settle the argument is called TSS, Training Stress Score. This post walks through what it is, how it's calculated, and how to use it without getting lost in jargon.

Where TSS came from

TSS was defined by Dr. Andrew Coggan around 2003 and formalized in the book Training and Racing with a Power Meter (Allen & Coggan, 2010). The goal was simple: combine duration and intensity into a single number so athletes could compare rides apples-to-apples.

The formula, demystified

TSS = (hours × IF²) × 100

Two ingredients: how long you rode (in hours), and how hard (as a fraction of your all-out one-hour power, called FTP). That fraction is called Intensity Factor, or IF. An easy ride is IF 0.6-0.7; tempo is ~0.85; an hour at your FTP is IF 1.0.

The calibration point: 1 hour at exactly your FTP = 100 TSS. Everything else is a ratio compared to that. Try it below.

Build a workout. Watch the TSS.

Drag duration and intensity to see how they combine.

TSS

84

Moderate — recoverable overnight

050100150200300+
1h 30min
15min1h2h3h5h
0.75
0.4 recovery0.7 endurance0.85 tempo1.0 FTP1.2 VO2
TSS = (hours × IF²) × 100 = (1.50 × 0.563) × 100 = 84

The aha moment: intensity is squared

Notice what happens when you push the intensity slider just a little higher. TSS jumps a lot. That's because IF is squared in the formula: going from IF 0.70 to IF 0.85 isn't a 21% harder workout, it's 47% more TSS for the same duration.

This is the physiological reality the formula captures. Going from endurance pace to tempo isn't "a bit harder", it's a qualitatively different kind of stress on your body. Double the intensity, quadruple the stress.

Compare real workouts

Pick any two or three workouts below. Watch how a short hard ride can easily outweigh a much longer easy one.

Pick any 2–3. Compare side by side.

These are real workout shapes. Tap to select up to three.

Zone 2 long ride

3 hours · chatty pace

139TSS
Duration3.00h
IF²0.462

"Tired but not wrecked"

5×4 VO₂ intervals

65 min · go to the moon

94TSS
Duration1.08h
IF²0.865

"Fully wrecked tomorrow"

Notice: a short hard ride can produce more TSS than a much longer easy ride — intensity is squared.

A 65-minute VO₂ session at IF 0.93 produces ~94 TSS. A 3-hour Zone 2 ride at IF 0.68 produces ~139 TSS. So the long ride is more total stress, but it breaks down roughly 46% harder per hour of effort. Both have a place in training.

Why a single number matters

Because training is cumulative. One ride doesn't tell you much. Twelve rides do. If you know each day's TSS, you can sum them into weekly load, and from weekly load you can derive a 42-day rolling fitness number (that's CTL, a story for the next post).

Try building a week and see what kind of athlete your load describes:

Your week, one click at a time.

Tap each day to cycle through rest / easy / moderate / hard / very hard.

Rest (0)
Easy (40)
Moderate (80)
Hard (130)
Very hard (180)

Weekly TSS

560

Building

Classic build week for a recreational athlete. CTL rises ~1/week.

Ranges are heuristic. Real fitness tracking uses a 42-day exponentially weighted average called CTL — see the next post.

How to use TSS practically

Three rules of thumb that aren't in most tutorials:

  • Don't chase TSS. It's a measurement, not a target. Riding extra to "hit 500 this week" usually costs you next week.
  • Compare your own TSS to your own history. A 400 TSS week is a lot for a commuter and a recovery week for a Cat 2. Absolute numbers mean less than your personal trend.
  • TSS assumes a valid FTP. If your FTP is set too high, every ride looks easier than it is (lower IF, lower TSS). If it's too low, everything looks brutally hard. Retest every 6-8 weeks of consistent training.

When TSS falls short

TSS is great for steady-ish efforts on a power meter. It handles intervals reasonably well through Normalized Power (an average that weights harder efforts more). But it's blind to:

  • Heat stress (30°C at the same power = much more fatigue)
  • Altitude (the same IF at 3000m is not the same workout)
  • Sleep and life stress (your body doesn't separate these from training)
  • Strength/running cross-training (doesn't register at all)

So treat TSS as the numerator in how-hard-did-I-work, not the complete answer. Good coaches (and good AI coaches) pair it with context: how did the ride feel, how was sleep, what's the heat forecast.

Further reading

  • Training and Racing with a Power Meter, Hunter Allen & Andrew Coggan, the textbook.