Training
Critical Swim Speed: the 20-minute test that fixes your swim pacing
Two time trials and one subtraction give you a swim pace you can train to the second. Here is the protocol, the math, the sets, and where the number stops being trustworthy.
Critical swim speed (CSS) is your threshold swim pace: the fastest pace you can hold in a steady aerobic state, written as seconds per 100 meters. You find it with two maximal time trials in one session — a 400 m and a 200 m, with full recovery between them — and one subtraction:
CSS pace per 100 m = (T400 − T200) ÷ 2
That single number turns "swim hard" into a target you can read off the pace clock. Below is the protocol, a worked example with real times, the sets to build from it, and an honest account of where the number quietly lies to you.
What CSS actually is
Every endurance sport has a threshold anchor. The bike has FTP, the run has threshold pace, the swim has critical swim speed. All three mark the same boundary: hard, but stable — the intensity where the effort holds steady instead of compounding on you minute after minute.
CSS reaches that boundary from a different direction than the other two. Rather than one long time trial, you swim two distances and take the slope between them. Put 200 m and 400 m on a distance-versus-time chart, draw the line through both points, and the slope of that line is a speed: the speed left over once the short-effort anaerobic kick has been subtracted out.
That subtraction is the whole trick. A maximal 200 m carries a large anaerobic contribution. A maximal 400 m carries less of one. What the two efforts share, once you strip out the part that makes the short swim fast, is the aerobic engine — which is exactly the thing you want to pace against and train.
In practice, your CSS lands near the pace you could hold for a hard continuous swim of roughly 20 to 30 minutes. It is not your 100 m speed and it is not your comfortable cruising pace. It sits between them, and most swimmers are surprised by how much slower it is than the pace they thought of as "my pace."
The test, step by step
The testing itself takes about 20 minutes. Build a full session around it and you are in the water for 45.
Do it fresh. Not the morning after a hard bike, not at the end of a heavy week. A tired CSS test gives you a slow number, and you then train slow for six weeks off it.
Warm up properly. 800 to 1,000 m mixed, including four to six 50s building to faster than test pace, then two or three minutes easy. Cold shoulders swim slowly, and an under-warmed 400 costs you more than the warm-up does.
Swim the 400 m as an even, maximal effort, from a push. Not a dive — you want the same start on both trials, and most pools do not let you dive anyway. Record the time.
Recover fully. Five to ten minutes of easy swimming, around 200 to 400 m. Do not cut this short. The 200 needs to be a genuinely fresh maximal effort or the math breaks.
Swim the 200 m all-out, from a push. Record the time.
Cool down. Then do the arithmetic before you forget the splits.
Rules that keep the number comparable across tests: same pool, both trials from a push, no pull buoy, no fins, no paddles, no wetsuit. Change any of those and you are measuring a different swimmer.
Pacing the test honestly
This is where most tests go wrong, and the two common mistakes push the answer in opposite directions, so they do not cancel out.
Sandbagging the 400 — treating it as a hard-but-controlled swim rather than a time trial — makes T400 larger, which makes the difference larger, which makes your CSS slower than reality. Every set you write afterward is too easy, and you spend a block swimming below threshold wondering why nothing changes.
Not fully emptying the 200 makes T200 larger, which shrinks the difference, which makes your CSS look faster than reality. Now your sets are unswimmable, the last few reps fall apart, and you conclude you are bad at intervals rather than badly tested.
There is a hard mathematical floor too: your 400 time has to be slower than twice your 200 time. If it is not, the slope is zero or negative and there is no CSS to compute — the 400 was not maximal. As a rough sanity check, a well-paced test usually puts the 400 somewhere around 15 to 25 seconds slower than double the 200. Treat that as a smell test, not a rule.
The practical fix for the 400 is to decide your target pace before you push off and hold it, rather than sprinting the first 100 and dying. An even 400 gives a truer number than a fast-start 400 with the same finishing time.
The math, worked through
Convert both times to seconds, subtract, halve.
Say you swim the 400 in 6:40 and the 200 in 3:10.
- T400 = 6:40 = 400 seconds
- T200 = 3:10 = 190 seconds
- Difference = 400 − 190 = 210 seconds
That 210 seconds is the time it took you to cover the extra 200 m. Halve it for a per-100 figure: 210 ÷ 2 = 105 seconds. Your CSS is 1:45 per 100 m, or about 0.95 m/s.
A faster swimmer, same arithmetic: 400 in 5:20 (320 s), 200 in 2:32 (152 s). Difference 168, halved is 84. CSS is 1:24 per 100 m.
One unit warning. The formula assumes meters. Run the same test in a 25-yard pool and you get a valid CSS per 100 yards, which is a different number from CSS per 100 meters — roughly 9% faster-looking for the same swimmer. Pick one unit and stay in it, and never compare a yard number to a meter number.
Turning CSS into swim paces
CSS is the anchor; your training paces are offsets from it, in seconds per 100 m. Here is what a session menu looks like for a swimmer with a CSS of 1:45 per 100 m.
| Set | Offset from CSS | Target pace per 100 m | Time per rep | Rest |
|---|---|---|---|---|
| 10 × 100 | CSS | 1:45 | 1:45 | 10–15 s |
| 5 × 200 | CSS +1 to +2 | 1:46–1:47 | 3:32–3:34 | 20–30 s |
| 3 × 400 | CSS +3 to +5 | 1:48–1:50 | 7:12–7:20 | 45–60 s |
| 8 × 50 fast | CSS −4 to −1 | 1:41–1:44 | 50–52 s | 20 s |
| Easy / technique | CSS +8 to +14 | 1:53–1:59 | — | as needed |
Two things to notice. The spread between "threshold" and "easy" is only about 12 seconds per 100 m — swimming is a narrow-band sport, and small pace errors matter more than they do on the bike. And the longer the rep, the slower the target: 400s at true CSS pace are a race, not a set.
PaceBeats writes swim sets against your CSS the same way it writes bike sets against FTP, so the pace targets in your plan move when your threshold moves rather than staying fixed at whatever you tested in January.
Why 10 × 100 at CSS beats an aimless 2 km
Take a swimmer whose CSS is 1:45 and put them in the pool with the instruction "swim 2,000 meters steady." What almost always happens is 2,000 m at about 1:57 — comfortable, rhythmic, and roughly 12 seconds per 100 slower than threshold. It is not a wasted swim. It is just not the swim they thought they were doing.
Now give the same swimmer 10 × 100 off a target of 1:45 with 15 seconds rest. The short rest keeps the effort aerobic, the clock gives feedback every 100, and they accumulate 17-plus minutes at genuine threshold instead of zero. The set also tells the truth: if reps 7 through 10 slide to 1:50, either the test was optimistic or you are more tired than you thought. A continuous swim hides that.
None of this makes long continuous swimming useless. One steady swim a week builds the pacing tolerance and stroke rhythm you need when there are no walls to push off. The mistake is when every swim is that swim, because then nothing in your week is actually at threshold.
A reasonable weekly shape for a triathlete swimming three times: one CSS-based threshold session, one technique-and-speed session with short fast work, one longer continuous or open-water swim.
Pacing a race off CSS
CSS gives you a defensible starting point for race pace, which is more than most age-groupers take to the start line. Rough guidance in flat water, wetsuit-free:
- Sprint (750 m): at CSS, or a touch faster if you are confident on the bike afterward.
- Olympic (1,500 m): CSS to CSS +2 or +3 per 100.
- 70.3 (1,900 m): CSS +3 to +5.
- Full distance (3,800 m): CSS +5 to +8, and honestly, by feel — you are protecting a very long day.
Note the direction of the offsets. In a standalone swim race you might hold close to CSS for 1,500 m. In a triathlon you are buying the rest of the day, and the seconds you save by swimming at threshold are cheap compared to what a hot start costs on the bike.
Where CSS is an estimate, not a measurement
The number comes out to the second, which makes it look more precise than it is. Several things move it that have nothing to do with your fitness.
Test pacing. Covered above, and it is by far the largest source of error. A badly paced pair of trials can shift CSS by five seconds per 100 m or more, which is the difference between two different training zones.
Pool length. A 25 m pool gives you twice as many turns as a 50 m pool over the same distance, and every turn is a push-off. Most swimmers test faster in a short-course pool. The number is not wrong, it just is not portable — test in the same pool every time, and if you switch, expect a shift you did not earn.
Push-off and underwater time. A swimmer with a strong streamline and dolphin kick gets free meters on every wall. Two athletes with identical stroke speed can post meaningfully different CSS times purely on wall work. This is one reason CSS travels badly into open water, where there are no walls at all.
Wetsuits. A wetsuit lifts your legs and cuts drag, and most swimmers are a few seconds per 100 m faster in one. Your pool CSS is a non-wetsuit number. If you race in neoprene, expect race pace to be faster than the table above suggests, and do not go re-testing in a wetsuit to get a flattering number — you will just make all your pool sets too hard.
Everything open water asks for that a pool does not. Sighting costs you time and rhythm. Chop costs more. Drafting on someone's hip gives a large chunk back. Starting in a washing machine of arms costs a minute of composure. CSS measures your aerobic swimming fitness; it does not measure whether you can find a buoy in low sun.
Your state on the day. A test after a poor night's sleep, in a cold pool, or three days into a heavy block reads slow. That is a real reading of your body that day, and a bad reading of your threshold.
Retest, and treat the number as perishable
Retest every six to eight weeks during normal training, or every four to six weeks inside a dedicated swim block. The point is not that your fitness changes on a schedule — it is that a stale threshold quietly corrupts everything downstream, the same way an out-of-date FTP inflates every training load number you look at.
Two extra reasons to retest sooner rather than later. Adult-onset swimmers improve through technique far faster than through fitness — a genuine fix to your catch or body position can take five to ten seconds per 100 m off your CSS within weeks, which no amount of interval work would have produced. And if a CSS set that used to be hard now feels comfortable at the same pace, that is the retest telling you it is due.
The counterweight: a test is a session, and it costs you a quality swim. Testing monthly out of anxiety is its own kind of waste. Six to eight weeks is a reasonable balance for most people.
If you would rather not run the arithmetic by hand, the CSS calculator turns your two trial times into a pace and a set of zones. And because PaceBeats re-estimates swim thresholds from the sessions you actually complete, it will propose an update when your real efforts have moved past the number on file — which catches the case where you got faster and never got around to retesting.
What to do this week
Swim the test. Write down both times and the CSS you calculated, along with the pool length and the date, because in eight weeks you will not remember whether that 1:45 came from a 25 or a 50.
Then build two sessions from it: a threshold set of 10 × 100 at CSS with short rest, and a longer-rep set of 5 × 200 at CSS plus a couple of seconds. Swim them for six weeks. Retest. The number will have moved, and this time you will know by exactly how much.
Questions athletes ask
What is a good CSS for a triathlete?
There is no universal good CSS, because it depends on your background far more than your fitness — swimmers who learned as children are usually much faster than equally fit adult-onset swimmers. As rough context, many age-group triathletes sit somewhere between 1:40 and 2:10 per 100 m, strong swimmers come in under 1:30, and someone in their first season may be slower than 2:15. What matters is your own CSS compared with your last test, not against other people. Improving by five seconds per 100 m over a season is a genuinely good outcome.
How often should I retest CSS?
Every six to eight weeks during normal training, or every four to six weeks inside a dedicated swim block. Testing more often than that wastes quality sessions, and testing less often means you spend months training to a stale pace. Retest sooner if a set that used to be hard now feels easy at the same target pace, or if you have made a real technique change — adult-onset swimmers can drop five to ten seconds per 100 m from a stroke fix in a matter of weeks. Always retest in the same pool, from a push, without a wetsuit or toys.
Should I use CSS in open water?
Use it as a starting point, not as a prediction. CSS is measured in a pool with walls to push off, no waves, no sighting, and no other swimmers, and every one of those differences moves your real open-water pace. Sighting and chop slow you down, a wetsuit and drafting on someone's feet speed you up, and the net effect varies by day and by course. Practically: pace your race by effort relative to CSS rather than by the exact number, and expect a wetsuit swim to come in faster per 100 m than your pool threshold.
Why is my CSS pace so much slower than my 100 m best?
Because they measure different systems. A maximal 100 m is heavily anaerobic — you are spending a reserve you cannot spend twice. CSS deliberately subtracts that reserve out by comparing a 400 m with a 200 m, leaving the aerobic pace you can hold for 20 to 30 minutes. A gap of 20 to 30 seconds per 100 m between your best 100 and your CSS is completely normal, and a swimmer with a big sprint background will often see a larger gap than an endurance-built swimmer.
Can I calculate CSS from a different pair of distances?
Yes — the method is the slope between any two maximal efforts, so 200/100 or 800/400 also work, and the formula is the same: divide the time difference by the distance difference. The 400/200 pairing is the convention because it is long enough to be mostly aerobic, short enough that most swimmers can pace it honestly, and fits in one session with a full recovery between. If you change the distances, keep using the same pair every time, since numbers from different pairings are not directly comparable.
Next step