If you've spent any time in the endurance training world - TrainingPeaks, WKO, Golden Cheetah, Intervals.icu, Baseline - you've seen TSS. Training Stress Score. It's the single number that tries to capture "how hard was that workout?" in a way that lets you compare a 5K race to a 3-hour gravel ride to a 4,000-yard swim session.
It's not perfect. But it's the closest thing we have to a universal currency of training load, and understanding how it works - and where it breaks - will make you a smarter athlete.
I wrote this for the athlete who's seen TSS in their dashboard, vaguely understands it, but wants the full picture. Let's go deep.
What TSS actually is
TSS is a formula developed by Dr. Andrew Coggan (the same physiologist behind the Performance Management Chart and much of modern power-based training). The formula is:
TSS = (duration × intensity factor × intensity factor) × 100
Or more precisely: TSS = (seconds × NP × IF) / (FTP × 3600) × 100
The intuited version: a workout with a TSS of 100 represents one hour at your functional threshold - the hardest effort you could sustain for about 60 minutes.
The three inputs
1. Duration. Longer workouts accumulate more TSS. A 3-hour ride naturally scores higher than a 45-minute run. This seems obvious, but it's worth stating: TSS doesn't just measure intensity. It measures load, which is duration × intensity.
2. Intensity Factor (IF). IF is the ratio of your normalized power (or pace) to your threshold. An IF of 1.0 means you averaged exactly at threshold. An IF of 0.8 means you averaged 80% of threshold. An IF of 1.2 means you averaged 20% above threshold (a short, very hard effort).
IF is squared in the TSS formula. This is the critical detail most people miss. Doubling your intensity more than doubles your TSS - it quadruples it. A 30-minute session at IF 1.0 (threshold) gives you about 50 TSS. A 30-minute session at IF 1.4 (hard VO2 max intervals) gives you about 98 TSS - almost twice the score for the same duration.
This squaring is intentional. It reflects the physiological reality that intensity costs more than linearly. A minute at 120% of FTP is harder on your body than two minutes at 60%. The squaring captures that.
3. The sport-specific factor. For cycling, TSS uses Normalized Power (NP), which is a weighted average that accounts for the variable nature of outdoor riding. For running, it uses Grade-Adjusted Pace (GAP) or simply pace vs threshold pace. For swimming, pace vs threshold pace.
Normalized Power: the secret sauce
Normalized Power deserves its own section because it's the smartest part of the TSS formula - and it's the reason TSS works better for cycling than it does for any other sport.
Average power is a lie
If you ride a hilly route or a windy out-and-back, your average power might be 180 watts. But the effort felt harder than a steady 180 watts on a trainer. Because the surges - the 350-watt climbs, the 400-watt accelerations - cost disproportionately more physiologically than the 120-watt descents save.
Normalized Power solves this by:
- Taking every second of your power data
- Applying a rolling 30-second average (to approximate the delay of the aerobic system's response)
- Raising each value to the 4th power (to weight harder efforts much more heavily)
- Averaging the 4th-power values
- Taking the 4th root to bring it back to watts
The result: NP is always equal to or higher than average power. For a steady indoor ride, they're close. For a punchy outdoor ride with surges, NP can be 10–20% higher than average power.
This is why two rides with the same average power can have dramatically different TSS scores - and why the one with higher TSS genuinely did feel harder.
For running, it's more approximate
Running TSS (rTSS) typically uses pace instead of power. Grade-Adjusted Pace attempts to adjust for hills - uphill efforts are harder than the raw pace suggests, downhill easier. But the adjustment is less precise than power for cycling.
The honest assessment: rTSS is directionally useful but less accurate than cycling TSS. If you run with a power meter (Stryd), you can get proper power-based TSS, which is better.
IF: the compression of effort
Intensity Factor (IF) is the ratio of your NP to your FTP.
| IF range | Effort description | Typical TSS per hour | |----------|-------------------|---------------------| | < 0.75 | Recovery | < 50 | | 0.75–0.85 | Endurance (Z2) | 55–75 | | 0.85–0.95 | Tempo / sweet spot | 75–90 | | 0.95–1.05 | Threshold | 90–110 | | 1.05–1.15 | VO2 max intervals | 110–130 (unsustainable for full hour) | | > 1.15 | Anaerobic / sprint | Full gas, very short |
The rule of thumb: a 1-hour workout at IF 0.8 (solid Z2) generates about 65 TSS. Same duration at IF 1.0 gives you 100 TSS. The squared relationship means the difference between 0.8 and 1.0 isn't 25% more load - it's 56% more.
CTL, ATL, TSB: the TSS family tree
TSS per workout is useful. But the real power comes from aggregating it over time. If you've used TrainingPeaks or Baseline, you've seen the Performance Management Chart:
- CTL (Chronic Training Load): exponentially weighted average of daily TSS over ~42 days. Represents your fitness.
- ATL (Acute Training Load): same calculation over ~7 days. Represents your fatigue.
- TSB (Training Stress Balance): CTL minus ATL. Represents your form.
These are built on TSS. If TSS is the grain, CTL/ATL/TSB is the bread.
I've written a full breakdown of these in another post, but the short version: CTL rises when you train consistently, ATL spikes with hard workouts, and TSB tells you when you're fresh enough to race well.
Where TSS breaks
TSS is a model. All models are wrong; some are useful. Here's where TSS is wrong.
1. It undervalues strength work
A 45-minute strength session with heavy squats and deadlifts creates significant systemic fatigue. But unless you have a power meter on your barbell (and who does?), TSS for strength work is either estimated from heart rate or skipped entirely. Most people skip it, which means their true training load is higher than their TSS shows.
2. It overvalues long slow distance relative to really hard intervals
A 4-hour Z2 ride at 0.75 IF generates about 225 TSS. A 45-minute threshold session at 1.0 IF generates about 75 TSS. The long ride scores 3x the load, but the hard session might create more neuromuscular fatigue and central nervous system stress. TSS doesn't differentiate between peripheral aerobic fatigue and central fatigue.
3. It assumes your FTP is correct
If your FTP is set too high, your IF is artificially low, and every workout looks easier than it actually was. If it's set too low, everything looks too hard. Garbage in, garbage out. Re-test FTP every 4–8 weeks.
4. Non-cycling sports have worse TSS
The heart rate-based TSS (hrTSS) used for running and swimming is less accurate than power-based TSS because heart rate lags effort. A 30-second surge shows up in power immediately but takes 60–90 seconds to register in HR. HrTSS smooths over the very spikes that make workouts hard.
Alternatives to TSS
If TSS doesn't work for you (or you want cross-validation), the main alternatives:
TRIMP (Training Impulse)
TRIMP = duration × heart rate zone weighting. There are several versions: the original Bannister TRIMP, the Edwards TRIMP (five-zone method), and the Lucia TRIMP (three-zone). The key difference: TRIMP weights time at high HR less aggressively than TSS weights high-intensity time. It's often preferred in research settings.
rTSS (running TSS)
As discussed above. Same formula as cycling TSS but using pace (optionally grade-adjusted) instead of power. Decent for steady runs, less accurate for intervals.
hrTSS (heart rate-based TSS)
Uses heart rate data to estimate TSS when power or pace aren't available. Applied automatically by TrainingPeaks and Baseline for activities that have HR but no power/pace. Useful for cross-training (swimming, strength, hiking). But the smoothing problem is real - hrTSS systematically underestimates high-intensity work.
sRPE (session RPE)
Rate of Perceived Exertion × duration in minutes. Developed by Carl Foster. Surprisingly validated against TSS in research. The advantage: no data required. You can use it for any activity including strength, yoga, or a hard day at work. The disadvantage: subjective.
PBE (Power-Based Endurance score)
This is WKO's newer model, part of their shift away from TSS toward mTSS (modeled TSS). It uses the WKO power-duration model to calculate stress more precisely than the simple TSS formula. It's more sophisticated but also harder to understand and port between platforms.
How Baseline handles TSS
Baseline computes TSS automatically from your connected data sources:
- Cycling with power: TSS is calculated from Normalized Power vs your configured FTP. If you have a power meter, this is the most accurate load metric Baseline offers.
- Running with pace or power: rTSS from pace data (with grade adjustment) or power-based TSS from Stryd. You can choose which to use in settings.
- Swimming: pace-based TSS vs your critical swim speed.
- Other activities: hrTSS from heart rate data, or you can enter sRPE manually.
The key feature that Baseline adds: cross-sport TSS aggregation. Your runs, rides, swims, strength sessions, and hikes all contribute to a single CTL/ATL/TSB chart. You don't have to mentally add TSS from three separate platforms.
We also overlay your recovery data (HRV from WHOOP, sleep from Garmin, RHR from Apple Health) against the same timeline. When your TSB drops to -25 and your HRV drops 15% at the same time, we flag it. The AI insights card on your dashboard is where these cross-domain patterns surface - it's one of our most-used features.
The bottom line
TSS is a tool, not a truth. It's very good at one thing: quantifying aerobic training load in a way that lets you compare sessions, track trends, and manage fatigue. It's average at strength, cross-training, and the nuances of neuromuscular stress.
Use TSS for:
- Tracking training load trends over weeks and months
- Planning recovery weeks (drop TSS 30–50% for 5–7 days)
- Comparing the load of different workouts objectively
- Building a Performance Management Chart (CTL/ATL/TSB)
Don't use TSS for:
- Comparing yourself to other athletes (FTP differences make this meaningless)
- Measuring the quality of a workout (it measures load, not benefit)
- Guessing whether you're overtrained (pair it with HRV, sleep, and subjective feel)
If you're already tracking TSS, keep doing it. If you're not, connect your devices to Baseline and see what you've been missing. The daily insights alone - "you've had 5 hard days in a row, your HRV is declining, consider a rest day" - are worth the five minutes it takes to set up.