← All articles
csscritical-swim-speedswimmingswim-pacethresholdtriathlonswim-zones

Critical Swim Speed: How to Find and Train Your CSS Pace

Critical Swim Speed is your sustainable threshold pace in the pool. Here is how to test it with two time trials, what it means, and how to build training zones from it.

You finish a hard swim set, glance at the pace clock, and have no idea whether you swam well. Was that 100 repeat at 1:38 a strong effort or a lazy one? Without a reference point, every swim is a vibe. Cyclists have FTP and runners have threshold pace. Swimmers have Critical Swim Speed, and most people who train in a pool have never tested theirs.

Critical Swim Speed, or CSS, is the single most useful number you can carry into the pool. It turns "swim hard" into "hold 1:42 per 100" and turns a flat season of junk yardage into structured training where every interval has a purpose. Here is what it is, how to find yours in two test swims, and how to build your entire training week around it.

What Critical Swim Speed actually is

CSS is the fastest pace you can sustain in the water before fatigue starts to climb sharply. Below it, you are in a steady aerobic state and can keep going for a long time. Above it, the metabolic cost rises fast and the clock to exhaustion starts ticking. That boundary is your threshold, and CSS is the practical estimate of it.

The idea is not new and it is not made up for swimming. It comes from the critical power model that Monod and Scherrer described back in 1965, which holds that for any sustained effort there is a power, or in swimming a velocity, that the body can hold in a quasi-steady state. Wakayoshi and colleagues adapted this to the pool in the early 1990s, publishing work on critical swimming velocity and showing it tracked closely with sustainable swimming performance and blood lactate markers.

The practical version that took off with coaches simplifies the model to two swims. The logic is elegant: if you race a long distance and a short distance all out, the difference in your average speed between them reveals the slope of your fatigue curve. Extend that line and it flattens toward a sustainable velocity. That velocity is your CSS.

What makes CSS so useful is that it is a pace, not a feeling. A pace can be written on a workout, held against a pace clock, and compared month to month. Feel drifts with how you slept, what you ate, and whether the lane was crowded. CSS does not.

The test: a 400m and a 200m time trial

The standard CSS test is two maximal efforts, a 400m and a 200m, both swum as hard as you can sustain for the full distance. The gap between them is what the math needs.

Run the test like this. Warm up thoroughly, at least 600 to 800m of easy swimming with a few build efforts so you are not cold. Swim the 400m first, all out but evenly paced, and record the time to the second. Take a generous recovery, ideally 5 to 10 minutes of easy swimming and rest so you are genuinely fresh. Then swim the 200m all out and record that time too. Order matters less than full recovery between them; a fatigued second swim corrupts the result.

Pacing discipline is everything. The 400m should not be a sprint that dies in the last 100, and the 200m should not be a jog. Both need to be honest maximal efforts for their distance, evenly paced. If you blow up on either, the slope between them is wrong and your CSS will be too.

A common variation swaps the 200m for an even shorter effort, but the 400 plus 200 pairing is the most widely used because both distances are long enough to be aerobically meaningful while still differing enough to define the curve. Stick with one protocol so your retests are comparable.

The math behind CSS

The calculation is simpler than it looks. You are finding the speed implied by the difference between the two swims.

First, take the distance difference: 400m minus 200m is 200m. Then take the time difference: your 400m time in seconds minus your 200m time in seconds. CSS velocity is the distance difference divided by the time difference.

CSS velocity (meters per second) = 200 / (t400 - t200)

That gives you a speed in meters per second, which is not how swimmers think. So convert it to the pace per 100m that every swim set is written in:

CSS pace per 100m (seconds) = 100 / CSS velocity

Here is a worked example. Say you swim the 400m in 6 minutes 40 seconds (400 seconds) and the 200m in 3 minutes 6 seconds (186 seconds). The time difference is 400 minus 186, which is 214 seconds. CSS velocity is 200 divided by 214, or 0.935 meters per second. Pace per 100m is 100 divided by 0.935, which is about 107 seconds, or 1:47 per 100m. That is the pace your threshold sets sit at.

