Evidence-based summary from recent sleep, HRV, resting HR and cycling load. Not a diagnosis or permission to train.
Training load trends and balance are shown separately. Estimates use available earlier ride history and are not measurements of fitness or recovery.
Last 7 complete days versus the 7 days before. Missing health days are excluded, not treated as zero.
Exploratory comparison of daily cycling load with next-day HRV, resting HR and sleep. Associations do not establish cause.
Compares the most recent 7 complete days with the 7 days before them. Highlights week-to-week changes using fixed thresholds, with additional personalized baseline alerts below. Neither is a diagnosis.
Latest 7 complete days compared with the preceding 30 days, when sufficient readings exist.
Training load is an estimate using average power and FTP where available, otherwise riding duration. It is not a medical assessment.
Daily estimated load points from Strava rides. Uses average power / FTP (230 W if set), not normalized power or official TSS. Missing power uses a rough 35 points per hour.
Compare rolling 7-day load with your preceding weeks. Fitness (42-day EWMA) and fatigue (7-day EWMA) are modeled estimates, not measures of recovery or readiness. A rise in training stress is not automatically good or bad.
FTP-based reference ranges (Coggan-style). The Strava activities.csv only includes average power; it cannot determine time spent in each zone. Ride classifications below use whole-ride average power, not true time-in-zone.
Workout average HR, workout maximum HR (when available), and average-power/HR ratio are derived from Strava rides and shown separately from Apple Health resting HR, HRV and general HR. Ride summaries are not continuous heart-rate traces. The power/HR ratio is descriptive and is not comparable across very different rides.
Search by measurement or source. Select a category for latest reading, history, 7/30/90-day trends and source information. High-frequency data is summarized daily to keep this browser app responsive. Not all Health app data types are represented in the XML export.
Current 7-day daily averages compared with the previous 7 days. Changes are descriptive, not recovery scores.
Imported Apple Health records may contain many measurements per day. This dashboard displays the latest values and doesn't diagnose recovery.
Choose activities.csv from your Strava account export. Cycling activity types are imported; non-cycling activities are ignored. The file is processed in your browser.
Select one or more .fit activity files. Reads ride summary, heart rate, power, cadence and distance locally. Review each ride and potential duplicate before saving. Detailed sample streams are summarized, not saved.
Export Health data on your iPhone, extract the ZIP, and select apple_health_export/export.xml. For large exports, use a computer with sufficient memory. Workout and selected health records are parsed locally.
Apple Health cycling workouts are ignored. Strava is the only imported cycling-workout source; Apple Health still supplies health and recovery measurements.
Download a JSON backup and import it on another device. This is manual transfer, not automatic sync. Keep backups private: they contain health data.
Back up first. Removes all Apple Health cycling workouts and repairs distances on existing Strava rides when you reimport activities.csv.
Data is stored in this browser's IndexedDB. Private browsing, browser cleanup, or device replacement may delete it. Use backups regularly.
If FTP is unknown, leave it blank. The app won't invent a training stress score. HRV measurements from different devices/methods may not be comparable.
No third-party libraries, accounts, analytics trackers, external APIs, or uploads. Import and calculations happen in this browser. The app is not encrypted independently of your device and browser. Apple Health cannot be queried directly from a web page. For full automatic synchronization, a native HealthKit app would be required.