TSS Calculator

Training stress score and intensity factor for any ride — from normalized power, from average power, or from a zone — and the hours you'd need to hit a target.

What do you want?
Ride duration
h min
Intensity — from what you have

Normalized power is the number your head unit or TrainingPeaks shows after the ride — the one TSS is defined on. Only have average power? Switch the toggle and pick the ride shape.

Training stress score

— TSS

Enter your FTP, the ride's length and its intensity.

How do you calculate TSS?

Training Stress Score is Andrew Coggan's way of putting a ride's length and its intensity on one scale, anchored so that one hour at your FTP scores exactly 100. The formula is TSS = (seconds × NP × IF) ÷ (FTP × 3600) × 100, which collapses to something easier to hold in your head: hours × IF² × 100. Ride two hours at a normalized power of 200 W on an FTP of 250 W and the intensity factor is 0.80, so the score is 2 × 0.80² × 100 = 128 TSS. The calculator above does that arithmetic, and the "show the math" panel writes it out with your numbers.

The square is the part worth noticing. Time counts linearly — twice as long, twice the score — but intensity counts twice over, because the harder a ride is, the more glycogen it burns per minute and the more minutes it burns it for. Coggan described TSS as, above all, a predictor of glycogen used, which is why the fueling calculator is the natural next stop for any ride that scores high.

What is intensity factor (IF)?

Intensity factor is normalized power divided by FTP — the ride's intensity as a fraction of the hardest hour you could ride. An IF of 1.0 is a maximal hour; an IF of 0.7 is an endurance ride. Because it's relative to your threshold, it makes rides comparable across riders and across seasons in a way raw watts never are. Typical values by session type, as Coggan and TrainingPeaks publish them:

Intensity factorWhat rides land here
under 0.75 Recovery rides
0.75–0.85 Endurance-paced rides
0.85–0.95 Tempo, sweet spot, long road races (over 2.5 h)
0.95–1.05 Threshold intervals, criteriums, 40 km time trials
1.05–1.15 Short time trials (~15 km), track points races
over 1.15 Prologues, track pursuit

Coggan's published ranges, as used by TrainingPeaks. An IF above 1.05 for more than an hour doesn't mean you're superhuman — it means your FTP is set too low. The calculator flags it.

Normalized power vs average power

Average power treats a minute at 400 W followed by a minute of coasting as two minutes at 200 W. Your legs disagree. Normalized power fixes that by smoothing the power trace over 30-second windows, raising each window to the fourth power, averaging, and taking the fourth root — a weighting that rewards the hard bits roughly in proportion to how much they cost. For a perfectly steady effort NP equals average power; for a surgy group ride it can sit 10–20% higher. TSS is defined on NP, which is why typing average power into an NP box under-scores every ride that wasn't a time trial.

How do you calculate TSS from average power?

Strictly, you can't — normalized power needs the second-by-second trace. But a basic head unit or a Strava summary only gives you the average, and the honest move is to estimate the gap rather than pretend it's zero. The ratio NP ÷ average power is the variability index, and it tracks the shape of the ride closely enough to guess from: near 1.0 on the trainer, 1.1 and up in a group. The same two-hour ride at 180 W average, on an FTP of 250, scored four ways:

Ride shapeVariability indexEstimated NPIFTSS
Steady — trainer, TT, solo pace1.02184 W0.74108
Rolling — solo road ride, hills1.06191 W0.76117
Group ride — surges and coasting1.12202 W0.81131
Crit, cyclocross, MTB1.20216 W0.86149

Variability presets are typical values for each ride shape, not measurements of your ride — the calculator's "average power" mode uses the same four. Typed straight into the NP box, 180 W would score 104.

That last number is the trap. Put a group ride's average power where normalized power belongs and you log 104 for a ride that was really about 131 — 21% of the training stress quietly missing from the week. Do that every Saturday and your fitness chart thinks you've been resting.

What is a good TSS for a ride?

There's no "good" — a recovery spin is supposed to score low. What the number tells you is how long the ride will take to recover from, and Coggan's bands for that have held up for two decades:

TSSLoadRecovery
under 150 Low Recovery is generally complete by the next day.
150–300 Medium Some residual fatigue the next day, gone by the second.
300–450 High Residual fatigue may still be there after two days.
over 450 Very high Residual fatigue lasting several days is likely.

Coggan's interpretation, reproduced by TrainingPeaks. Bands describe a single ride; what a score means for you depends on the load you're used to — a 200-TSS day is a big one at a CTL of 40 and a routine one at 90.

To put real rides on that scale, here's what common sessions score for a 250 W rider at the intensity factors those rides usually run:

RideTypical IFTSS
1 h recovery spin0.6036
1 h sweet-spot session (2 × 20)0.8877
2 h endurance ride0.7098
3 h fast group ride0.82202
1 h criterium1.00100
40 km time trial (~1 h)1.02104
Century at endurance pace (6 h)0.68277

