SWOLF efficiency
{{ averageSwolfDisplay }}
{{ totalDistanceDisplay }} • Pace {{ pacePer100Display }} • Best lap {{ bestLapDisplay }} / Worst {{ worstLapDisplay }}
{{ poolDisplay }} {{ lapCountDisplay }} {{ strokesDisplay }} {{ timeDisplay }}
{{ summaryNote }}
s
Lap Time Strokes SWOLF Pace /100 Distance Copy
{{ row.index }} {{ row.timeDisplay }} {{ row.strokesDisplay }} {{ row.swolfDisplay }} {{ row.paceDisplay }} {{ row.distanceDisplay }}
Add laps to see results.
Chart tracks SWOLF, strokes, and split time per lap to spot efficiency drift and fatigue.
:

Introduction:

SWOLF scores are a simple way to describe how efficiently you swim a single pool length by combining how long it took and how many strokes you needed. Many swimmers treat it like a swimming SWOLF calculator for spotting technique drift when effort rises and for tracking changes across repeated sets. Lower values usually mean you covered the same distance with less time or fewer strokes under similar conditions.

Record a pool length and then list your laps as split times with stroke counts, and the tool returns per lap SWOLF, pacing, and session level averages that are easy to compare. A short summary calls out total distance, overall pace, and the best and worst laps so you can see both consistency and outliers at a glance. If your splits include extra standing time at the wall, you can subtract a fixed rest amount to make lap to lap comparisons cleaner.

For example, if four lengths stay close in both time and strokes, your SWOLF line should look steady and your spread between best and worst laps stays small. If later laps climb while strokes also rise, the score helps you notice fatigue before it becomes a full form collapse. When you repeat the same workout later, compare the average score and the spread rather than chasing a single perfect lap.

SWOLF is a blended score, so it can improve because you take fewer strokes while slowing down, or because you go faster while getting sloppy. Compare like with like, and keep drills, kick sets, and sprint work separate when you want fair comparisons. Treat the number as a clue for what to review next, not a verdict on your whole stroke.

Technical Details:

Each lap is treated as one pool length with two measured quantities, split time and stroke count. SWOLF is computed per lap by adding those quantities after an optional rest deduction, which is useful when your recorded split includes time spent at the wall.

Alongside SWOLF, the tool computes pace per one hundred of the selected pool unit, plus session totals and averages. The lap table and chart both use the adjusted split time, which keeps the visual trend aligned with what the SWOLF math is using.

In interpretation terms, lower SWOLF values generally indicate better efficiency when pool length, stroke, and effort level are comparable. Values that differ by a point or two can be normal timing noise, but a steady rise across laps is often a clearer signal than any single spike.

Comparisons are most meaningful when pool length and unit are unchanged and when you keep the set type consistent. Use SWOLF to compare efficiency within a session and pace per one hundred to compare speed across sets, and always sanity check values that look implausible.

Core calculations

tadj = max ( 0 , tlap r ) SWOLF = tadj + s pace100 = tadj Lm 100
Symbols and units used in SWOLF calculations
Symbol Meaning Unit or Datatype Source
tlap Recorded split time for one length seconds Input
r Rest deduction applied to every lap seconds Input
tadj Adjusted swim time, never below zero seconds Derived
s Stroke count for one length count Input
Lm Pool length converted to meters for distance math meters Derived
SWOLF Per lap efficiency score points Derived
pace100 Time per one hundred based on the converted pool length seconds per 100 m equivalent Derived

Interpretation notes

  • Lower SWOLF usually indicates higher efficiency when effort and stroke are comparable.
  • Best and worst laps are selected by minimum and maximum SWOLF within the set.
  • A rising SWOLF line can reflect fatigue, pacing drift, or turn quality changes.
  • Use average strokes and pace together to see whether changes come from speed, stroke length, or both.

Variables and parameters

Input parameters used by the SWOLF analyzer
Parameter Meaning Unit or Datatype Notes
pool_length_value Pool length for one lap number Used with the selected unit
pool_unit Length unit "m" or "yd" Yards are converted to meters for distance math
laps_text One lap per line as time and strokes text Comma separated, whitespace allowed
rest_deduction_s Fixed rest removed from every lap time seconds Clamped to zero or above

Constants and fixed rules

Constants and fixed rules used in calculations
Constant Value Unit Notes
Yard to meter 0.9144 m per yd Applied when pool unit is set to yards
JSON rounding 3 decimals Totals and per lap numbers are rounded to 0.001
PSI_TO_BAR 0.0689476 bar per psi Heads-up Present in the script but not used by this analyzer

Units, precision, and rounding

  • Split times are parsed as floating point seconds using a dot as the decimal separator.
  • Time inputs accept seconds (for example 25.8) or minutes and seconds (for example 1:42.5).
  • Displayed seconds show 0 decimals for whole seconds, otherwise 1 decimal, and values under one minute are shown with an s suffix.
  • Per lap SWOLF is displayed with 1 decimal, and average SWOLF is displayed with 1 decimal.
  • Exported JSON rounds numeric values to 3 decimals.
  • Adjusted lap time is clamped to 0 s after rest deduction, which prevents negative SWOLF.

Validation and bounds

Validation rules and constraints
Field Type Min Max Step or Pattern Error text
Pool length number 10 Step 0.5 Enter a valid pool length.
Lap entries text One per line, time,strokes Could not read lap N. Use "time,strokes" e.g., 25.8,21.
Lap time number > 0 Seconds or minutes:seconds, decimals allowed Could not read lap N. Use "time,strokes" e.g., 25.8,21.
Strokes number > 0 Numeric Could not read lap N. Use "time,strokes" e.g., 25.8,21.
Rest deduction number 0 Step 0.1
Laps present count 1 At least one parsed lap Add at least one lap.

I/O formats and exports

Inputs, outputs, and export formats
Input Accepted families Output Encoding or Precision Rounding
Lap list Newline separated time,strokes Lap table with SWOLF, pace, and distance Seconds displayed as mm:ss.s or ss.s Time 0 or 1 decimal, SWOLF 1 decimal
Pool length and unit Meters or yards Total distance summary and per lap distance Distance math uses meters internally Summary distance displayed as whole number
Computed session Derived numbers Structured JSON payload Pretty printed, 2 space indentation Numbers rounded to 3 decimals
Lap table Derived rows Tabular export file File name swolf_laps.csv Uses displayed strings
Chart and chart data Derived series Image and data exports Files named swolf_chart with png, webp, jpg, or csv Chart data uses 1 decimal for SWOLF
Session report Derived rows and summary Document export File name swolf_analysis.docx Uses displayed strings

Networking and storage behavior

  • Calculations run in memory and are updated with a short debounce when inputs change.
  • The chart view may load an external charting script on demand if it is not already available.
  • No local or session storage calls appear in this script, and exported files are generated from the computed state.

Performance and determinism

  • Parsing and computing are linear in the number of lap lines, so runtime is O(n) and memory is O(n).
  • Given identical inputs, outputs are deterministic, and chart animation is disabled for stable comparisons.

Security considerations

  • Inputs are parsed as numbers only, and invalid lines are rejected with an explicit error message.
  • Copied and exported content is generated from computed numeric values rather than raw text.
  • External script loading is limited to the chart dependency and does not include sending lap values.

Assumptions and limitations

  • SWOLF is computed per length as adjusted seconds plus stroke count, with no weighting or stroke type context.
  • Heads-up A rest deduction is applied equally to every lap, which may not match variable wall rest.
  • Strokes are accepted as numeric input and can include decimals even though strokes are normally whole counts.
  • Pool length is treated as a positive number, and comparisons assume the same pool length across sessions.
  • Totals and pace are derived from distance converted to meters for internal math.
  • Heads-up When yards are selected, pace and total distance are computed using meter conversion while some labels still reflect the selected unit.
  • No stroke rate, heart rate, or interval structure is modeled beyond the lap list you provide.
  • Output values near boundaries can shift with small timing differences, especially with short sets.
  • The chart uses a shared vertical axis for SWOLF, strokes, and time, which is good for trends but not for unit purity.
  • Export features depend on helper functions provided by the surrounding shell.

Edge cases and error sources

  • Blank lines are ignored, but lines without a comma separator are rejected.
  • Non numeric characters in time fields, such as s or unit words, will produce a parse failure.
  • Times with multiple colons, such as hour style inputs, are not supported.
  • Negative times or strokes are rejected, and zeros are rejected as invalid laps.
  • Rest deductions larger than the lap time clamp adjusted time to 0 s, which can make SWOLF equal strokes.
  • Very large lap counts can make the chart crowded and exports large.
  • Floating point representation can introduce tiny rounding differences before display rounding is applied.
  • Locale style decimals with commas are not parsed by numeric conversion.
  • Leading or trailing spaces are trimmed, but extra commas can confuse the split fields.
  • Clipboard access can be blocked by browser permissions, making copy actions fail silently.
  • Chart rendering can fail if the external chart script cannot be loaded.
  • Download actions can be blocked in restrictive embedded contexts.

