9 min read
7 July 2026
How to Conduct a Swimming Meet: Heats, Seeding and Results
Swimming meets run on heats, not brackets. Here's how to seed lanes fairly, handle DNS/DNF/DQ, and get results out fast.
IN THIS ARTICLE
Swimming is not a bracket sport
Step 1: Set your events and age groups
Step 2: Collect entries with seed times
Step 3: Generate heats and assign lanes
Step 4: Handle DNS, DNF, DQ and scratches
Step 5: Rank by time across all heats, not per heat
Step 6: Run finals (or skip them) and award the podium
Using software instead of spreadsheet heat sheets
Swimming is not a bracket sport
If you've organized a knockout tournament before, swimming will feel structurally different. There's no bracket and no elimination — every swimmer is placed into a heat, swims their event, and is ranked by time. Multiple heats of the same event get combined into a single overall ranking once everyone has swum, and only then (optionally) does a final take the fastest swimmers for one more race.
This guide covers running a swimming meet from entries through to the podium.
Step 1: Set your events and age groups
Decide which strokes and distances you're running (freestyle, backstroke, breaststroke, butterfly, individual medley, and relays if you have the entries to support them), and split each event into age groups. Community and school swim meets commonly run age bands from under-8 through adult categories, mirroring the same age-banding logic used for other multi-category sports events.
Each event/age-group/gender combination becomes its own set of heats, so — just like a large multi-sport tournament — the category count can climb quickly. Plan your session order (which events run in which order, morning vs afternoon) before opening entries so swimmers and parents know roughly when to arrive.
Step 2: Collect entries with seed times
Ask for a seed time at entry — the swimmer's best known time for that event, or a reasonable estimate for first-timers. Seed times are what heat generation uses to build fair, competitive heats; without them, every swimmer defaults to "unseeded" and heats end up effectively random.
It's fine for younger or first-time swimmers to have no seed time. A well-built heat generator treats unseeded swimmers as the slowest in the field for placement purposes, rather than failing or requiring a workaround.
Step 3: Generate heats and assign lanes
Once entries close for an event, heats are built by ranking swimmers fastest to slowest by seed time, then splitting them into heats sized to your pool's lane count. Two rules matter here for fairness:
- Balanced heat sizes: heats should differ by at most one swimmer — a field of 9 swimmers across 6 lanes should produce heats of 4 and 5, never 6 and 3
- Centre-out lane seeding: within each heat, the fastest swimmer gets the centre lane, with the rest filled outward from the centre — the same convention used at competitive meets, since the centre lanes let swimmers see more of the field
The remainder swimmer (when heat sizes can't divide evenly) should always land in the fastest heat, not the slowest — a short heat should be the slowest one, not a random one. This keeps the fastest heat looking like a "full field" final-style race.
Also insist on a fully deterministic seeding process — if you ever need to regenerate heats (a late scratch, a correction to a seed time), swimmers already assigned to a lane shouldn't shuffle to a different lane for no reason. Non-deterministic regeneration is a common and confusing bug in hand-built spreadsheets.
Step 4: Handle DNS, DNF, DQ and scratches
Real meets always have swimmers who don't start, don't finish, get disqualified for a stroke infraction, or scratch after the heats are already published. Your results process needs a clear status for each of these (DNS, DNF, DQ, scratched) rather than just leaving a blank time — organizers and parents both want to see what happened, not just a missing result.
Swimmers with one of these statuses should be excluded from the ranking calculation (they don't get a rank position) but should still appear in the results, typically shown at the bottom with their status clearly marked — not silently removed from the results as if they never entered.
Step 5: Rank by time across all heats, not per heat
This is a common mistake for first-time meet organizers: ranking is not "1st, 2nd, 3rd in each heat" — it's the overall ranking across every heat in that event, sorted by time. A swimmer who wins the slowest heat isn't automatically ranked higher than someone who finishes 3rd in the fastest heat; the actual times decide the overall order.
Recompute the overall ranking every time a new result comes in, so standings stay accurate as heats finish throughout the session rather than only being calculated once at the very end.
Step 6: Run finals (or skip them) and award the podium
Decide upfront whether each event/age-group category gets a separate final. If yes, take the fastest swimmers across all prelim heats (commonly the fastest 6–8) and seed them into a single final heat, centre-out by their prelim time — the final always gets a clear top-3 podium regardless of your general settings.
If you're running the meet without finals (common for younger age groups or a meet with tight time constraints), the prelim standings simply become the final result — sorted by time, with a podium for the top 3 shown alongside a configurable number of additional "recognized" places (commonly the top 5 or top 8, decided per event based on your own scoring rules) for swimmers just outside the podium.
Either way, publish a heat sheet in advance (who's swimming which heat, in which lane, and when) and export final results so parents and swim clubs have a clean record afterward.
Using software instead of spreadsheet heat sheets
Manually building balanced, centre-out heats for even a modest swim meet — say, 10 events across 6 age groups — means dozens of separate heat sheets, each requiring careful, error-prone manual seeding. Doing this by hand in a spreadsheet is exactly where lane assignments start "shifting" between regenerations, or where a DNS swimmer accidentally throws off everyone else's heat count.
Playgrade's swimming module automates heat generation with centre-out lane seeding, balanced heat sizes, full DNS/DNF/DQ/scratched status tracking, automatic ranking recalculation across all heats, optional finals, and configurable podium sizes — plus PDF export of heat sheets and final results for every session.