Youth sports league and swim school website accessibility: registration, waivers, schedules and levels
Accessibility fixes for youth sports leagues, club teams and swim schools: season registration forms, waivers and typed signatures, schedules and standings as real tables, swim levels in words, rainout updates and registration platforms.
Youth sports leagues, club teams and swim schools run on a few pages: season registration, waivers, schedules and standings, swim level charts, and "are games on tonight?" updates. Parents and players who use a screen reader, magnifier, keyboard or voice control, and busy parents registering on a phone in the car park, often get stuck on placeholder-only registration fields, mouse-only birthdate pickers, draw-your-signature waivers, schedules posted as a JPG and swim levels shown only by colour. A family that can't register just picks another league. Here's what to check.
1. Season registration forms
Give every field a visible label, mark required fields in text, use autocomplete for the parent's name, email and phone, and let people type a birthdate instead of scrolling a mouse-only calendar back ten years. Explain how the age division is worked out next to the field, group program choices in a fieldset with a legend, say what to fix in words when something is wrong, and announce the confirmation. If a family registers two children, don't make them type the parent details twice. (WCAG 3.3.2, WCAG 1.3.5, WCAG 3.3.1, WCAG 3.3.7, WCAG 4.1.3)
<form>
<label for="p-name">Player's full name (required)</label>
<input id="p-name" name="player" required>
<label for="p-dob">Player's date of birth (required)</label>
<input id="p-dob" name="dob" type="date" aria-describedby="p-dob-hint" required>
<p id="p-dob-hint">Age division is based on age on August 1, 2026.</p>
<fieldset>
<legend>Program (required)</legend>
<label><input type="radio" name="program" value="rec" required> Recreational, Saturday games</label>
<label><input type="radio" name="program" value="travel"> Travel team, tryout required</label>
</fieldset>
<label for="g-name">Parent or guardian name (required)</label>
<input id="g-name" name="guardian" autocomplete="name" required>
<label for="g-email">Parent or guardian email (required)</label>
<input id="g-email" name="email" type="email" autocomplete="email" required>
<label for="g-tel">Mobile phone (required)</label>
<input id="g-tel" name="tel" type="tel" autocomplete="tel" required>
<button type="submit">Continue to waiver</button>
<p role="status" id="r-status"></p>
</form>
<!-- example values; use your real cutoff date and programs -->
See accessible contact forms and form error messages.
2. Waivers, medical forms and signatures
Put the waiver on the page as real text with headings, not a scanned PDF. Let parents sign by typing their name and ticking a box, not only by drawing a signature with a finger or mouse. Warn before a long form times out and keep what was typed. Ask about medical needs and accommodations with a clear, optional field. (WCAG 1.3.1, WCAG 2.5.1, WCAG 2.2.1)
<h2>Participation waiver</h2> <p>...waiver text as headings and paragraphs...</p> <input type="checkbox" id="w-agree" name="agree" required> <label for="w-agree">I have read and agree to the participation waiver (required)</label> <label for="w-sign">Type your full name as your signature (required)</label> <input id="w-sign" name="signature" autocomplete="name" required> <label for="w-needs">Medical needs or accommodations we should know about (optional)</label> <textarea id="w-needs" name="needs"></textarea> <!-- example wording; have your own waiver text reviewed by your attorney or insurer -->
3. Schedules, standings and brackets as real tables
Game schedules, practice times and standings are often posted as a screenshot or a PDF export. Put them on the page as tables with header cells and a caption, write "Home" and "Away" in words, and show tournament brackets as a list of games as well as the bracket graphic. (WCAG 1.4.5, WCAG 1.3.1, WCAG 1.4.1)
<table>
<caption>U10 Blue schedule, fall 2026</caption>
<thead><tr><th scope="col">Date</th><th scope="col">Time</th><th scope="col">Opponent</th><th scope="col">Home or away</th><th scope="col">Field</th></tr></thead>
<tbody>
<tr><th scope="row">Sat, Nov 7</th><td>9:00 am</td><td>Riverside FC</td><td>Home</td><td>Field 3, Memorial Park</td></tr>
<tr><th scope="row">Sat, Nov 14</th><td>10:30 am</td><td>Eastside United</td><td>Away</td><td>Eastside Sports Complex</td></tr>
</tbody>
</table>
<!-- example teams, dates and fields; use your real schedule -->
See accessible tables and accessible PDFs.
4. Swim levels and skill charts in words
Swim schools and clubs often show levels only as coloured badges (red, yellow, green) or a chart image. Name each level in text and say what a swimmer can do to join it and to move up, so parents can place their child without seeing colour. Show "Class full" or "2 spots left" in words, not just a grey tile. (WCAG 1.4.1, WCAG 1.1.1)
<h3>Level 2: Water explorer (yellow)</h3> <p>For swimmers who can put their face in the water and float with help.</p> <p>Moves up when they can float on their back for 10 seconds and kick 5 metres on their own.</p> <p>Tuesdays 4:30 pm, 2 spots left.</p> <!-- example level, skills and times; use your real program -->
5. Rainouts, closures and urgent updates
Game cancellations often go out only as an app push, a Facebook post or a red banner with no words. Put the status on your site as dated text ("Updated 3:15 pm Saturday: all games at Memorial Park are cancelled"), don't rely on colour, and if a banner updates live, use a polite status message rather than an alert that interrupts every few seconds. Make sure any banner can be reached with a keyboard and doesn't cover the menu. (WCAG 1.4.1, WCAG 4.1.3, WCAG 2.4.11)
<section aria-labelledby="field-status"> <h2 id="field-status">Field status</h2> <p role="status">Updated 3:15 pm Saturday, Nov 7: all games at Memorial Park are cancelled. Games at Eastside Sports Complex are on.</p> </section> <!-- example update; use your real fields and times -->
6. Team apps, registration platforms and payments
Many leagues and swim schools register families through a platform such as TeamSnap, SportsEngine, LeagueApps or Jackrabbit, and the parts on that platform are the vendor's code. Test the sign-up and payment steps with a keyboard, ask the vendor for its accessibility documentation (a VPAT), and offer a phone or email way to register next to the button. Payment plans and fee waivers should be explained in text. Logins should work with password managers and paste, and avoid puzzle CAPTCHAs. (WCAG 2.1.1, WCAG 4.1.2, WCAG 3.3.8)
<a href="https://example.com/register">Register for fall soccer (opens our registration site)</a> <p>Trouble registering online? Call 918-555-0100 or email [email protected] and we'll sign you up.</p> <!-- example link, number and email; use your real details -->
See what a VPAT is and logins and CAPTCHAs.
7. Team photos, game video and livestreams
Give team and action photos short alt text ("U12 girls team with the fall tournament trophy"), and keep children's names out of alt text and captions unless families agreed. Caption highlight videos and coaching clips, don't autoplay sound, and if you livestream games, say whether captions are available. (WCAG 1.1.1, WCAG 1.2.2, WCAG 1.4.2) See alt text examples and video captions.
8. Facility access, team colours, zoom and help
Team colours on white (light blue, gold, orange) often fail the 4.5:1 contrast ratio. Check the site at 200% zoom on a phone-width window, keep "Register" and contact buttons big enough to tap, and put the same help line on every page. If families ask about step-free paths to fields, accessible pool lifts, changing rooms or adaptive programs, describe what you actually have, only if you've checked it. (WCAG 1.4.3, WCAG 1.4.10, WCAG 2.5.8, WCAG 3.2.6)
Keep accessibility wording factual and don't claim the site is "fully accessible". See the accessibility statement template.
Common mistakes
- The schedule and standings are a screenshot or PDF export.
- Registration fields use placeholders instead of labels.
- Birthdate pickers that only scroll with a mouse.
- Waivers that can only be signed by drawing.
- Swim levels or "class full" shown only by colour.
- Rainout updates only on Facebook or in an app.
- An overlay widget instead of real fixes. See overlays vs real fixes.
A 15-minute check you can do today
- Using only Tab, Shift+Tab, Enter and Space, start a registration and reach the waiver. Can you always see where you are?
- Submit it with the birthdate left blank. Does the error say what to fix, in words?
- Try to select a word in your schedule. If you can't, it's an image.
- Find today's field status without opening Facebook or an app.
- Read your swim levels or programs in greyscale (most phones have a setting). Can you still tell them apart?
- Zoom to 200% on a phone-width window. Can you still reach Register and the contact details?
What a scan can and can't check here
Our scan is automated, so it finds only part of the barriers on the public pages it visits, such as your home, programs, schedule and contact pages: missing alt text, unlabelled fields and buttons, low contrast, missing page language and similar code problems. It doesn't register a player, sign a waiver, log in to your team app or read text inside schedule images, which is why the 15-minute check matters. Our Fix-Pack scans up to 10 public pages and gives copy-paste fixes for your platform, and notes what to ask your registration platform for. Platform steps: Squarespace, Wix, WordPress, GoDaddy.
Related: gym and fitness studio websites, tutoring, music lesson and dance school websites, childcare and preschool websites, nonprofit websites.
This is general technical guidance, not legal advice, and it doesn't certify compliance with the ADA or any law, or protect against claims.
Want the fixes written for you?
Start with a free homepage snapshot. The $149 Fix-Pack scans up to 10 pages and gives copy-paste fixes for your platform within 48 hours, with a 14-day refund promise. See a sample report first.
This is general technical guidance, not legal advice, and it does not certify compliance with the ADA or any law.
Related guides
- WCAG 2.2 explained for small-business websites
- Squarespace accessibility fixes: alt text, contrast, forms and more
- Wix accessibility fixes: a practical checklist
- WordPress accessibility fixes (block editor and themes)
This guide is general technical information, not legal advice. Following it does not certify ADA or any legal compliance. Automated checks find only part of accessibility barriers.
Check your own site
Run a free homepage snapshot to see your top 3 issues in about a minute, or order the $149 Fix-Pack for up to 10 pages with copy-paste fixes for your platform.