Skip to content

Swim Workout Generator

Create your own swim workout, generate a random workout, or select from a list of existing workouts.
As a former swimmer (aka swammer), I enjoy the flexibility of writing my own practices yet sometimes miss coaches writing sets for me. I built this doc to make it easier for me to come up with creative swim workouts & hope it can help you too! 🙂

This doc aims to easily build swim workouts based on what equipment you have on hand, how long you want to swim for & creates intervals based on your average 50 pace.

Let's create my swim workout!

Shoutout to the
🧘
that inspired this swim workout doc! And big thanks for
@Noah Silverstein
,
@Shitong (Stone) Shou
,
@Helena Jaramillo
for all your help
🙏

Share feedback on this doc


How does this doc work?

First, let’s define some terms!


Workout sets
are composed of
workout segments
which allows for each individual part (or segment) of a set to be customizable.
Each segment contains:
Distance
Repetition
Equipment required
Segment type (e.g., stroke, kick, swim)

A
workout
is composed of workout sets (e.g., warm up, main set, cool down)

How is the workout generated?


Intervals
are calculated based on the
user inputted 50 base pace
and and adjustment table based on the
segment type
(e.g., a 50 kick is slower than 50 swim)

When a user selects the
equipment
,
set type
, &
practice focus
the workout set table filters to only include sets that meet that criteria.

Once the table is filtered and the user clicks
Generate a workout
based on the
user inputted yardage goal
, the table ranks each workout set based on how close that particular set is to a goal percentage of the total workout. The highest ranking set is added to the workout.
For example, warm up has a target of 25% of the total warmup. If the user selected 1000 yards total workout yardage goal, the warm up closest to 250 yards would rank first and be selected to add to the warmup.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.