SwimTune
HomeGuides › CSS and critical swim speed

CSS test for swimmers: find your critical swim speed and pace zones

Two hard swims and one division give you the single most useful number in swim training: the pace that anchors every set you will ever do.

Last updated 11 August 2026 · 11 min read

What Critical Swim Speed actually is

Critical Swim Speed (CSS) is a practical estimate of your swimming threshold: the fastest pace you could hold continuously for roughly 20 to 30 minutes before the effort starts running away from you. It is the swimming equivalent of FTP in cycling, and it is calculated from two timed swims rather than a lab test.

The physiology behind it is the point where lactate production and clearance sit in balance. Swim slower and you can keep going more or less indefinitely. Swim faster and lactate accumulates, the effort climbs even though your pace does not, and the swim ends on a timer you cannot see. CSS marks that boundary, closely enough to the aerobic or lactate threshold to train against.

The concept is adapted from critical power theory, the same work that gave cycling its functional threshold power. Both rest on one observation: plot distance against time for a set of maximal efforts and the points fall close to a straight line, whose slope is the highest speed sustainable in a metabolic steady state. Cycling expresses that slope in watts, swimming in metres per second, then converts it into the unit swimmers think in, seconds per 100m.

Without it, most swim training is guesswork. "Swim hard" and "swim easy" are not intensities, they are moods. A swimmer with a CSS of 1:45 per 100m knows a threshold set means holding 1:45s, an easy swim means around 2:00, and anything faster than 1:40 is a different stimulus entirely. Every set acquires a target.

The short version

CSS = (400 − 200) ÷ (T400 − T200), with times in seconds, giving metres per second. Convert to pace per 100m by dividing 100 by that number. Retest every 6 to 8 weeks.

The maths, worked through with a real example

CSS speed in metres per second equals the difference in distance divided by the difference in time: (400 − 200) ÷ (T400 − T200), where both times are in seconds. Divide 100 by the result to get your pace per 100m.

The logic is simpler than it looks. Both swims are maximal, but the 400m contains an extra 200 metres beyond the first 200, swum at whatever pace you could sustain once your anaerobic contribution was spent. So the time difference between the two swims is, near enough, the time it took to cover 200 metres at your sustainable pace. Distance divided by time gives speed.

Take a swimmer who records a 400m in 6:40 and a 200m in 3:10.

  • Step 1, convert to seconds. 6:40 = (6 × 60) + 40 = 400 seconds. 3:10 = (3 × 60) + 10 = 190 seconds.
  • Step 2, take the differences. Distance: 400m − 200m = 200 metres. Time: 400s − 190s = 210 seconds.
  • Step 3, divide. 200 ÷ 210 = 0.952 metres per second. That is the critical swim speed.
  • Step 4, convert to pace per 100m. 100 ÷ 0.952 = 105 seconds, which is 1:45 per 100m.

That 1:45 is your threshold pace: roughly what you would hold for a hard continuous 1500m, and the anchor for every zone below. A shortcut worth knowing, since dividing 100 by a decimal is awkward on deck: pace per 100m is simply (T400 − T200) ÷ 2, so 210 ÷ 2 = 105 seconds = 1:45. Both routes give the same answer and the second needs no calculator.

Sanity check your result

CSS should come out slightly slower than your 400m pace, because the 400m still carries an anaerobic contribution that CSS strips out. In the example, the 400m averaged 1:40 per 100m and the 200m 1:35, and CSS landed at 1:45. If your CSS is faster than your 400m pace, one of the swims was not maximal, almost always the 200m.

The test protocol, done properly

Warm up thoroughly, swim 400m all out at a maximal sustainable and even effort, take 10 to 15 minutes of genuinely easy recovery swimming, then swim 200m all out. Record both times to the second.

The session takes around 50 minutes. Do it in a pool you know, on a day you are reasonably fresh, and treat it as a hard session in its own right rather than something bolted onto the end of a normal swim.

CSS test session: around 1700m total

  • Warm-up 400mEasy freestyle mixed with 100m of backstroke or drill.
  • Build 4 × 50mOn 20s rest, progressively faster, the last at roughly your intended 400m effort. Stops the first 100 of the test being slow.
  • Rest 2 minLoose and easy.
  • Test 1: 400m maximalEven pacing, maximum sustainable effort. Record the time.
  • Recovery 10–15 min200 to 400m easy, then float. Do not shorten this.
  • Test 2: 200m maximalAll out. Record the time.
  • Cool-down 200mEasy, whatever stroke feels kind.

