Free tool

Calculate Training Stress Score from any ride.

Calculate Training Stress Score, Intensity Factor, and the intensity band from any cycling ride. Plug in duration, Normalized Power, and FTP and the calculator returns the Coggan TSS that feeds CTL, ATL, and TSB - the entire performance management chart in one number per ride. Free, no signup, runs in your browser.

Save your training to a real log

Free · no signup · your file stays on your device

90:00
0:0045:0090:00
0
TSS
0
IF

hours

minutes

seconds

TSS

116

IF

0.88

Intensity

Tempo

IF intensity bands

IF rangeZone Typical use
< 0.55Active Recovery Spin sessions, recovery rides
0.55 - 0.75Endurance Long base rides, group endurance
0.76 - 0.90Tempo Sweet spot, tempo work
0.91 - 1.05Threshold FTP intervals, hour TTs
1.06 - 1.20VO2max 3-5 min intervals
1.21 - 1.50Anaerobic 30 sec - 2 min hard efforts
> 1.50Neuromuscular Sprints, max-power efforts

How it works

  1. 1

    Pull NP from your head unit

    Almost every modern bike computer shows Normalized Power for the ride. That number is the input.

  2. 2

    Enter ride duration

    Moving time, not elapsed time. TSS is a moving-time metric - pee breaks and traffic lights don't accumulate stress.

  3. 3

    Enter your current FTP

    The IF and TSS values both rescale with your threshold. An outdated FTP will overstate or understate every ride.

  4. 4

    Read TSS, IF, and intensity band

    TSS quantifies total stress. IF tells you how hard relative to threshold. The band labels what kind of ride this actually was.

The math

TSS is anchored to a one-hour-at-FTP standard: that effort, by definition, equals 100 TSS. The full formula:

TSS = (NP × IF × duration_hours ÷ FTP) × 100

where IF (Intensity Factor) is itself NP divided by FTP:

IF = NP ÷ FTP

Substituting and simplifying gives an equivalent form often seen in books:

TSS = (NP² × duration_hours ÷ FTP²) × 100

Worked example: a moderate one-hour ride

FTP = 250 W. Ride is 60 minutes, NP = 200 W. IF = 200 ÷ 250 = 0.80 (Tempo band). TSS = (200 × 0.80 × 1 ÷ 250) × 100 = 64. A tempo hour costs about 64 TSS.

Worked example: a long Z2 ride

FTP = 250 W. Ride is 4 hours, NP = 165 W. IF = 0.66 (Endurance band). TSS = (165 × 0.66 × 4 ÷ 250) × 100 = 174. Four hours steady costs roughly 174 TSS - far more than the one-hour tempo despite a much lower IF.

Worked example: an FTP interval session

FTP = 250 W. Ride is 90 minutes with 2×20 at threshold. NP = 215 W. IF = 0.86. TSS = (215 × 0.86 × 1.5 ÷ 250) × 100 = 111. Threshold work for an hour and a half hits triple digits - the typical break-glass workout.

Why NP, not average power

A race with constant surges has the same average watts as a steady tempo ride at lower variability, but the race costs much more. NP's four-power rolling weighting captures that. Always feed TSS calculations NP from the bike computer, not raw avg watts.

How to use this in training

  • Plan weekly load. Most amateurs progress sustainably at 400-700 TSS/week with periodization. Step up by 5-10% per week, then drop back every fourth week.
  • Manage CTL across a season. Chronic Training Load is the 42-day exponentially weighted average of daily TSS. A rising CTL means accumulating fitness; a flat CTL means maintenance; a falling CTL means detraining or tapering.
  • Use TSB to time peaks. Training Stress Balance (CTL − ATL) is your form. Positive TSB on race day equals fresh legs. Aim for +5 to +20 for goal events; +30 means you've tapered too much.
  • Compare ride types fairly. Use IF to compare quality, TSS to compare volume. A 1.0 IF ride is brutal regardless of length. A 0.65 IF ride is sustainable for hours.
  • Audit weeks where you felt flat. Sudden ATL spikes precede flat training weeks. The metric won't replace sleep tracking, but it will tell you whether you have any business asking why you're tired.

