Durability Analyzer
I published the research on cycling durability — then built the tool to measure it
Binary FIT parsing in-browser
Zero data uploads (privacy-first)
4-tier classification system
Multi-ride trend tracking
01The Problem
Durability is a relatively new concept in endurance sport science: it describes how much an athlete's physiological markers and power output decay over time as fatigue accumulates. Elite athletes sustain their peak power deeper into a long ride; recreational athletes fade early. My own peer-reviewed papers (Rothschild & Dudley-Rode, 2025; Spragg et al. methodology) define how to measure this. The problem: there was no practical tool for athletes to self-assess it. Labs can measure it, but most cyclists never have access to that data.
02The Approach
Built a client-side FIT file analysis tool that parses Garmin/Wahoo binary files in the browser using the Garmin FIT SDK, extracts power and heart rate data, and computes durability scores using the methodology from my own research. The key calculation: divide each ride into work accumulation bins (kJ/kg) and compute mean maximal power at each bin. The slope of the decay curve across bins quantifies durability. Athletes are classified into four tiers (Elite / Well-Trained / Trained / Recreational) using sex-specific thresholds from the published literature. Everything runs locally — no data ever leaves the device.
03Architecture Decisions
Binary FIT parsing in the browser
Garmin FIT files are a proprietary binary format. The Garmin FIT SDK (compiled to WASM) parses them in the browser — no server upload required. This preserves privacy (training data is personal health data) and works offline after first load.
Work-based binning for durability curves
Rather than time-based analysis, durability is computed by binning power data into cumulative work done (kJ/kg). This is the standard approach from Spragg et al. (2022–2024): a rider who has done 5 kJ/kg of work shows a different power capacity than one who has done 20 kJ/kg. The bin-based approach controls for varying ride lengths.
Mean Maximal Power (MMP) algorithm
For each work bin, the app computes Mean Maximal Power: the highest average power sustainable for N seconds within that work accumulation window. This is computed via a sliding window algorithm across the full power time series. The result is a curve showing how your best power changes as fatigue accumulates.
Sex-specific tier thresholds from literature
The tiering system (Elite / Well-Trained / Trained / Recreational) uses thresholds published in the peer-reviewed literature (Mateo-March et al., 2022; Spragg et al., 2024). These are parameterized per sex, since male and female power-to-weight distributions differ significantly.
04Key Insight
The hardest part wasn't the FIT parsing or the scoring algorithm — it was the demo mode. Most users won't upload their own data on a first visit. Building a realistic synthetic ride generator (with appropriate power variability, cadence dropout, temperature drift, and fatigue curves that look like real Garmin files) took longer than the core analysis engine. Synthetic data that looks fake kills trust in the real analysis.
05Why It Matters
The only tool available to regular cyclists for measuring their own durability, built directly on peer-reviewed methodology. Demonstrates that I bridge research and product — I don't just read papers, I translate them into software.