CSS Swim Calculator
Your Critical Swim Speed from two maximal time trials — the threshold pace your training zones are built on.
Training zones from your CSS
| Zone | Purpose | Pace per 100 m |
|---|
Zones are a coaching convention built around CSS — useful in practice, but not a scientific standard. See the honesty note below.
Swim Smooth style set
| Repeat | Target pace per 100 m | Total time |
|---|
A descending ladder: as the repeats get shorter, the target pace closes in on CSS itself.
Formulas checked against World Aquatics and U.S. Masters Swimming — every source is named on the Methodology page. Found a wrong number? Report an error.
How it works
Two maximal efforts, one subtraction, and you have a threshold pace.
Critical Swim Speed starts from a simple observation. Over a short distance you can swim faster than you can sustain, because anaerobic energy and freshness subsidise the effort; over a longer distance that subsidy runs out and you slow down. Plot time against distance for several maximal swims and the points fall close to a straight line. The slope of that line is your critical speed: in theory, the fastest pace you could hold without accumulating fatigue faster than you can clear it. In practice it sits very close to your lactate threshold, which is why coaches treat CSS pace as threshold pace.
The field test here uses just two points on that line, 400 and 200, swum in the same session. Subtracting the 200 time from the 400 time removes most of the short-distance subsidy, leaving 200 units swum at close to pure aerobic speed. Divide 200 by that time gap for velocity; divide the gap by two for pace per 100. If you would rather work from a single ordinary swim, the Swim Pace Calculator on the home page converts any time and distance into a pace per 100 — useful daily, but not a threshold, because a comfortable swim never reveals where your ceiling sits.
Worked example 1. You swim 400 m in 6:00 and 200 m in 2:48. In seconds that is 360 and 168. CSS velocity = 200 ÷ (360 − 168) = 200 ÷ 192 = 1.04 m/s. CSS pace per 100 m = (360 − 168) ÷ 2 = 96 seconds = 1:36.0 per 100 m. Your zones follow directly: Zone 1 recovery 1:51, Zone 2 base 1:44, Zone 3 threshold 1:36, Zone 4 speed 1:30, Zone 5 sprint 1:24 per 100 m. Note how much slower CSS is than your 200 pace of 1:24 per 100 — that gap is exactly the unsustainable subsidy the test is designed to strip out. Your 400 pace, 1:30 per 100, also sits faster than CSS, because even a 400 is short enough to borrow against fatigue.
Worked example 2. A developing swimmer records 8:00 for 400 m and 3:50 for 200 m — 480 and 230 seconds. CSS pace = (480 − 230) ÷ 2 = 125 seconds = 2:05 per 100 m, and velocity = 200 ÷ 250 = 0.80 m/s. Training at 2:05 should feel like the top of honest aerobic work: sustainable in repeats with short rests, but with no room for a long chat at the wall. Her Zone 2 base pace is 2:13 and her Zone 4 speed pace is 1:59 — a narrow, believable band, which is a good sign the test was swum evenly.
The test protocol: how to swim it honestly
A CSS number is only as good as the two efforts behind it, and the protocol matters more than the arithmetic. Warm up thoroughly — 10–15 minutes of easy swimming, drills and short builds — because a cold first test is a slow one, and a slow 400 flatters the final CSS. Swim the 400 first, from a push start, maximal but evenly paced: sprinting the first 100 and crawling home is the most common failure. Record the time, recover fully until breathing and heart rate have genuinely settled — several minutes, not several lengths — then swim the 200 the same way: maximal, push start, hard from the first length.
Both tests belong in the same session, in the same pool, in the same unit. Splitting them across days mixes in sleep and fatigue; splitting them across pools mixes in course length and turns. Use the same stroke — almost always freestyle — and no toys: no pull buoy, paddles, fins or wetsuit, unless every retest will use them too. Have a friend or the pace clock time you, and write both times down at once. The whole test takes under half an hour including warm-up and buys four to six weeks of correctly pitched training.
Errors show up in the numbers. If your 200 pace per 100 is slower than your 400 pace per 100, something is wrong — a mis-timed swim or a cautious 200 — and this calculator warns you rather than printing a fantasy threshold. If the two paces are nearly identical, you paced the 200 like a 400; if the gap is enormous, the 400 was paced like a 200. Either way: recover, retest another day, and pace both efforts evenly.
CSS training zones — a coaching convention
Five zones, built by adding or subtracting seconds from your CSS pace per 100.
The zones are deliberately simple. Zone 1, recovery, is CSS plus 15 seconds per 100 — easy swimming for warm-ups, cool-downs and technique work. Zone 2, base, at CSS plus 8, is where volume accumulates: long, relaxed repeats that build the aerobic engine without threshold fatigue. Zone 3 is CSS itself — threshold work in repeats of 100–400 with short rests, the highest-value session in most distance programmes. Zone 4, CSS minus 6, is speed-endurance: shorter repeats, longer rests, technique held under pressure. Zone 5, CSS minus 12, is sprint and race-pace work, swum fresh in small doses.
Be clear about what these offsets are. The plus-15, plus-8, minus-6 and minus-12 figures are a coaching convention — a practical shorthand, not a scientific standard: no governing body publishes them, no study validates those exact offsets, and coaches differ. Research supports the anchor, CSS as a threshold estimate, not the decoration around it. Treat zones as a starting grid, then adjust by feel: if Zone 2 breaks your form it is too fast today, and if Zone 3 feels like a warm-up, your test is stale.
The Swim Smooth style set in the calculator applies the same idea as a single session: 1000 at CSS plus 8, 800 at CSS plus 6, 600 at CSS plus 4, 400 at CSS plus 2 and 200 at CSS, with short rests between repeats. The long early repeats teach restraint; the short final repeat teaches you what threshold actually feels like when you are already tired. Once you know your CSS, the swim split calculator breaks a target race time into per-length splits you can check against the pace clock, and the swim time calculator predicts finish times from any pace — together they turn one test result into a full pacing system.
Reference: CSS pace and velocity
The same threshold, expressed both ways. Pace is how coaches talk; velocity is how the research is written.
| CSS pace per 100 m | Velocity (m/s) | CSS pace per 100 yd | What it usually means |
|---|---|---|---|
| 1:20 | 1.25 | 1:13 | Advanced — strong competitive aerobic engine |
| 1:30 | 1.11 | 1:22 | Strong club or fast triathlete threshold |
| 1:36 | 1.04 | 1:28 | Worked example 1 on this page |
| 1:45 | 0.95 | 1:36 | Intermediate — structured training paying off |
| 2:00 | 0.83 | 1:50 | Developing — solid continuous swimmer |
| 2:05 | 0.80 | 1:54 | Worked example 2 on this page |
| 2:20 | 0.71 | 2:08 | Early threshold — technique gains come fastest here |
Velocity is 100 divided by pace in seconds. Yards pace uses the exact conversion 1 yd = 0.9144 m.
Where CSS comes from — and its limits as science
The model behind this calculator comes from critical-velocity research published by Wakayoshi and colleagues in 1992 — see Wakayoshi et al., International Journal of Sports Medicine (1992). In the original work, swimmers completed several maximal swims over different distances and the critical speed was fitted by regression across all of them. That multi-distance regression is the scientifically careful version of the test: more points mean a straighter, more trustworthy line, and it remains the reference method when researchers need precision.
The two-swim version on this page — maximal 400 plus maximal 200 — is the standard field simplification of that method, popularised for adult and masters swimmers by Swim Smooth, whose coaching system built an entire training structure around it. The simplification is honest about its trade: it loses some precision, because a two-point line is hostage to one badly paced swim, and it gains a test any swimmer can complete in one session without a laboratory or a week of trials. For setting training zones, that trade is almost always worth it. For publishing research, it would not be.
Used well, CSS also disciplines expectations. You should hold it in broken repeats long before you can hold it continuously, and a continuous 30 minutes at CSS is a genuinely hard session. Retest every 4–6 weeks, expect gains of a second or two per 100 at first and fractions later, and expect plateaus. A CSS that jumps five seconds in a month almost always means the first test was paced badly, not that fitness leapt. The number rewards honesty — why it has survived thirty years of coaching fashion.
Honest limits
CSS is a two-point estimate of a threshold that physiology measures on a curve: a badly paced 400 or a cautious 200 distorts it, and the distortion is invisible in the output. The training-zone offsets on this page are a coaching convention, not a scientific standard or a governing-body prescription. CSS from a pool test does not transfer exactly to open water, other strokes, or wetsuit swimming, and it says nothing about technique quality. Retest under the same conditions, compare like with like, and let how a pace feels — breathing, form, recovery — overrule any single calculated number.
CSS swim FAQs
What is a good CSS pace?
There is no universal good CSS pace, because CSS is personal by design. A CSS of 2:05 per 100 m is an honest threshold for a developing adult swimmer, 1:45 is a solid club standard, and 1:30 or faster is advanced. What matters is not the number itself but that it came from maximal 400 and 200 tests swum in the same session, and that your training paces are built from it rather than from a guess or a one-off fast 100.
How often should I retest my CSS?
Every 4–6 weeks is the standard coaching rhythm. That is long enough for fitness to change, and short enough that your zones do not drift far from reality. Retest sooner if sets at CSS suddenly feel easy or impossible, after illness or a training break, and at the start of a new training block. Always use the same pool, the same order of tests and full recovery between them, so the comparison is fair.
Why do I need both a 400 and a 200 test?
One test alone cannot separate speed from endurance. The 200 shows what you can do when fatigue is limited; the 400 shows how much you slow as fatigue accumulates. CSS is the slope between those two points — the pace at which slowing would, in theory, stop. A single 400 time would reward a fast starter who fades, and a single 200 would flatter sprinters who cannot hold pace.
Can I do the CSS test in a yards pool?
Yes. Swim 400 yards and 200 yards, keep the unit toggle on Yards, and the calculator returns CSS pace per 100 yards and velocity in yards per second, with the metres equivalent in the tiles. Do not mix courses — a 400 in yards and a 200 in metres, or tests swum in different pools, breaks the maths, because the gap between the two times is the whole measurement.
Why does my CSS pace feel too hard to hold?
CSS is a threshold, not a cruise. Holding it for 20–30 minutes should feel controlled but serious — comfortably hard, with breathing under pressure by the end. If you cannot hold it for even 400 m, the test itself is the usual suspect: a 200 swum too cautiously inflates the gap and produces an impossibly fast CSS, while a 400 paced badly does the opposite. Retest with honest, even pacing before blaming fitness. For everyday pace work, the swim pace calculator on the home page turns any single swim into a pace per 100 for comparison.