guides / css

Critical Swim Speed (CSS): the test, the maths, the pace

CSS is the fastest pace you can hold for a long time without falling apart. It is the single most useful number in swim training, because almost every other pace in a session is a share of it.

written by jan hercog & rubsterbest · updated August 2026

What CSS actually is

Critical Swim Speed is an estimate of your swimming threshold: the pace you could theoretically hold for a very long time before fatigue forces you to slow down. Physiologically it sits close to the effort where lactate production and clearance balance out — roughly 4 mmol/l for most swimmers.

It matters because “swim hard” and “swim easy” mean nothing on a clock. Once you know your CSS, a set written as 8 × 100 at threshold turns into 8 × 100 at a specific time you either hit or you don't.

The test: 400 m and 200 m, both flat out

Do it in one session, in the pool you normally train in, rested and after a proper warm-up.

  1. Warm up for 800–1,200 m, including a few builds to fast so you are not cold.
  2. Swim 400 m as fast as you can hold evenly. Take the time.
  3. Swim easy for 400–600 m until your breathing is fully back — take at least 8–10 minutes.
  4. Swim 200 m flat out. Take the time.
  5. Cool down 400 m easy.

Push off, don't dive, and use the same start on both swims. No pull buoy, no paddles, no fins. Front crawl.

The formula

CSS is the distance difference divided by the time difference. Because the difference is always 200 m, the arithmetic is simple:

CSS per 100 m = (time for 400 m − time for 200 m) ÷ 2

Example: 400 m in 6:20 (380 s) and 200 m in 2:50 (170 s). The difference is 210 s over 200 m, so your CSS is 105 s per 100 m — 1:45 per 100 m.

Does the result make sense?

The test only works if your 200 m was genuinely faster per 100 m than your 400 m. If the 200 pace is the same or slower, you either paced the 400 too hard, the 200 too softly, or you were not recovered between them. A difference of roughly 4 to 12 seconds per 100 m between the two swims is normal; far outside that and the CSS number will be misleading. Our CSS calculator checks this for you and says so.

What CSS does to a session

Every load zone sits at a share of CSS pace. Below is a worked example for a swimmer with a CSS of 1:35 per 100 m — the same maths SwimSwimSwim runs on every interval of every session once your CSS is saved.

ZoneNamePace / 100 mTypically used for
Z1Recovery1:56loosening, between hard efforts
Z2Aerobic base, extensive1:49long steady swims, 200–1,500 m repeats
Z3Aerobic base, intensive1:43long intervals, the bulk of endurance work
Z4Threshold1:36your CSS work — 100–1,000 m repeats
Z5Anaerobic development1:32VO2 work, 50–400 m repeats
Z7Speed endurance1:2725–200 m, honest and short

Read it as a ladder: recovery is about 20 % slower than threshold, easy aerobic work roughly 15 % slower, intensive aerobic around 8 % slower, and speed-endurance repeats a few per cent faster.

How often to retest

Every six to eight weeks of consistent swimming, or when threshold sets stop feeling like threshold. If your target times suddenly feel easy for a whole set, you have got faster and the number is stale. If they feel impossible for weeks, you either tested on a very good day or you are tired — recover first, then retest.

Common mistakes

Next step

Run your numbers in the CSS calculator — it is free and includes the test session itself. Save the result to your account and every rep in the session library prints the time you should be hitting. See the pace chart if you want to know what your pace means over 1,500 m or a 3.8 km swim.