Methodology
Every number on this site, traced to its source. The data pipeline, the assumptions made, and the limits of what it can show.
Data sources
Three sources feed every page on this site:
Apple Watch
Worn during the race in a Mixed Cardio workout session. Captures heart rate (optical sensor), step cadence (accelerometer), active energy, and walking/running distance. Sample rates and accuracy vary by metric — see the next section.
Health Auto Export (iOS app)
Used to extract Apple HealthKit data as structured JSON after the workout. This is the only practical way to get sub-minute-resolution data out of HealthKit; Apple’s built-in workout summaries are aggregate only.
Official HYROX results
Segment durations, total roxzone time, age group, and final finish time come from the official HYROX timing system (chip mat). The watch is treated as the primary measurement source for biology; the chip mat is the primary source for race timing.
Sampling resolution
Apple HealthKit samples different metrics at different intervals. For HYROX Bengaluru 2026:
All timestamps are stored in IST (UTC+05:30) with sub-second precision.
How segments are aligned
The Apple Watch provides a continuous stream; HYROX provides 16 segment durations plus a total roxzone (transition) time. Reconciling the two requires three steps:
- Race start anchored to the first HR sample after the official start (
09:50:10 IST). - Each of the 16 official segment durations applied sequentially.
- Total roxzone time (10:12 in this race) distributed evenly across the 15 transitions, roughly 41 seconds each.
Clock offset noted. Cadence-validated analysis (see the upcoming Watch vs chip-mat timing spoke) reveals an apparent ~30–60 second offset between the watch’s clock and the chip-mat’s clock during this race. This affects exact-second alignment but not the aggregate per-segment values reported on the site.
Heart rate zones
Zones are defined as percentages of a reference maximum heart rate. The reference max is set to 190 bpm for this race — one beat above the observed race peak of 189.
| Zone | % of max | BPM range |
|---|---|---|
| Z1 Recovery | 50–60% | 95–114 bpm |
| Z2 Aerobic | 60–70% | 114–133 bpm |
| Z3 Tempo | 70–80% | 133–152 bpm |
| Z4 Threshold | 80–90% | 152–171 bpm |
| Z5 Anaerobic | 90–100% | 171–190 bpm |
Why this approach
Several valid HR zone definitions exist: Karvonen (heart-rate reserve), lactate threshold-based zones, FTP-style zones for cyclists. The choice here is the simple percentage-of-max approach with the reference max anchored to observed race peak +1.
Trade-offs: it’s reproducible without requiring threshold testing, and it’s the methodology most readily applied to HYROX where lactate sampling mid-race isn’t practical. It’s less precise than a threshold-based system would be for any individual athlete. Across athletes, results are comparable only when the reference max methodology is the same.
Time-in-zone calculation
Time spent in each zone is summed only across pairs of consecutive HR samples whose timestamps are less than 60 seconds apart. This excludes the ~11-minute sensor gap during SkiErg/early Run 2 from being mis-attributed to any zone.
Calorie calculations
Apple Watch reports active_energy in kilojoules. This site converts
to kilocalories at the standard 1 kcal = 4.184 kJ.
Per-segment totals are computed by summing every active_energy sample whose timestamp falls within that segment’s start and end window.
Apple’s active_energy is an estimate. Published validation studies against indirect calorimetry put it within roughly ±10–15% for cardiovascular activity, with consistency typically poorer for resistance and strength work. Absolute total burn figures on this site should be treated as having a ±15% confidence interval. Relative comparisons between segments of the same race are far more reliable, because measurement noise is consistent within a single body’s data.
Cadence calculations
Step cadence is bucketed in 10-second windows from raw step-count samples. Each
bucket reports steps per minute (spm) as
(steps_in_window / window_seconds) × 60.
Reference threshold for “running cadence”: 160 spm. Stations typically show 50–130 spm depending on exercise type. Burpees and Sandbag Lunges trend low; Sled Push trends moderate; running consistently lands in 170–180 spm.
Known limitations
- Sensor gap during SkiErg. An ~11-minute period spanning SkiErg and early Run 2 has no recorded heart rate (likely the optical sensor lost contact during the upper-body pulling motion). This region is shown as a break in the line rather than interpolated, and time-in-zone calculations exclude it.
- Apple Watch active_energy is an estimate, not metabolic-cart measurement. See Calorie calculations above for the ±15% caveat.
- Optical HR, not chest-strap ECG. Apple’s wrist-based measurement is generally less accurate during strength work where forearm motion can fool the sensor. Most HYROX coaches consider chest-strap data the gold standard.
- Single-athlete data. Findings about this race may or may not generalize to other athletes, other body compositions, other finish times, or other race courses. Aggregate claims about “HYROX” should be read as claims about one body in one race until corroborated across more athletes.
- Roxzone is distributed evenly, not measured per-transition. Actual transitions varied in length. Aggregate roxzone time is from the chip mat and is accurate; per-transition splits are an approximation.
- Single race so far. Race-specific factors (weather, course layout, racing tactics on the day) confound generalization until more races are added to the archive.
Reproducibility & dataset access
The complete data pipeline is implemented in Python (a script called
process.py in the project repository). Inputs: HealthKit JSON export +
a small table of segment timings from the official results. Outputs: a structured
JSON file consumed directly by the Astro page templates that render the charts.
Researchers, journalists, or other athletes wanting access to the processed dataset for HYROX Bengaluru 2026 can request it via the contact details on the About page. A direct download link is planned for a future update.
How to cite this site
To cite any page on this site, the suggested format is:
Singh, Prashant. (2026). “[Page title].” subninety.club. [URL]. Accessed [date].
For the pillar race report, that’s:
Singh, Prashant. (2026). “What heart rate looks like during a HYROX race: 1,157 data points from Bengaluru 2026.” subninety.club. https://subninety.club/hyrox-bengaluru-2026/. Accessed [date].
Corrections & versioning
If you find an error in the data, the math, or the interpretation on any page, please write in via the contact on the About page. Corrections are made and noted with a dated update on the affected page.
A public errata log is in development. This methodology document itself is versioned: