For Everyone
Training & analysis
What the FIT parser computes on an Activity
Every metric the Hub extracts from a FIT, TCX, or GPX file, grouped by sport.
What gets parsed
When you upload a workout file (FIT, TCX, or GPX), the Hub
extracts an Activity row plus per-lap ActivityLap rows. The
metrics below are what the parser captures and stores; if a
field is empty on your Activity, the source file did not
contain it.
Universal fields
- Sport (swim, bike, run, strength, other) and
sub_sport (pool / open_water / indoor_cycling /
outdoor_cycling / indoor_run / outdoor_run).
- Date and start time.
- Duration in seconds.
- Distance in metres.
- Title (auto from device if not set).
- Source format (fit / tcx / gpx) and device name.
Heart rate
- Average HR and max HR.
- Plus optional HRV (RMSSD and SDRR) from devices that
measure it.
Bike-specific
- Average / max / normalized power.
- Intensity Ratio (IF) = AdjP / FTP.
- Average cadence.
- Average / max speed.
- Total calories.
- Avg temperature.
- Elevation gain / loss.
- MMP curve (Mean Maximal Power across all durations),
stored as JSON.
- Power zone seconds (time in each Yousuli power zone),
stored as JSON. See
Glossary: zones.
- Pedal metrics (if dual-side power meter): L/R balance,
torque effectiveness, pedal smoothness, power phase data.
- Total work in kJ.
- Electronic shifting data: gear changes, gear time
distribution, average front / rear gear and gear ratio
(if Di2, eTap, etc.).
Run-specific
- Average / max cadence (steps per minute).
- Stryd or Garmin running dynamics when present:
- Form power and air power (Stryd).
- Leg spring stiffness (Stryd).
- Ground contact time, vertical oscillation, vertical ratio,
stance time, stance time balance, vertical oscillation
balance.
- Stride length.
- Impact loading rate, leg spring stiffness balance.
- Impact Gs.
- Stryd environment data (temperature, humidity).
- Training effect (aerobic + anaerobic) when Garmin
provides it.
Swim-specific
- Pool length (m).
- Average stroke rate (strokes per minute).
- Average distance per stroke (DPS) in metres.
- SWOLF (swim golf score, stroke count + duration per
length).
- Total strokes.
Advanced physiology (when sensors attached)
- SmO2 (muscle oxygen) and THb (total hemoglobin).
- VO2 (continuous, from a metabolic device).
- Breathing rate and tidal volume.
- FeO2 (expired oxygen fraction).
- Core temperature and skin temperature.
GPS
- Has GPS flag.
- GPS track (JSON) and bounding box for map rendering.
Training load (auto-computed)
- Load with method selected by priority: power → speed/pace
→ HR. Plus a tss_override field for manual coach
override. See
Load computation and override.
- Intensity Ratio (AdjP / FTP).
Data quality
- Quality flags (JSON list of auto-detected issues).
- Needs review flag for activities with anomalies. See
Activity quality flags.
Per-lap data
Every lap from the FIT file becomes an ActivityLap row with:
duration, distance, average and max power, normalised power,
average and max HR, average cadence, average and max speed.