Training Load Explained: What CTL, ATL and TSB Actually Tell You

· 8 min read

Open any serious training app and you will find three numbers with friendly names: Fitness, Fatigue, Form. They look like judgements. They are not. They are the output of a specific piece of arithmetic that has been around since 1991, and once you know what the arithmetic does, the numbers stop being a verdict and start being useful.

This is how they are calculated in HighFive, which is the same way they are calculated nearly everywhere else — the model is public, and we would rather show our work than imply we invented something.

One input: the training stress score

All three numbers are built from one daily input: TSS, the training stress score of each session. TSS asks a single question — how hard was this, for how long — and answers it as a number where roughly 100 means "one hour at your threshold".

If you ride with a power meter, the calculation uses power:

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

NP is normalised power, IF is intensity factor (your normalised power divided by your functional threshold power), and FTP is the power you could hold for about an hour. An hour exactly at FTP gives IF = 1.0 and TSS = 100, which is where the scale is anchored.

Most people do not have a power meter, and runners largely do not use one at all. For heart rate the same shape of calculation substitutes your lactate threshold heart rate for FTP:

IF = average HR / LTHR, TSS = (duration × avgHR × IF) / (LTHR × 3600) × 100

This is an approximation and worth being honest about. Heart rate lags effort by a minute or two, drifts upward in heat and dehydration, and barely moves during short, sharp efforts. A set of 200m repeats and an easy jog of the same duration can land closer together in TSS than they felt. The model is good at steady aerobic work and progressively worse the more intermittent your session gets.

Fitness (CTL) is a 42-day average

Chronic Training Load is an exponentially weighted moving average of your daily TSS with a time constant of 42 days. Each day, the new value is:

CTL_today = CTL_yesterday + (TSS_today − CTL_yesterday) × 0.0235

That 0.0235 is 1 − e^(−1/42). The practical meaning of such a small factor: a single day changes your Fitness number by almost nothing. One enormous ride moves a CTL of 50 by about a point. What moves it is doing something repeatedly for weeks.

This is why Fitness feels unresponsive and why that is correct behaviour rather than a bug. Physiological adaptation — mitochondrial density, capillarisation, stroke volume, tendon stiffness — operates on a timescale of weeks to months. A number that jumped after every good session would be measuring your mood, not your aerobic base.

It also means CTL punishes interruption slowly. Take a week completely off and you lose roughly 15% of your Fitness number, not half of it. Take a month off and the decay compounds into something you can genuinely feel.

Fatigue (ATL) is the same maths in a hurry

Acute Training Load is the identical formula with a 7-day time constant:

ATL_today = ATL_yesterday + (TSS_today − ATL_yesterday) × 0.1331

A factor of 0.1331 — about 5.7 times larger than CTL's — means a hard day visibly spikes Fatigue and a rest day visibly drops it. That is the entire point. ATL is meant to track the thing that goes away when you sleep, and CTL is meant to track the thing that does not.

Form (TSB) is just the gap between them

Training Stress Balance is the simplest number of the three:

TSB = CTL − ATL

When your recent week has been harder than your rolling six weeks, ATL exceeds CTL and Form goes negative. When you ease off, Fatigue decays faster than Fitness and Form climbs. That is all it is: a measure of whether you are currently digging a hole or climbing out of one.

These are the bands HighFive uses, and they are worth reading as rough weather rather than precise instruction:

Form (TSB)What it usually means
Below −30Overreaching — sustainable only briefly, and only deliberately
−30 to −10Hard block — where productive training actually happens
−10 to +5Optimal — training hard enough to adapt, fresh enough to execute
+5 to +25Fresh — the zone you want on race morning
Above +25Peak, or detrained — the number alone cannot tell you which

That last row is the one people misread. A Form of +40 after a taper means you are rested and dangerous. The same +40 after three weeks on the sofa means your Fatigue has decayed to nothing and so, quietly, has your Fitness. Form is a difference between two numbers, and a difference cannot tell you where both of them started. Always read it next to CTL.

A worked example

Suppose you are sitting at CTL 50, ATL 50, Form 0 — perfectly steady, neither building nor recovering. Now you ride a hard week averaging 90 TSS a day.

  1. After two days: ATL has climbed to roughly 60, CTL has barely moved from 51. Form is about −9 and you feel fine.
  2. After five days: ATL is near 72, CTL around 53. Form is −19 — the hard-block zone. Legs are heavy, your easy pace feels like work.
  3. After seven days: ATL about 76, CTL 54, Form −22. This is the point where athletes conclude the training is not working, because every single ride feels worse than the week before.
  4. Now take three easy days at 20 TSS. ATL falls fast to around 53 while CTL only dips to 53. Form returns to roughly 0 — and the fitness you built during the hard week is now something you can actually use.

The shape of that example is the whole argument for tracking these numbers. Fitness was accumulating the entire time; it was simply buried under Fatigue. Without the decomposition, the hard week feels like failure right up until the taper reveals otherwise.

What the model does not know

It is worth being blunt about the limits, because treating these numbers as a complete picture of your readiness is the most common way to get hurt while following them precisely.

  • It does not see sleep, work stress, illness, heat, altitude, or a toddler who woke you three times. A TSB of −5 means something very different on eight hours of sleep than on four.
  • It flattens strength training. An hour of heavy squats generates modest TSS and enormous neuromuscular fatigue. If lifting is a real part of your week, the model is systematically under-reading your load.
  • It treats all TSS as interchangeable. 100 TSS of easy volume and 100 TSS of threshold intervals produce very different adaptations, and the model cannot distinguish them.
  • HR-derived TSS is an estimate of an estimate — it depends on your LTHR being roughly correct. If you set it once two years ago, every number downstream is skewed.
  • The model is a curve fit, not physiology. It describes the shape of how people respond to training. It does not know anything about you specifically.

How to actually use it

The honest answer is that these numbers are better at explaining the past than predicting the future. Three habits get most of the value:

  • Watch the trend in CTL across months, not days. Rising slowly is the goal; rising sharply is how people get injured. A common guideline is to add no more than 5–8 CTL points per month over a sustained build.
  • Use TSB to time your hard days, not to decide whether to train. Deeply negative Form on the morning of an interval session is a reason to move the session, not to skip the week.
  • When Form and feel disagree, believe feel. The model has never once been inside your legs.

Used that way, the three numbers do something genuinely useful: they separate "I am tired" from "I am unfit", which are the two things athletes confuse most often, and which call for exactly opposite responses.

See your own curves

HighFive computes CTL, ATL and TSB from every activity you record or import from Apple Health, with a 42-day history chart and plain-English guidance for where you sit. It is part of Premium, and there is a free trial.

← All posts