If you would rather skip the arithmetic on the pool deck, the swim CSS calculator takes your two times and returns CSS pace plus a full set of training zones in a couple of seconds. The math is the same; the calculator just removes the chance of a deck-side mistake.

Building training zones from CSS

A single threshold pace is good. A set of zones anchored to it is far better, because it tells you how to swim everything from recovery to race-pace work. CSS pace becomes your anchor, and the other zones are offsets from it expressed in seconds per 100m.

Easy and aerobic (CSS plus 8 to 15 seconds per 100m). This is your high-volume, low-stress swimming, the pool equivalent of zone 2 work. It builds aerobic base and lets you accumulate yardage without digging a hole. Most of your weekly distance should live here.

Endurance and steady (CSS plus 4 to 8 seconds). Slightly faster than easy, useful for longer continuous swims and tempo-style efforts that build sustainable speed.

Threshold (CSS pace, roughly minus 2 to plus 2 seconds). The heart of CSS training. Sets like 10 by 100 or 5 by 200 holding CSS pace, with short rest, develop the exact system that determines your distance swim speed.

VO2 and speed (CSS minus 3 to 6 seconds). Shorter, sharper intervals above threshold to lift your ceiling. These are quality over quantity, with full enough rest to hold the faster pace cleanly.

The beauty of zones built off a single tested number is consistency. When your CSS improves, every zone shifts with it automatically, so your training intensity stays calibrated instead of slowly becoming too easy. That same logic of pacing relative to a tested threshold is why cyclists track normalized power and why swim, bike, and run all converge on threshold-anchored zones.

Common mistakes that wreck your CSS

Pacing the time trials badly. The number one error. A 400m that starts too fast and fades, or a 200m swum too conservatively, distorts the slope and gives you a CSS that is too fast or too slow. Swim both honestly and evenly.

Not resting between the two swims. If the 200m is done on tired arms, it will be slower than your true 200m capacity, the time gap shrinks, and your CSS reads artificially high. Take the full recovery.

Testing in different conditions each time. A long-course pool, a crowded lane, a wetsuit, or open water all change your times. Retest in the same pool, same setup, same protocol, or you are comparing apples to oranges.

Never retesting. CSS is a moving target. Train consistently for six weeks and your old number is stale, which means your zones are wrong and your threshold sets have quietly become endurance sets. Retest on a schedule.

Chasing the absolute number. Your CSS compared to someone else's means little. Pool swimmers, triathletes, and sprinters all have different physiologies. The only comparison that matters is your CSS this month against your CSS last month.

Tracking CSS over a season

A tested CSS is a snapshot. The value comes from the trend. If your CSS pace drops from 1:47 to 1:42 per 100m across a training block, that is unambiguous aerobic improvement that no amount of "I think I felt faster" can match for reliability.

This is where keeping your swim data in one place pays off. Logging every CSS test, the pace you actually held on threshold sets, and how those compare to your prescribed zones turns a pile of pool sessions into a clear progression curve. For triathletes juggling three sports, it also keeps swim fitness from becoming the forgotten discipline; see our triathlon AI coaching guide for how the swim fits alongside bike and run load. And because swim threshold work contributes to overall fatigue, tracking it with the same training stress framework you use for the other sports keeps your total load honest.

The interpretation is the hard part. Knowing whether to retest, whether a missed CSS pace means lost fitness or just a bad day, and how a heavy swim block interacts with your recovery is exactly the synthesis an AI coach handles well. Connect your swim data to athletedata.health and your AI swimming coach tracks your CSS trend, calibrates your zones automatically as the number moves, and flags when it is time to retest. You can start a 7-day free trial and let it watch the curve.

Why CSS beats raw 100m repeats

Plenty of swimmers structure their training around send-off times instead of a tested threshold. They swim 100s on the 1:45 because that is what the lane has always done. The problem is that a send-off bundles your swim pace and your rest into one number, and it is anchored to nothing physiological. Two swimmers on the same 1:45 send-off can be doing completely different workouts, one cruising with 20 seconds rest and one barely making the wall.