Computed by the calculator's engine from duration × IF². The IF of a whole session includes its warm-up and rest intervals, which is why "2 × 20 at threshold" runs about 0.88 for the hour, not 1.0. Since TSS is relative to FTP, the same rides score the same for any rider — only the watts change.

Same TSS, very different rides

Because intensity is squared, a score can be reached in wildly different ways. One hundred TSS is an hour at threshold — or an all-day ramble:

Intensity factorTime to reach 100 TSSFeels like
0.55 3 h 18 min Recovery pace — coffee-shop tempo
0.65 2 h 22 min Easy endurance, Zone 2
0.75 1 h 47 min Brisk endurance
0.85 1 h 23 min Tempo — the group-ride average
1.00 1 h Threshold — the definition

Duration = TSS ÷ 100 ÷ IF² hours — the "plan a ride" mode solves this for any target. Zone labels are approximate; the power zones calculator has the boundaries.

Those five rides are equal in TSS and not much else. The 3 h 18 min at IF 0.55 builds aerobic base and burns a lot of fat; the hour at 1.0 hammers threshold and your glycogen. TSS measures the size of the dose, not what it's a dose of — which is exactly why a training week shouldn't be planned by TSS total alone, and why the 277 TSS of a six-hour century lands you in a different kind of tired from a 100-TSS criterium.

A 10% error in power is a 21% error in TSS

Intensity is squared, so mistakes compound: at an FTP of 250 W, two hours at 200 W scores 128, and two hours at 220 W scores 155 — 21% more for 10% more power, computed. The same lever runs the other way through FTP: test high by 10% and every ride you log for the next six weeks under-scores by about the same 21%. TSS is only as good as the FTP it's built on — retest before you trust a trend.

How much TSS per week should you ride?

Weekly TSS is the number that actually matters for fitness, and the platforms track it as CTL (chronic training load) — a rolling, exponentially weighted average of your daily TSS over 42 days, which is what "fitness" means on a TrainingPeaks or intervals.icu chart. Two things follow from the arithmetic. First, the load that holds a CTL steady is seven times that CTL per week: a CTL of 60 needs about 420 TSS a week just to stay there. Second, fitness lags load: start a new weekly total and the 42-day average has closed only 64% of the gap six weeks later. Both, computed from the same chain the calculator's engine runs:

Weekly TSSCTL after 4 wkCTL after 8 wkCTL after 12 wkWhere it levels off
30041.442.142.542.9
40048.452.754.957.1
50055.463.367.371.4
60062.473.979.785.7

Starting from a steady CTL of 40, load spread evenly across the week, CTL updated daily with the 42-day constant. "Levels off" is weekly TSS ÷ 7 — the ceiling a constant load eventually reaches.

To hold a CTL ofYou need about
40280 TSS / week
60420 TSS / week
80560 TSS / week
100700 TSS / week

7 × CTL. A CTL near 40 is a typical starting point for a recreational rider; committed amateurs sit 60–90; full-time racers north of 100.

The usual coaching guardrail is a CTL ramp of about 5–8 points a week, and the table shows how much load that actually takes: 400 TSS a week from a CTL of 40 adds only about 2.1 points a week over the first month, because the average moves slowly. Hitting the top of the guardrail from that start means something like 600 a week (about 5.6 points a week) — a jump that, taken overnight, is how riders get ill or injured rather than fit. A steady week you can repeat beats a heroic one you can't: the "form" line (CTL minus the 7-day ATL) goes deeply negative after big blocks, and that's the number that predicts the week you'll skip.

What TSS doesn't tell you

TSS is a single number, and it flattens things that matter. A 128-TSS ride can be a steady two hours or an hour of brutal intervals with an hour of spinning around them, and the two demand different recovery. It ignores the non-riding stress that shows up as fatigue — sleep, work, heat, a cold coming on. It counts nothing off the bike: a heavy gym session is invisible. And it inherits every flaw in your FTP, which is a bigger source of error than the formula itself — the FTP calculator covers which tests flatter which riders. Treat the number as a good measure of dose, read the intensity alongside it, and let how you feel on day two cast the deciding vote.

TSS without a power meter

Platforms estimate a heart-rate TSS (hrTSS) from time in HR zones, and a rating-of-perceived-exertion version when there's no data at all. Both are coarser than the power version — heart rate lags, drifts with heat and caffeine, and caps out on short efforts, so interval sessions in particular read low. If you train by heart rate, use hrTSS consistently and compare it only with itself — and set the zones it depends on from a measured threshold, which the heart rate zones calculator does. If you have power for some rides and not others, don't mix the two in one weekly total without noting which was which — the estimate will always be the smoother, lower number.