The short answer
Most coaching apps don't validate against one named program. They validate against a generic energy-system zone model — usually five or seven zones defined by pace relative to critical swim speed (CSS), blood lactate curves, or heart rate. That model overlaps heavily with what Bob Rushton popularized as color zones, borrows structural ideas from Bill Sweetenham's championship periodization work, and can flag USRPT-style sets as their own category because they don't fit a zone model at all. None of the three is a rulebook an app follows exactly. They're three different lenses, and a good app blends them.
These are three different kinds of things
It helps to stop treating Sweetenham, Rushton, and USRPT as competing systems. They answer different questions.
- Rushton's color zones answer "what energy system is this set training?" It's a classification framework — you look at pace, interval, and rest, and you assign a color (or number) that maps to an energy system.
- Sweetenham's championship model answers "how do I sequence training across a season to peak at the right meet?" It's a periodization philosophy — volume and intensity distribution across macrocycles, with an emphasis on aerobic capacity built early and speed sharpened late.
- USRPT answers "how do I train race pace directly?" It's a prescription method — you swim at goal race pace, with short rest and a hard cap on how many reps you're allowed to miss the pace on, and if you blow the cap, you adjust the set on the spot.
An app can validate a single set against zone classification (is this actually a threshold set or did the coach write threshold paces at VO2max rest intervals?). It can validate a week against periodization logic (is aerobic volume dropping appropriately as the taper approaches?). It generally can't "validate against USRPT" in the same sense, because USRPT isn't a zone chart — it's a pace-and-fail-count rule applied at the pool deck, which is closer to a real-time coaching decision than a plan template.
The zone model, with real numbers
Take a swimmer with a CSS of 1:18/100m (based on a 400/200 time trial). A generic zone breakdown looks like this:
- Zone 1 (aerobic recovery): slower than CSS + 10%, roughly 1:26/100 or slower. Long, easy, technique-focused.
- Zone 2 (aerobic maintenance): CSS + 4–8%, about 1:21–1:24/100. Bread-and-butter endurance work, moderate rest.
- Zone 3 (aerobic threshold/CSS): CSS pace itself, 1:18/100, with short rest (10–20 seconds on 100s). This is your classic broken threshold set — 16 x 100 @ 1:33 holding 1:18 pace with 15 seconds rest.
- Zone 4 (VO2max): CSS – 3–5%, around 1:14–1:16/100, on generous rest (1:1 work-to-rest or more) so the swimmer can hit real speed. Example: 8 x 200 @ 1:14 pace with 45 seconds rest.
- Zone 5 (speed/alactic): all-out, far below CSS pace, full recovery. 8 x 25 max with 45–60 seconds rest.
This is essentially Rushton's color logic with different labels. The value isn't the color names — it's that the app checks whether your written interval actually produces the physiological stress you intended. Write "threshold set" with 45 seconds rest between 100s and the app should flag that the rest is too generous for Zone 3 and is drifting into Zone 4 territory.
Where Sweetenham's framework shows up
An app that only checks individual sets misses the bigger question: does the season make sense? Sweetenham-style periodization checks things like — is there a genuine aerobic base phase before racing speed work ramps up, does taper volume actually decrease week over week, is there a lactate-tolerance block scheduled close enough to the target meet to matter but not so close it leaves the swimmer flat. This is architecture, not a single-set check. Some apps flag it at the macrocycle level: total weekly yardage, ratio of aerobic-to-anaerobic work, and whether that ratio is shifting in the right direction as the meet approaches.
Where USRPT sets get flagged differently
A well-built USRPT set — say 20 x 50 free @ race pace of 32.0 with 15 seconds rest, capping misses at 3 before adjusting the send-off — doesn't classify neatly into a zone. The pace is race-specific, not CSS-derived, and the rest is dictated by fail count, not a fixed energy-system target. An app should recognize this pattern (short rest, pace tied to actual competitive times, explicit fail tolerance) and validate it against goal race pace rather than trying to force it into a Zone 3 or Zone 4 bucket. Treating a USRPT set as a generic threshold set misreads the entire point of the method.
What to actually check when you use one of these apps
- Does it tell you which framework it's using for a given check, or just spit out a color with no explanation?
- Does it separate set-level zone accuracy from season-level periodization logic?
- Does it recognize race-pace-based sets as their own category instead of forcing a CSS comparison?
- Can you see the math — the pace, the rest, the percentage off CSS — not just a label?
SwimIQ builds workouts around this same zone logic, so when you speak, type, or photograph a set, it maps intervals to the energy system they actually train and flags mismatches between your stated intent and the numbers on the page — without locking you into one coach's proprietary system.