Scientific and standards context

For background context, consult swim coaching guidance on stroke efficiency and pacing, facility standards for pool course lengths, and sport science literature on fatigue and technique drift.

Privacy and compliance

Training splits can be personal, and processing is browser-based with no lap values transmitted by this script, though an external charting script may be downloaded when needed.

Step-by-Step Guide:

Swim lap splits become SWOLF and pace so you can compare efficiency across a set.

  1. Set Pool length and choose meters or yards.
  2. Paste Lap entries with one lap per line as time,strokes.
  3. If your splits include wall standing time, set Rest deduction in seconds per lap.
  4. Review per lap SWOLF, pace per one hundred, and the best and worst laps.
  5. Export results when needed using table, chart, or JSON outputs.
  • Keep pool length consistent when comparing sessions.
  • Use rest deduction only if every split includes similar wall time.
  • Compare trends across laps rather than chasing a single best lap.

Pro tip: when your pace improves but SWOLF rises, you may be trading speed for extra strokes, so check both lines before changing your training plan.

FAQ:

Is my data stored?

Inputs are processed in memory and the script does not include upload calls for lap values. The chart view can load an external charting script if it is missing, but the lap numbers themselves are still computed locally. Some hosting shells add their own persistence, which is outside this package.

How accurate is SWOLF?

SWOLF is only as accurate as your timing and stroke counting, and small changes can be normal noise. It is most useful for comparisons within similar sets, and trends across laps are usually more meaningful than a one point difference. A fixed rest deduction can improve fairness, but it is still an approximation.

Which time formats work?

Enter seconds as a number, with an optional decimal, or enter minutes and seconds using a single colon. Add a comma and the stroke count after the time on the same line. Example format is time,strokes on each line.

Does it support yards?

You can select yards for the pool unit, and per lap distance displays in the selected unit. Internally, distance math uses a yard to meter conversion and the exported JSON reports meters. If values look inconsistent, treat pace and totals as meter normalized and rely on the lap table for per length context.

Can I use it offline?

Once the page and its helpers are loaded, the core calculations run locally. The chart view may be unavailable if the external chart script cannot be loaded in your environment, but the lap table and JSON can still be generated.

Cost or license?

This package does not present pricing, accounts, or license text in its interface. Treat usage terms as defined by the hosting site or the repository license if it is provided alongside the package.

Format lap entries?

Put one lap on each line as time,strokes with no extra words. Times can be seconds or minutes and seconds, and strokes must be a positive number. If a line fails, the tool reports the lap number to help you fix it quickly.

Borderline lap meaning

A borderline change is when SWOLF shifts slightly but your pace and strokes are otherwise stable. That can happen from timing precision, turn differences, or a single missed stroke count, so look for repeated movement across several laps before drawing conclusions.

Troubleshooting:

  • I see “Enter a valid pool length.” Use a positive number for the pool length.
  • I see “Add at least one lap.” Add at least one non empty line in time,strokes format.
  • I see “Could not read lap N.” Make sure the line has one comma and both values are numeric.
  • My lap time becomes 0 s. Reduce rest deduction if it is larger than some splits.
  • The pace looks odd in yards. Double check your unit choice and treat pace as meter normalized if it does not match expectations.
  • The chart is blank. Confirm results exist, then revisit the chart after the external chart script is available.
  • Copy or download does nothing. Check clipboard permissions and whether downloads are restricted in your environment.

Advanced Tips:

  • Tip Track spread between best and worst laps to measure consistency, not just speed.
  • Tip Compare SWOLF and strokes together to tell whether a change came from tempo or stroke length.
  • Tip Use a rest deduction only when every split includes similar wall time, otherwise it can distort the trend.
  • Tip Analyze each set type separately, because sprint sets and aerobic sets naturally live in different ranges.
  • Tip Export JSON when you want to compute rolling averages, lap to lap deltas, or custom charts outside the tool.
  • Tip When using yards, rely on the per lap distance display for context and treat totals and pace as meter based for consistency.

Glossary:

SWOLF
Per length score computed as adjusted seconds plus stroke count.
Split time
Elapsed time for one pool length, entered in seconds or minutes and seconds.
Stroke count
Number of strokes taken to complete one length.
Rest deduction
Fixed seconds subtracted from each split to reduce wall time influence.
Adjusted time
Split time minus rest deduction, clamped to zero.
Pace per one hundred
Time normalized to one hundred distance based on converted pool length.
Best lap
Lap with the lowest SWOLF value in the current set.
Spread
Range from best lap SWOLF to worst lap SWOLF.