A mobile-first single-page app for tracking swim times against Oregon Swimming (OSI) motivational time standards.
Not in Oregon and want to see your state's motivational data? Start a discussion or drop me a line and let's talk!
Please consider helping me cover my kid's swim meet fees!
Time standards are sourced from the Oregon Swimming Time Standards, which are typically updated 1-2 times per year.
Current standards: 2026-2027 OSI Time Standards A/B+/B
The following issues were observed in the source data from the OSI site*, and are highlighted in the app:
| Age/Gender | Event | Course | Standard | Value | Issue |
|---|---|---|---|---|---|
| Boys 9 | 100 Breast | LCM | A | 2:19.64 |
Unusual A time |
| Boys 11 | 1500 Free | SCM | B | 23:42.79⚠️ |
Invalid progression: B should be 23:42.89 |
| Boys 12 | 1500 Free | SCM | B | 23:42.79⚠️ |
Invalid progression: B should be 23:42.89 |
| Boys 12 | 200 Breast | SCY | B+ | 2:98.79⚠️ |
Invalid format |
| Boys 13 | 1500 Free | SCM | B | 23:42.79⚠️ |
Invalid progression: B should be 23:42.89 |
| Boys 13 | 400 Free | SCM | A | 5:26.31 |
Unusual A time |
| Boys 13 | 400 Free | SCM | B | 5:98.99⚠️ |
Invalid format |
| Girls 14 | 800 Free | SCM | B+ | 11:48.69⚠️ |
Invalid progression: B+ should be 11:48.79 |
| Girls 14 | 800 Free | SCM | B | 12:22.39⚠️ |
Invalid progression: B should be 12:22.49 |
| Boys 14 | 200 Free | SCY | B+ | 2:05.49⚠️ |
Invalid progression: B+ should be 2:09.89 |
| Boys 13-14 | 800 F.R. | SCY | A | 9:09.77 |
Unusual A time |
| Boys 15 & Over* | 1500 Free | SCM | B | 21:59.09⚠️ |
Invalid progression: B should be 21:58.99 |
- Invalid format: The time does not match the pattern
MM:SS.MSorSS.MS, or exceed 60-second increment notation (e.g.96.99seconds). - Invalid progression: The time does not fit in the expected "faster to slower" time progression calculation for standards:
A < B+ < B. - Unusual A time: OSI A times normally end in 9 (e.g.
1:05.79), but this one does not. It is still used as the A standard, so it is not highlighted in the app.
🪲 Encounter any other issues? Head over to the Issues tab and let me know!
* Note that the OSI PDF may contain errors, and so can this app! Refer directly to OSI for questions/corrections related to time standards.
- Mobile-First Design: Optimized for use at swim meets on mobile devices
- Time Comparison: Compare swimmer times against A, B+, and B motivational standards
- Visual Feedback: Color-coded qualification levels for easy tracking
- Persistent Storage: All times and settings saved locally between sessions
- Multi-Day Support: Track times across multi-day swim meets
Here are the basics. See the wiki for more detailed instructions.
- Select your Age Group from the dropdown
- Choose Gender (Girls/Boys)
- Select Course Type (SCY/SCM/LCM)
- Enter your swim times in the "Your Time" column
- Format:
MM:SS.MSfor times over 1 minute (e.g.,1:28.19) - Format:
SS.MSfor times under 1 minute (e.g.,28.45)
- Format:
- Times are automatically evaluated and color-coded:
- Green: A time qualified
- Blue: B+ time qualified
- Yellow: B time qualified
- Gray: Did not qualify
All entered data is automatically saved to your browser's local storage.
Built with:
- Vanilla JavaScript (no framework dependencies)
- Pico CSS for styling
- Local Storage API for data persistence
The app is automatically deployed to GitHub Pages on push to the main branch via GitHub Actions.
MIT
