Swim practice planning, for whoever writes it.

Write the practice the way you already write it. SwimScript reads the shorthand, adds up the yardage as you type, estimates how long the session runs, and prints a one-page sheet that looks like the Word document you have been handing out for years.

The demo needs no account. Drop one of your own .docx practices onto the page and it is opened, read and counted in the browser — the file is never uploaded. Three practices are kept in that browser, and they follow you in if you make an account later.

A real practice

Left is what the coach types. Right is what comes out of the printer.

This is one of the twelve real practices SwimScript's parser is tested against, transcribed from the Word document it arrived in. Nothing about the notation has been simplified to make it easier to read.

Written Shorthand, as the coach writes it. The running totals are left out here: those are the part SwimScript works out.
W/U w Fins:
200 mixer      (50 free/ 50 non-free
200 kick       (4th & 8th 25's=fast
200 im drill -or- your choice
200 pull       (dps

Pre-set: w/fins
4 * 75 @ 1:15  50 Swim/ 25 Kick; (o) smooth (e) build
4 * 50 @ 1:00  25 Swim/ 25 Kick; (o) smooth (e) build
4 * 25 @ :30   ":08 second sprints" = sprint to 2nd flag
50 easy

Main-set: (adjust intervals as needed)
3 * (150- Str/Free x 25; desc.1-3 + 50 easy) @ 3:30
1 MR
3 * (100-Str/Free x 25; desc.1-3 + 50 easy) @ 2:40
1 MR
3 * (50-Stroke; desc.1-3 + 50 easy) @ 2:00

Closer: Pull -or- Kick (fins opt.) -or- P&F
3 * 200 @ :20 sr  (negative split x 100)

Loosen down
Printed Send-offs in red because they are time, totals in gold because they are yardage.

Masters Swimming

Tuesday, June 23, 2026

*Focus= Active Rest.

W/U w Fins:

200 mixer (50 free/ 50 non-free

200 kick (4th & 8th 25's=fast

200 im drill -or- your choice

200 pull (dps

(800)

Pre-set: w/fins

4 * 75 @ 1:15 50 Swim/ 25 Kick; (o) smooth (e) build

4 * 50 @ 1:00 25 Swim/ 25 Kick; (o) smooth (e) build

4 * 25 @ :30 ":08 second sprints" = sprint to 2nd flag

50 easy

(650/1450)

Main-set: (adjust intervals as needed)

3 * (150- Str/Free x 25; desc.1-3 + 50 easy) @ 3:30

1 MR

3 * (100-Str/Free x 25; desc.1-3 + 50 easy) @ 2:40

1 MR

3 * (50-Stroke; desc.1-3 + 50 easy) @ 2:00

(1350/2800)

Closer: Pull -or- Kick (fins opt.) -or- P&F

3 * 200 @ :20 sr (negative split x 100)

(600/3400)

Loosen down

3400 yards over four sections. The totals on the sheet are the ones the coach had already typed into his own document by hand — SwimScript arrives at the same numbers, which is the only test of an arithmetic feature that means anything.

What it actually does

Three things, and they are the whole product.

  • It opens the .docx practices you already have. In the browser. The file is read by code running on your own machine — it is not uploaded, not queued and not stored anywhere to be parsed. Twelve real practices are in the test suite, tabs, superscripts, unclosed brackets and all.
  • It prints one page that looks like your document. Letter, portrait, margins measured off the source practices, and a serif with the same advance widths as Times New Roman so the lines break where yours break. A long practice steps down from 16pt toward a 12pt floor to hold the page. All twelve reference practices fit on one side; one that still would not is given a second sheet rather than being shrunk past legible.
  • It counts while you write. Per-section yardage and a running total, worked out from the sets rather than typed — change a repeat count and every figure below it moves. Beside them, an estimate of how long the session takes, marked as an estimate because about half the lines in a real practice carry no send-off to measure.

It is new, and it is built for one team.

SwimScript was written for a masters coach who writes about twelve practices a month, and it is shaped around his documents rather than around a persona. No logos, no counts of happy coaches, no waiting list, and nothing here to sign up for. Open it, drop a practice in, and see whether your notation survives the trip.