A single-file HTML workout tracker designed for phone browsers. No accounts, no subscriptions, no install — just open and lift.
Open workout-tracker.html in any browser. That's it.
For the best experience on your phone, bookmark the file or add it to your home screen. All data saves automatically to your browser's local storage.
Core Tracking
- 5-phase periodized program (cut/bulk cycles) with per-phase color coding
- Log weight and reps for every set with auto-fill from your last session
- Tap the circle to mark a set done — rest timer starts automatically
- Progressive overload badges show if you're up, down, or flat vs last session
- PR tags highlight your all-time best weight per exercise
- Session duration timer that survives page reloads
Gym-Floor UX
- Warm-up set calculator for compound lifts (auto-generates based on working weight)
- Exercise reorder buttons — move exercises up/down to match equipment availability
- Exercise swap system — one-tap alternatives when your machine is taken
- Deload mode halves volume with one toggle
- Dark mode for early morning sessions
Progress Visibility
- Per-exercise history (last 5 sessions) — tap to expand and see your trend
- Weekly session counter in the header
- Body weight logging with 7-day rolling average and week-over-week trend
- Phase overview panel with calories, protein, training rules, and exit criteria
- Weekly volume summary showing sets per muscle group vs target
Data Safety
- All data persists in localStorage automatically
- JSON export/import for full backups
- Backup reminder system — nudges you after 5 sessions or 2 weeks without a backup
- Missed workout detection — if 7+ days since your last session, suggests easing back in
This tracker is built to be generated per-user via an AI prompt. The exercise data lives in the phases object near the top of the <script> block. Each phase contains named training days, and each day contains an array of exercises with sets, rest periods, notes, and muscle tags.
To create a version for someone else, replace the phases object with their program. The rest of the app (UI, tracking, timers, data management) works unchanged.
- Single
.htmlfile — no build step, no dependencies, no server - Uses Inter font from Google Fonts (falls back to system sans-serif if offline)
- All state stored in
localStorageunder keys prefixed withbd_ - Works in any modern mobile browser (Safari, Chrome, Firefox)
- ~1,500 lines total including all CSS, HTML, and JS
| Key | Contents |
|---|---|
bd_sessions |
Historical session data (weight/reps per set per exercise) |
bd_today |
Current day's in-progress session |
bd_order |
Custom exercise ordering per day |
bd_phase |
Active phase number |
bd_theme |
Light or dark mode preference |
bd_bodyweight |
Daily body weight entries |
bd_phase_starts |
Phase start dates for week counting |
bd_swaps |
Active exercise swaps |
bd_backup_meta |
Backup reminder state (last export date, session count) |
bd_session_start |
Session timer timestamp (survives page reload) |