Endurance Debrief / Guides / How to Calculate TSS

How to Calculate TSS (Training Stress Score)

Guide 6 min read Formula, calculator & table

Short answer: TSS compresses the duration and intensity of a session into one number – exactly one hour at your threshold power is defined as TSS 100. Everything else scales from there.

Training Stress Score (TSS) was developed by Dr. Andrew Coggan and has become the standard way to quantify how much a single session cost your body – whether that's 40 hard minutes or three easy hours. It's also the raw input for the fitness curve (CTL/ATL/TSB) that tracks your form over weeks.

The formula: power-based TSS

With a power meter, TSS is most accurate because it's built on Normalized Power (NP) rather than a plain average – NP weights harder efforts more heavily, because they cost the body disproportionately more. It's calculated from a 30-second rolling average of power, raised to the fourth power, averaged, then taken back to the fourth root.

IF  = NP / FTP
TSS = (duration_seconds × NP × IF) / (FTP × 3600) × 100

Worked example: 1h 20min (4800s) at NP 220W, FTP 250W → IF = 220/250 = 0.88. TSS = (4800 × 220 × 0.88) / (250 × 3600) × 100 ≈ 103. A brisk sweet-spot session, just over an hour at threshold.

TSS calculator

Enter the three numbers your head unit already shows you. Everything is worked out in your browser – nothing is sent anywhere.

Power-based TSS

Duration · Normalized Power · FTP

103 TSS 0.88 Intensity Factor

Roughly an hour at threshold — expect to be fresh again the next day.

Two caveats worth knowing before you trust the output. Normalized Power has to come from the full recording – it's a 30-second rolling average raised to the fourth power, so it can't be reconstructed from an average and a duration. And an out-of-date FTP shifts every score: if your threshold has climbed and your setting hasn't, every session will read as harder than it actually was.

TSS score table: what the numbers mean

Because the scale is anchored at "one hour at threshold = 100", TSS values map fairly consistently onto how long you'll need to recover. As orientation, not as law:

TSSTypical sessionRecovery
under 50short easy spin, recovery runnone needed
50–100ordinary endurance ride, steady runfresh again the next day
100–150solid threshold or sweet-spot sessionsome residual fatigue next day
150–250long ride or hard interval daytwo days of noticeable fatigue
250–400very long ride, race, gran fondoseveral days, often more
over 400ultra-distance eventa week or more

Weekly totals follow the same logic. Recreational athletes riding three to five hours a week often land between 200 and 350 TSS, committed amateurs between 400 and 700, full-time athletes above 900. The absolute number matters far less than how fast it changes – the usual guidance is to raise your weekly total by roughly 5–10 % at a time, and the CTL curve below is what makes that visible.

No power meter: hrTSS via heart rate

No power meter? hrTSS takes over – zone-based on your lactate threshold heart rate (LTHR). Each zone earns a fixed TSS credit per hour (roughly: Z1 ≈ 30, Z2 ≈ 55, Z3 ≈ 70, Z4 ≈ 90, Z5 ≈ 110), summed proportionally to time spent in each zone. Don't know your LTHR? A rough estimate from max heart rate works too (LTHR ≈ 0.9 × HRmax) – less precise, but better than no number at all.

Running: rTSS via pace

For running, pace replaces power. The intensity factor is your threshold pace divided by your actual pace, and rTSS squares that factor:

IF_run = threshold pace / actual pace
rTSS = (duration_seconds × IF_run²) / 3600 × 100

No threshold pace set? It falls back to the hrTSS path. One thing worth watching for: the method should always stay visible, because a power-based TSS 98 and an hrTSS 98 carry different confidence – good analysis tools label which one you're looking at.

No data at all? The RPE estimate

For sessions with no recording (a trainer ride with no sensor, a spontaneous run), there's the pragmatic Foster approximation: duration in hours times perceived effort (RPE, 1–10) squared. One hour at RPE 5 comes out to roughly 25 TSS – rough, but enough to keep your fitness curve from having a gap.

Why TSS is more than a single number

The real value shows up once TSS accumulates over time: CTL (42-day average, "fitness"), ATL (7-day average, "fatigue") and TSB (CTL − ATL, "form") together make up the performance management chart that TrainingPeaks and similar tools are built around. Any single session is just one data point in that curve. If you're weighing up where to track that curve, we've compared the options in our guide to TrainingPeaks alternatives.

Frequently asked questions

What does TSS mean?

TSS stands for Training Stress Score. It compresses the duration and the intensity of a single session into one number describing how much that session cost your body. The scale is anchored: exactly one hour at your functional threshold power is defined as 100 TSS. Half an hour at threshold is 50, two hours would be 200, and easier riding scores less per hour.

What is the TSS formula?

The power-based formula is TSS = (duration_seconds × NP × IF) / (FTP × 3600) × 100, where NP is Normalized Power and IF is the Intensity Factor (NP ÷ FTP). Because IF equals NP/FTP, it can also be written more compactly as TSS = duration_hours × IF² × 100 – the two are algebraically identical.

What is a good TSS per week?

There's no universal number, because TSS is relative to your own threshold. As orientation: recreational athletes training three to five hours a week often land between 200 and 350 TSS, committed amateurs between 400 and 700, full-time athletes above 900. What matters more than the absolute figure is the rate of change – raising your weekly total by roughly 5–10 % at a time is the usual guidance.

What's the difference between TSS and IF?

IF describes only how hard a session was relative to your threshold – 1.0 means you averaged threshold effort. TSS combines that intensity with how long it lasted. A 20-minute session at IF 1.0 and a three-hour session at IF 0.6 feel completely different and score very differently, even though both are perfectly ordinary training.

Can I calculate TSS without a power meter?

Yes. Without power, hrTSS estimates the same quantity from time spent in each heart-rate zone relative to your lactate threshold heart rate. For running, rTSS uses threshold pace instead. Both are good approximations, but heart rate responds more slowly than power, so short hard intervals tend to score lower than a power meter would score them.

How accurate is a TSS calculator?

The arithmetic is exact; it's only as good as the two numbers you feed it. Normalized Power has to come from the full second-by-second recording, so any calculator taking NP as an input depends on your head unit computing it correctly. And an out-of-date FTP shifts every score – if your real threshold has risen and your setting hasn't, every session reads as harder than it was.

Endurance Debrief

You don't have to work any of this out by hand. Import your .fit, .tcx or .gpx file, or turn on Apple Health import – Endurance Debrief calculates TSS, NP, IF and your CTL/ATL/TSB curve automatically, right on your iPhone. No cloud, no account.