Training Stress Score (TSS): Useful Number, Wrong Anchor
TSS is not the problem. Making it the anchor is.
Training Stress Score does one thing well: it converts duration and intensity into a single comparable number so you can stack sessions against each other across different lengths and disciplines. A 90-minute tempo run and a 3-hour endurance ride can both land near 130 TSS, and that comparison tells you something real about relative load.
The problem is that TSS tells you what you put in. It says nothing about what your body can absorb. Two athletes completing an identical 200 TSS ride are having completely different biological experiences if one slept eight hours and ate 400g of carbohydrate, while the other slept five hours and ran a calorie deficit for four days. The number on the screen is identical. The cost in tissue and hormonal disruption is not.
That gap, between session output and recovery capacity, is where most athletes get into trouble with TSS. This guide is about working in that gap rather than pretending it does not exist.
Where the number came from
TSS was developed in 2002 by Andy Coggan, working from an earlier foundation laid by Eric Banister's impulse-response model from 1975. Banister proposed expressing performance as a balance between a slow-decaying fitness gain and a fast-decaying fatigue component from accumulated training. Coggan adapted that framework for power-metered cycling and built TSS as the per-session input: the dose that feeds the model.
The formula: TSS = (duration in hours) x (intensity factor squared) x 100.
Intensity factor (IF) is your average or normalized power divided by your functional threshold power (FTP). An hour at exactly your threshold gives IF = 1.0, TSS = 100. That is the anchor: one hour all-out at threshold equals 100 TSS.
The squared term matters. Intensity scales faster than duration. A 10% increase in IF at the same duration raises TSS more than adding 10% more time at the same IF. This is physiologically honest: hard is harder than long, per unit of time.
What TSS earns
The comparison function is real and useful. It lets you see cumulative load across a mixed training week, run and bike and swim flattened onto one axis. It is the foundation of chronic training load (CTL), which is a rolling 42-day weighted average of daily TSS. A rising CTL means fitness is accumulating. A CTL that climbs faster than your body can adapt means you are building a breakdown.
Ramp rate is where TSS earns its keep for athletes. Jumping from 400 to 700 weekly TSS in two weeks will injure most recreational athletes, and the number shows you that ramp before your body forces the deload. A sustainable ceiling for most recreational athletes is roughly 5-8 additional CTL points per week. Watching that rate is one of the highest-leverage uses of TSS.
For triathletes and hybrid athletes, it is also the only sensible way to put a swim, a bike, and a run on the same axis. Each discipline has its own TSS variant: watts-based for cycling, pace-based rTSS for running, hrTSS when power or pace data is unavailable. The numbers are imperfect translations but directionally useful for tracking multi-sport load. See the normalized power guide for the cycling-specific math behind IF and TSS.
Where TSS breaks
Here is the honest version: peer-reviewed research on Banister-type models identifies several structural weaknesses. They assume the training effect is maximal at the end of a session, when real skeletal muscle adaptation unfolds over days. They ignore psychological, nutritional, and environmental variables. They offer no mechanism for athlete-specific response patterns. When researchers tested these models against modern alternatives on elite performance data, regularized machine-learning methods outperformed classic CTL/ATL frameworks in predictive accuracy.
None of that means you should throw TSS away. It means you should know what it is not predicting.
TSS does not see recovery state. A 150 TSS day when HRV is 20% below your baseline is a very different training stimulus than 150 TSS when you are rested and fresh. The number is identical. The hormonal and neuromuscular cost is not. HRV-guided training fills this gap in a way TSS cannot.
TSS does not see fuel. Long aerobic sessions empty glycogen if carbohydrate intake is inadequate, and the next quality session suffers. A week of 500 TSS well-fueled builds fitness. The same 500 TSS on a chronic calorie deficit digs a hole. The number looks the same either way. Read fueling around long sessions for what that gap costs.
TSS does not see life stress. Research on athlete wellbeing is consistent: non-training stressors like sleep deprivation, travel, and psychosocial pressure meaningfully affect how athletes absorb training load. A 100 TSS ride during a brutal work week is not the same session as 100 TSS during a calm recovery week.
TSS does not see strength training. A heavy 5x5 squat session does not appear in your bike TSS at all. Your legs absolutely know it happened. For hybrid athletes, this is a persistent blind spot: strength load plus endurance load is the real total stress, and only half of it appears on the TSS chart.
TSS is only as accurate as your FTP. FTP is the denominator of the whole formula. Research on FTP test-retest reliability in competitive cyclists shows intraclass correlation coefficients in the range of 0.55 to 0.97 depending on protocol, meaning FTP measurement itself carries meaningful noise. If your FTP is set 10 watts too high, every ride's TSS is inflated. A stale FTP after a training block inflates every session's cost by underestimating your real threshold. TSS chains to whatever number you tested last.
rTSS overcounts muscular damage from running. At the same TSS figure, running creates more muscle damage than cycling. The mechanism is biomechanical: running is eccentric-dominant (muscles lengthening under load), while cycling is concentric-dominant. Research confirms that eccentric exercise causes significantly greater muscle damage markers than concentric work at equivalent loads. A 100 rTSS long run and a 100 bike TSS tempo ride are not the same recovery ask, even though the model treats them identically.
The historian's note: this idea is older than the app
The concept behind TSS, quantifying training dose to predict performance, predates GPS, power meters, and smartphones. Banister's impulse-response model from 1975 was running on collegiate swimmers long before the first cycling computer existed. Phil Maffetone's MAF method from the early 1980s was another expression of the same idea: measure load, manage intensity, predict adaptation. What changed is not the underlying physiology. What changed is the precision of the measurement, the accessibility of the tools, and the number of apps selling subscriptions built around the framework.
That context matters for calibrating how seriously to take any single metric. TSS is a refinement of an idea that has been tested and found useful, and also found incomplete, for 50 years. Trust the useful part. Do not outsource judgment to the number.
How Movement Rebels reads TSS
Movement Rebels treats TSS as one input in a multi-signal model, not the primary anchor.
When your Garmin syncs a completed workout, the coach reads the activity data including the session's calculated load. Structured workouts you receive are pushed directly to your Garmin watch via the native integration, so the coached session and the actual output can be compared. Apple Health (native on the iOS app) brings in HRV, sleep, and resting heart rate from your wearable. Strava is a write destination: after the coach generates session analysis, it writes a coaching summary back to your Strava activity description. Strava activity data does not flow into the coach as an analytical input.
The coach layers all of this together. Cumulative load from all disciplines feeds the adaptive plan. If you are a hybrid athlete running alongside cycling, the plan accounts for both streams, not just whichever one produces a power file. A 4x6 squat session logged in the strength tracker shows up as systemic stress even though it contributes nothing to your weekly rTSS.
HRV trend from Apple Health or your Garmin tells the coach whether your body is absorbing the load or accumulating it. Sleep duration and quality add another layer. Fueling logged in the app shows whether the energy is there to back the training. If HRV drops and sleep shortens while TSS is climbing, the plan pulls back, not because the TSS target was missed, but because the signals that TSS ignores are telling a different story.
You can ask the coach why a session was adjusted. It will tell you which inputs moved: load ramp, HRV trend, sleep data, fuel deficit, strength volume. That transparency is how TSS gets useful, as one signal among several that you can actually interrogate, rather than the single number you are trying to optimize.
For athletes building toward a goal event, the coach also uses TSS ramp rate to set periodization blocks: build phases where CTL rises steadily, peak phases where acute load spikes, and taper phases where ATL drops faster than CTL to produce freshness. See periodization for recreational athletes for how those phases work in practice.
How to actually use TSS
Watch the ramp rate, not the daily number. Weekly CTL growth of 5-8 points is the rough sustainable ceiling. Faster than that and you are outrunning your ability to absorb. If you are approaching a target event, expect controlled CTL climbs during build blocks and a deliberate ATL drop in the two to three weeks before race day. See when to deload for the signals that confirm the taper is working.
Pair TSS with HRV and sleep. Rising TSS alongside stable or rising HRV means you are adapting. Rising TSS alongside falling HRV means fatigue is outpacing recovery. The second scenario is a deload signal regardless of what the training plan says. The guide on overtraining signs covers what happens when you ignore that signal long enough.
Pair TSS with fueling. A high-TSS week on adequate carbohydrate and total calories builds fitness. The same week underfueled builds a deficit. Log meals so the coach can see energy availability, not just training output.
Calibrate your FTP regularly. After any significant training block, a fresh threshold test keeps the denominator honest. A stale FTP quietly corrupts every IF and TSS calculation downstream.
Treat rTSS and cycling TSS as rough equivalents for cumulative load tracking, but remember the muscular damage gap when reading recovery signals. After a long run, your legs need more than the TSS number implies. After a long ride, your cardiovascular system may be more taxed than the legs.
TSS is not broken. It is just incomplete. Use it for what it does well: comparing sessions, tracking weekly ramp, and feeding the periodization model. Then add the signals it cannot see, and make decisions from the combination.
Pricing
A 7-day free trial gives you full access to the adaptive plan, the coach chat, activity sync from Garmin and Apple Health, fueling log, breathwork, NSDR, fasting timer, and every integrated wearable. No card required. After the trial, Pro+ is $20/month for unlimited coaching. The morning brief and weekly brief stay free for everyone.
One app instead of five.
Strength, endurance, recovery, fueling, planning, and your AI coach — all under a 7-day free trial. No card.
▸ start_7_day_trialNormalized Power Explained: The Algorithm Is Sound, the Hype Around It Is Not
Normalized Power weights variable efforts to estimate real physiological cost. The math is solid. The blind spot the hype skips: N
HRV-Guided Training: Read the Signal, Skip the Noise
One low HRV night tells you almost nothing. The 7-day-vs-28-day trend tells you nearly everything. Here is what the evidence actua
Periodization for Recreational Athletes: Which Model, and How Much Do You Actually Need?
Linear, block, undulating: the honest evidence on which periodization model recreational athletes actually need, and what the rese
When to Deload: Reading the Signals Right
The 4-week deload rule is a template, not a law. Here are the actual physiological signals that tell you when your body is asking