The 400m decides whether your result is any good. It is not a sprint that dies, and it is not a comfortable time trial. It is the fastest pace you can hold evenly for the full distance, which in practice means your last 100m lands within a couple of seconds of your first. The 200m has the opposite failure mode: swimmers under-swim it because they are still tired, which is exactly why the rest interval is 10 to 15 minutes rather than the two or three most people give it.

If a maximal 400m is not realistic yet, the same maths works on a shorter pair: (200 − 100) ÷ (T200 − T100). It is slightly less reliable, because shorter efforts lean harder on anaerobic contribution, but it beats not testing. SwimTune offers both, as a guided step-by-step test that walks through intro, warm-up, first swim, rest interval and second swim, and does the arithmetic at the end.

Five mistakes that ruin the result

The test is arithmetically trivial and procedurally fragile. Almost every bad CSS number comes from one of five errors, and four are about pacing or rest rather than swimming ability.

  • Going out too hard on the 400m. The most common error by a distance. A 400m that starts at 200m pace and falls apart gives an inflated time and an artificially slow CSS. Aim for even splits, and accept that a well-paced 400m feels controlled for the first 150m.
  • Not resting enough between the swims. Ten to fifteen minutes is the protocol, not a suggestion. Cut it to three and the 200m becomes a fatigue test.
  • Testing when already fatigued. A test at the end of a heavy week measures your fatigue, not your threshold. Test after an easy day, and if you track training load and recovery, test when the readiness signals are good.
  • Changing pool or course length. A 25m pool gives twice the push-offs of a 50m pool, worth several seconds per 100m. A 25 yard pool is a different distance again. Compare like with like, or your "improvement" is architecture.
  • Treating one test as gospel. Any single test carries noise. If a result is wildly out of line with sets you have been holding comfortably, retest rather than rebuilding your training around it.

The five pace zones CSS gives you

Once you have a CSS pace, you can derive five training zones from it by adding or subtracting seconds per 100m. Threshold sits at CSS pace itself, with the easier zones a few seconds per 100m slower and the harder zones a few seconds faster.

The offsets below are the conventional approximations used across swim coaching, not measured physiology, which is why they are expressed as ranges. Treat them as calibrated starting points and adjust by a second or two once you have swum a few sets against them.

ZonePace vs CSS (per 100m)RPETypical setPurpose
RecoveryCSS + 12 to 15s2–3200–400m continuous, or 8 × 50m relaxedBlood flow, technique under no pressure, active recovery between hard days
AerobicCSS + 6 to 10s4–5Long continuous swims, or 5 × 200m on short restAerobic base, the bulk of most swimmers' volume
ThresholdCSS pace6–710–20 × 100m on 15 to 30s restRaises the ceiling of sustainable pace, the zone that moves CSS itself
VO2maxCSS − 2 to 4s8–98 × 100m or 12 × 50m on long restMaximal aerobic power, top-end fitness for shorter races
SprintCSS − 5s or faster9–108–12 × 25m on full recoveryNeuromuscular speed, stroke power, race starts and finishes

Two things are worth noticing. First, most of your swimming should sit in Recovery and Aerobic, not in the hard zones: threshold work is potent and expensive, and a typical week holds one or two threshold sessions at most. Second, the gaps are small, with only two to four seconds per 100m separating Threshold from VO2max. That precision is exactly why guessing fails and why the test is worth doing properly. These five zone names are the ones SwimTune uses, each with its own RPE range, and it calculates all five automatically from your test result.

Three sets built on CSS pace

The classic CSS session is a long set of 100m repeats held exactly at CSS pace on short rest. Either side of it sit an aerobic set to build volume and a VO2max set to raise the top end. All three assume the worked example above, a CSS of 1:45 per 100m, so substitute your own number.

1. The classic threshold set: 10–20 × 100m at CSS

  • Warm-up 400mEasy, with 4 × 50m build.
  • Main set10 × 100m at 1:45. Advanced: 15 to 20 repeats on 15 to 20s rest. Intermediate: 10 to 12 repeats on 20 to 30s rest.
  • The ruleHold the pace. When you can no longer hold it the set is over, even with four repeats left on the plan.
  • Cool-down 200mEasy.

2. Aerobic set: 5 × 200m at CSS + 8s

  • Main set5 × 200m at 1:53 per 100m, on 20s rest.
  • FeelConversational-hard. Finish the last one able to do another two.
  • WhyWhere aerobic capacity is actually built, and the zone most swimmers skip because it does not feel impressive.

3. VO2max set: 8 × 100m at CSS − 3s

  • Main set8 × 100m at 1:42, on 45 to 60s rest.
  • FeelRPE 8 to 9. The long rest is the point: it lets you repeat the intensity instead of degrading into a threshold set.
  • FrequencyOnce a week at most, never in a race or test week.

