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: 2025-2026 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 |
|---|---|---|---|---|---|
| Girls 11 | 1500 Free | LCM | B | 24:38.39⚠️ |
B should be 24:18.39 (A × 1.1, rounded to 1 decimal + 0.09) |
| Girls 12 | 1500 Free | LCM | B | 24:38.39⚠️ |
B should be 24:18.39 (A × 1.1, rounded to 1 decimal + 0.09) |
| Girls 13 | 1500 Free | LCM | B | 24:38.39⚠️ |
B should be 24:18.39 (A × 1.1, rounded to 1 decimal + 0.09) |
| Boys 14 | 200 Free | SCY | B+ | 2:05.49⚠️ |
B+ should be 2:11.79 ((A + B) / 2, rounded to 1 decimal + 0.09) |
| Boys 15 & Over* | 1500 Free | SCM | B | 21:59.09⚠️ |
B should be 21:58.99 (A × 1.1, rounded to 1 decimal + 0.09) |
- 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.
🪲 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
- Course Support: SCY (Short Course Yards), SCM (Short Course Meters), LCM (Long Course Meters)
- 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
