About the Training Load Calculator (CTL/ATL/TSB)
This training load calculator builds your own performance management chart from a list of daily training stress scores. Paste one TSS value per day (use 0 for rest days) and it returns chronic training load (CTL, "fitness"), acute training load (ATL, "fatigue") and training stress balance (TSB, "form"), plus a day-by-day chart.
It is for cyclists, runners and triathletes who want to plan a build or a taper without a paid platform, or who want to check how a planned week would change their form before a race. You can enter starting CTL and ATL from your training app so the numbers continue from where you are now.
The model is the exponentially weighted average used in the impulse-response approach popularised by TrainingPeaks: CTL with a 42-day time constant and ATL with a 7-day one. Any consistent stress score works — TSS from power, hrTSS, rTSS or TRIMP — but do not mix scales in the same list.
With the default inputs, the form (tsb) for tomorrow is -9.1. Change any value above to recalculate instantly.
How to use the training load calculator (ctl/atl/tsb)
- 1Export or note your daily TSS, oldest day first, with 0 for rest days.
- 2Paste the list into the box.
- 3Enter your current CTL and ATL from your training app, or leave the defaults.
- 4Read your form for tomorrow and check the chart for trends.
- 5Add planned sessions to the end of the list to preview a taper or build.
Formula and method
Each day, CTL moves one forty-second of the way toward that day's TSS and ATL moves one seventh of the way, which makes them exponentially weighted moving averages of training stress over roughly six weeks and one week. CTL rises slowly and represents fitness; ATL reacts quickly and represents fatigue.
Training stress balance is CTL minus ATL. Computed after the last day in your list, it is the form you carry into the next day (TrainingPeaks shows today's TSB as yesterday's CTL minus yesterday's ATL, which is the same number). Positive TSB means you are fresher than your recent training; strongly negative TSB means accumulated fatigue. The form-status bands are common coaching guides, not hard limits.
- TSSₜ
- Training stress score on day t (0 on rest days)
- CTL
- Chronic training load (fitness), 42-day constant
- ATL
- Acute training load (fatigue), 7-day constant
- TSB
- Training stress balance (form)
Worked examples
Two weeks of mixed training from CTL 50 / ATL 50
Fourteen days averaging about 64 TSS lift CTL from 50 to 53.96 while ATL climbs faster to 63.04. Form ends at −9.1, inside the neutral band.
42 straight days of 100 TSS from zero
Starting from nothing, six weeks of 100 TSS per day takes ATL almost to 100 but CTL only to 63.7, because the 42-day average responds slowly. Form of −36 shows heavy fatigue.
A one-week taper of complete rest
Seven rest days drop fatigue from 90 to 30.6 but fitness only from 60 to 50.7, turning form from −30 to +20.1 — fresh, though a full week off costs noticeable fitness.
Frequently asked questions
What is a good TSB for race day?+
Many athletes race best with TSB somewhere around +5 to +25, reached through a one- to three-week taper. Too high and you have lost fitness; around zero or below you may still be carrying fatigue.
What do CTL, ATL and TSB mean?+
CTL (chronic training load) is a 42-day weighted average of daily training stress and reflects fitness. ATL (acute training load) is a 7-day average and reflects fatigue. TSB (training stress balance) is CTL minus ATL and reflects form or freshness.
How fast should CTL increase?+
TrainingPeaks suggests a rise of about 5 to 8 CTL points per week during focused training periods, with a recovery week every third or fourth week. Faster ramps are hard to sustain for long and raise the risk of overreaching; newer athletes usually do better toward the lower end.
Can I use heart-rate TSS or TRIMP instead of power TSS?+
Yes. The model works with any daily load score, but keep one consistent scale. TRIMP values are typically larger than TSS, so CTL and ATL will be on a different scale and the form bands will not apply directly.
Why do my numbers differ slightly from my training app?+
Apps may use an exponential decay factor of 1 − e^(−1/42) instead of 1/42, start from a different initial CTL and ATL, or calculate TSB as yesterday's values. These choices shift results by a few tenths to a few points.