For these sets inside a structured week rather than picked off a page, see swim workouts by level, and triathlon swim training for how threshold work fits around the rest of a multisport week.

How often to retest

Every 6 to 8 weeks, or at the end of a training block. Testing more frequently produces noise, not information, because normal week-to-week variation is larger than the real fitness change over a shorter period.

Adaptation in swimming is slow, partly because so much of your speed comes from technique, and technique changes over months. A swimmer testing every fortnight will watch the number bounce two or three seconds per 100m purely from sleep, fatigue and how the pool felt that day, and be tempted to rewrite their zones each time.

Two rules on top of that. Newer swimmers should build 6 to 8 weeks of consistent swimming before a first test, so the result reflects fitness rather than unfamiliarity with pacing a maximal 400m. And test at the start of a block as well as the end, for a genuine before and after.

Improvement is not linear: a swimmer from a low base can drop 10 seconds per 100m in a few months, mostly from technique, while a trained swimmer might gain two or three seconds across a season and be pleased with it. SwimTune schedules the retest into your plan and recalculates all five zones from the result, so your set paces track current fitness rather than a number you set in February.

Why open water pace should not be used for CSS

Because open water pace measures conditions as much as it measures you. No push-offs, no fixed measured distance, plus current, chop, sighting and a line that is never quite straight: a CSS derived from open water is really a record of that day's water.

The push-offs alone are significant. In a 25m pool a swimmer covers three to five metres per length with no strokes at all. Remove that and the same swimmer's pace drops several seconds per 100m with no change in fitness. Add a current that helps on one leg and hinders on the other, plus the head-lifting that sighting requires, and the number stops being comparable to anything.

SwimTune therefore excludes open water pace from CSS calculation and from personal-best records, and lets you filter history by venue so pool and open water swims are never silently averaged together. Open water is still recorded as a first-class activity with its own training focus, but its pace lives in its own bucket. For training specifics, see the open water swimming guide.

The correct workflow runs the other way: test in the pool, derive your zones there, then carry those paces into open water as effort references rather than expecting the watch to show the same numbers.

Common questions

Is CSS the same as FTP in cycling?

They are close cousins. Both come from critical power theory, both estimate the highest intensity sustainable in a metabolic steady state, and both are used the same way: to anchor training zones and pace long efforts. The differences are that CSS is a pace rather than a power output, and that it is far more sensitive to technique. A cyclist raises FTP mainly by getting fitter, while a swimmer can raise CSS substantially by getting more efficient at the same fitness, which is why SWOLF and stroke efficiency tend to improve alongside it.

How do I calculate CSS from my 400m and 200m times?

Convert both times to seconds, then divide the difference in distance by the difference in time: CSS speed in metres per second = (400 − 200) divided by (T400 − T200). A 400m in 6:40 is 400 seconds and a 200m in 3:10 is 190 seconds, so the calculation is 200 metres divided by 210 seconds, which equals 0.952 metres per second. To convert to pace per 100m, divide 100 by 0.952, which gives 105 seconds, or 1:45 per 100m.

How often should I retest my CSS?

Every 6 to 8 weeks, or at the end of a training block. Testing more often adds noise rather than information, because week-to-week variation in sleep, fatigue and pool conditions is larger than the real fitness change over that period. Test on a day you would expect to swim well, and always in the same pool and course length.

What if my CSS comes out faster than my 400m pace?

Then one of the two swims was not maximal, and it is almost always the 200m. A properly swum 200m should be meaningfully faster per 100m than the 400m. If the gap between the two times is too small, the division produces an inflated speed and you will spend weeks failing to hit sets you were never capable of. Retest with a full 10 to 15 minute recovery and a genuinely all-out 200m.

Can I do a CSS test in open water?

No, and the result would mislead you. Open water has no push-offs, no fixed measured distance, and pace is distorted by current, chop, sighting and a line that is never quite straight. A CSS derived from open water is really a record of that day's conditions. Test in a pool, always the same pool and course length, and apply the resulting zones to open water as effort targets rather than pace targets.

I am a beginner. Should I test now?

Build 6 to 8 weeks of consistent swimming first. A maximal 400m is a real physical demand, and a beginner's result usually measures pacing inexperience rather than threshold. If a 400m is not yet realistic, use the simplified 200m plus 100m version of the test, which applies the same formula to shorter distances.

Let the test run itself

SwimTune walks you through a guided CSS test (standard 400m plus 200m, or a simplified 200m plus 100m), calculates all five pace zones automatically, and schedules the retest into your plan so your targets stay honest.

Get notified at launch