Common mistakes & misconceptions

  • Plugging average power instead of NP

    For variable rides, NP can be 10-25% higher than avg watts. Using avg watts under-reports TSS and silently misleads your weekly load.

  • Using an outdated FTP

    If your fitness has improved 8% but FTP in the calculator hasn't, every ride looks harder than it was. Retest every 4-6 weeks during a structured block.

  • Comparing TSS across sports

    Running TSS and cycling TSS share a name and a scale but not a physiology. A 100 rTSS run hits the legs much harder than a 100 cycling TSS ride.

  • Chasing IF without context

    A 0.95 IF over 90 minutes is a brutal threshold workout. A 0.95 IF over 15 minutes is a hard interval. IF is intensity, not difficulty.

  • Treating TSS as exact

    The formula assumes power calibration is perfect and FTP is exactly your one-hour power. Small errors in either propagate. Round TSS to the nearest 5 for weekly planning.

  • Using elapsed time, not moving time

    A 4-hour group ride with 30 minutes of café stop is 3.5 hours of riding. The calculator wants the riding hours.

Related tools

FAQ

What is TSS?

Training Stress Score is a single number that quantifies how much physiological stress a ride imposed. A one-hour all-out effort at FTP = 100 TSS by definition; longer or harder rides accumulate proportionally more.

Where does the TSS formula come from?

Andy Coggan developed TSS in the early 2000s as part of his Performance Manager framework. It generalizes the heart-rate-based TRIMP concept to power data, accounting for both intensity (via IF) and duration.

What does Normalized Power capture that average power misses?

NP is a weighted moving average that penalizes variability. A ride spent surging and resting at the same average watts costs more physiologically than a steady ride; NP captures that. The actual algorithm: 30-second rolling mean, raised to the 4th power, averaged, then 4th root.

What is a sustainable weekly TSS?

Recreational riders cap out around 400-500 TSS per week. Serious amateurs sustain 600-800. Domestic pros run 900-1300 with periodization. Beyond about 1000/week sustained, recovery becomes the bottleneck for most non-pros.

How do CTL, ATL, and TSB relate to TSS?

CTL (Chronic Training Load) is a 42-day exponentially weighted average of daily TSS - your fitness. ATL (Acute Training Load) is the 7-day version - your fatigue. TSB (Training Stress Balance) = CTL − ATL - your form. The whole framework is built on accurate daily TSS.

Can I compare TSS across cycling and running?

Not directly. Running TSS (rTSS) is derived from pace, not power, and the scaling is calibrated separately. The same number on a bike and a run doesn't cost the same. Compare within sport.

What if I don't have a power meter?

Heart-rate-based TSS (hrTSS) uses time in heart-rate zones. It is less precise than power-based TSS, especially on short or variable rides, but it is the best available substitute. Long, steady rides translate cleanly; short, hard intervals do not.

How accurate is TSS for predicting recovery?

It is a strong signal but not a complete picture. TSS does not know about sleep quality, life stress, fueling, or heat. Use it as one input into recovery decisions, not the only one.

Is TSS additive across activities in the same day?

For training load, yes - a 60 TSS ride plus a 30 TSS run sum to 90 TSS for that day. Just remember the sources are not physiologically interchangeable, and the run's impact on the legs is bigger than the number suggests.

When is IF useful on its own?

IF answers "how hard was this relative to my threshold?" without conflating duration. A 1.05 IF for an hour is a threshold time trial. A 0.85 IF for an hour is a tempo workout. The number tells the story instantly.

Save your training to a real log

CTL, ATL, and TSB only mean something when daily TSS is logged consistently. Domestique handles the bookkeeping and turns it into clean trend lines.

Join the waitlist