CSS fixes this by separating pace from rest. When a set says "hold CSS pace with 10 seconds rest," the intensity is defined by your own fitness, not by an arbitrary clock. The set scales correctly whether you are a 1:30 swimmer or a 2:00 swimmer, and it stays correct as you improve because the pace target moves with your retests.

It also exposes pacing problems that raw repeats hide. If you can hold CSS pace for the first six of ten 100s and then fall off, that fade is real, actionable information about your endurance at threshold. On a fixed send-off you would just take less rest and never notice. Training to your CSS makes every threshold set a small test of whether your sustainable speed is holding up, which is precisely the feedback loop that drives improvement.

There is a recovery dimension too. Threshold swim volume is genuinely fatiguing, and stacking too many CSS-paced sessions without watching how you are absorbing them leads to flat, heavy swims. Pairing your CSS work with recovery markers, the same way HRV-guided training adjusts hard days on the bike and run, keeps your hard swims actually hard and your easy swims actually easy.

Putting it together: a practical CSS protocol

  1. Warm up fully, then swim a maximal, evenly paced 400m and record the time in seconds.
  2. Recover for 5 to 10 minutes with easy swimming, then swim a maximal 200m and record that time.
  3. Calculate CSS velocity as 200 divided by the difference between your 400m and 200m times in seconds, then convert to pace per 100m by dividing 100 by the velocity.
  4. Build your zones off CSS: easy at plus 8 to 15 seconds, endurance at plus 4 to 8, threshold at CSS pace, and speed at minus 3 to 6 seconds per 100m.
  5. Anchor most of your weekly volume in the easy and endurance zones, and reserve threshold and speed work for two or three focused sessions.
  6. Hold your prescribed paces against the pace clock and log how you actually swam versus the target.
  7. Retest every 4 to 6 weeks on the identical protocol and pool, and shift your zones to the new number.

Swimming without a threshold pace is like driving without a speedometer. Critical Swim Speed gives you the dial, and once you have it, every length in the pool finally has a number to chase.

Questions

what is css in swimming?+

CSS stands for Critical Swim Speed. It is the theoretical fastest pace you can hold in the water for a prolonged effort without fatigue accumulating quickly, roughly your 1500m to 1 hour swim pace. It is the swimming version of a threshold, derived from the same critical power model used in cycling and running, and it gives you an objective pace to anchor training zones to.

how do you calculate critical swim speed?+

Swim two maximal time trials, a 400m and a 200m, fully rested. Record each time in seconds. CSS velocity equals the distance difference (200m) divided by the time difference (t400 minus t200). To get the more useful pace per 100m, divide 100 by that velocity. A calculator does this instantly once you enter both times.

how often should i retest css?+

Every 4 to 6 weeks during a focused training block, or whenever your prescribed CSS sets start feeling too easy or too hard. CSS shifts as your aerobic fitness changes, so an outdated number drifts your whole zone structure. Retesting on the same protocol and ideally the same pool keeps the comparison honest.

what is a good css pace per 100m?+

It is highly individual. Many adult-onset and triathlete swimmers land somewhere between 1:40 and 2:10 per 100m, competitive age-group swimmers often sit between 1:15 and 1:35, and elite distance swimmers go under 1:05. What matters is not the absolute number but whether your CSS is trending faster over a season.

is css the same as threshold pace?+

Effectively yes. CSS is a practical estimate of your swimming threshold, the boundary between sustainable aerobic effort and the heavy domain where fatigue builds fast. It is not a lab-measured lactate threshold, but for setting training paces it serves the same role, and it correlates well with longer-distance race pace.

can i calculate css without a pool test?+

You can estimate it from a recent maximal race or hard swim of known distance, but the two-trial method is far more accurate because it captures the slope of your pace-duration curve. A single effort cannot separate your aerobic ceiling from your anaerobic contribution, so the 400m plus 200m protocol remains the gold standard for most swimmers.

Related

A coach that texts you first.

After every workout and night of sleep, it messages you with the analysis - and what to change. Free for 7 days.

Used by runners, cyclists, and triathletes worldwide