Training load calculator
Four weeks of training in, a form curve out. This runs the actual 42-day and 7-day exponential averages rather than dividing a week by seven, so CTL, ATL and TSB move the way they do on a real performance management chart. It also tells you what that balance number is worth on the morning of a hard session, which is less than the internet implies.
All three are the same quantity seen through different memories: TSS per day averaged over 42 days, over 7 days, and the distance between them. TSB is not an extra measurement — it is the gap in the first two bars.
Fresh
The zone most coaches aim for on race day. It describes your recent unloading, not your odds of a good race.
Band names are coaching convention, not a measured threshold.
CTL ramp: -4.4 in the last 7 days — unloading
What we found
TSB describes your past. It does not forecast your day.
Everything above is bookkeeping. It takes training you have already done and arranges it on a timeline with two decay rates. That is genuinely useful and it is all it does. The trouble starts when a form number gets read forwards — today is a +12 day, today will go well — because nothing in the model was built to answer that.
We can put numbers on how badly that reading goes. Garmin ships a score called Training Readiness whose entire purpose is to tell you, this morning, whether today will go well. We joined each athlete's morning readiness score to the steady runs they actually did that day and correlated the two, athlete by athlete.
0.056
median correlation with how the run went
12.8%
of athletes cleared a correlation of 0.3
5,136
paired steady runs, our athletes
−0.272
positive control, readiness vs yesterday’s load
Sorting each athlete's runs into readiness quintiles moved median efficiency from a z-score of −0.12 in the bottom fifth to +0.03 in the top — about a seventh of a standard deviation across the entire range of the score. The control in the same pipeline came back clearly negative: −0.272 against yesterday's training load across the cohort, with only 3.7% of athletes positive. The pipeline detects relationships that are there. This one is not.
Note what the control actually proves: readiness is, to a large extent, a load ledger. It tracks recent training load faithfully because recent training load is one of its inputs. So the part of that score which behaves most like TSB is exactly the part we measured, and it did not predict the run.
This is not a direct test of TSB and we will not pretend it is. What it does is set a ceiling on how much confidence any load-derived freshness number has earned in a same-day decision. Our reading: use TSB to understand the shape of the block you just finished and to time an unload before a race — questions about training history, which is the only thing it measures. Do not use it to decide whether today's intervals are on. Ten minutes of warm-up knows more than the number does.
Garmin devices only, and a self-selected cohort — people who went looking for a third-party analytics tool, so fitter and more data-curious than average. Efficiency is a proxy with its own confounds, and an athlete who sees a low score and runs easier partly erases the effect we were hunting. Full method, controls and limits · How we analyse
The maths, exactly
Both loads are exponentially weighted moving averages of daily training stress. Each day they move a fixed fraction of the way toward that day's load, and the fraction is set by the time constant — 42 days for fitness, 7 for fatigue.
CTL = CTL_yesterday + (TSS_today − CTL_yesterday) × (1 − e^(−1/42))
ATL = ATL_yesterday + (TSS_today − ATL_yesterday) × (1 − e^(−1/7))
TSB = CTL − ATLThat is what this page runs, day by day, for 28 days. A great many "CTL calculators" instead divide a weekly total by seven and call the result ATL. That is only true if you have held the same weekly load forever: after a single week at a new level, a 7-day exponential average has closed just 63% of the gap, and a 42-day one about 15%.
Where our version breaks down
- Weekly input, daily model. You give totals; we spread each week evenly across its seven days. CTL barely notices — its memory is long. ATL notices a lot. A 600 TSS week that arrives as one huge session plus six easy days peaks ATL near 92 and ends the week around 68; the same 600 spread evenly never leaves 76. Same fitness, very different fatigue readings on any given morning.
- The starting point is an assumption. We seed CTL and ATL at your pre-block weekly average divided by seven, which assumes you had settled there. If you were already mid-ramp, CTL starts wrong and stays wrong for weeks, because that is what a 42-day memory does.
- We subtract today from today. TSB here is today's CTL minus today's ATL. Whether a given platform uses the same-day or the previous day's values changes the figure by a point or two, and we have not verified which convention each one ships. If your usual tool disagrees with this by a small margin, that is one candidate before you go looking for a bug.
- Load itself is a modelled number. TSS from a power meter is reasonably solid. Heart-rate-derived load is an estimate on top of an estimate, and Garmin's training load runs on its own scale entirely. The curve shape survives; the absolute values do not travel between platforms.
If you want the real chart
Use a tool with your daily data in it. intervals.icu builds a full performance management chart for free from a Garmin, Strava or file import; TrainingPeaks does the same as a paid product with the coaching workflow attached. Both are better at this than any weekly-input calculator, ours included. This page is for understanding what the chart is doing and what it is worth — not for replacing it.
Frequently asked questions
What are CTL, ATL, and TSB?
Chronic Training Load (CTL) is an exponentially weighted moving average of your daily training stress with a 42-day time constant, read as fitness. Acute Training Load (ATL) is the same average with a 7-day time constant, read as fatigue. Training Stress Balance (TSB) is CTL minus ATL. All three are descriptions of training you have already done, arranged on a timeline with two different memories.
What is TSS?
Training Stress Score was developed by Andrew Coggan to quantify how hard a workout was, scaled so that 100 TSS is roughly one hour at threshold. Cycling power meters produce it directly. Running and heart-rate-based equivalents are estimates on the same scale. Garmin does not report TSS; its own training load number is a different scale, so it works for trends but not for absolute comparison with a TSS-based chart.
Does TSB predict whether today's session will go well?
We would not bet on it. The closest commercial score to a same-day freshness prediction is Garmin Training Readiness, and in our data it correlated with actual running efficiency at a median within-athlete Spearman rho of 0.056 across 5,136 steady runs from the cohort. Only 12.8% of athletes cleared 0.3. Sorting runs by readiness quintile moved median efficiency from a z-score of -0.12 in the bottom fifth to +0.03 in the top. The same pipeline cleanly detected readiness tracking yesterday's training load at -0.272 across the cohort, so the null is a finding rather than a broken method. That is Garmin-only data from a self-selected cohort, and readiness is not TSB, but it is the best evidence available on how much a load-derived freshness number is worth for a same-day decision.
Where do the TSB bands come from?
Coaching convention. The freshness, neutral, and high-risk zones are commonly attributed to Andrew Coggan's Performance Manager and have been repeated by training platforms ever since. They are useful shorthand for talking about a training block. They are not validated cut-points: no study we know of shows that a TSB of -31 means something different from -29, and the bands were never calibrated against your specific athlete history.
How fast should I build CTL?
The usual coaching guidance is 3 to 7 CTL points per week during a build, with faster ramps held to two or three weeks. This is convention rather than a tested threshold, and the ramp that suits you depends on training age, absolute volume, and life stress. Treat it as a conversation starter with the training history you actually have, not a speed limit.
Can this replace a real performance management chart?
No. A real PMC needs a training stress number for every single day, because ATL has a 7-day memory and cares deeply about how a week is arranged. This calculator takes weekly totals and spreads them evenly, which is close enough for CTL and lossy for ATL. If you want the real thing, intervals.icu builds it free from a Garmin, Strava, or file import, and TrainingPeaks builds it as a paid product. Both are better at this than any snapshot calculator, including ours.
What if I do not have TSS values?
Use whatever single-number load figure your platform reports for each session and stay consistent about it. Garmin training load, Strava relative effort, and TRIMP-style scores all decay through the same two exponential averages and produce the same shape of curve. The absolute numbers will not match a TSS-based chart, so do not compare your CTL with somebody else's.
Read more
CTL, ATL and TSB come out of a 50-year-old impulse-response model. Here is what it captures, what it does not, and what happens when a device turns the same idea into a daily verdict.