CSV export columns explained
RitmoSync is built for riders who want their data, not a walled garden. The free tier shows live zones and session stats on screen. Pro unlocks export — and RitmoSync gives you both the raw 1-second stream and pre-built summaries for every 30-second block and FTP zone section: distribution stats (median, quartiles, min/max), Ritmo Power, and Ritmo Intensity across power, cadence, speed, and resistance. This guide explains every column.
Raw data and windowed aggregates
Many training apps stop at a FIT file or a single average per lap. RitmoSync Pro offers three CSV layers from the same session:
- Raw — 1-second samples (power, cadence, speed, distance, resistance) for your own scripts or spreadsheets
- 30-second windows — one row per half-minute with full distribution stats, not just one average watt number
- Zone sections — one row per time you spent in Z1–Z7, with the same depth plus zone bounds and distance
You do not have to choose between raw data and aggregated analysis — export the stream, the windows, or both. FIT remains available for upload to Strava and TrainingPeaks.
Three CSV formats
After a workout, open Training history (Pro) or the post-ride summary and choose one of:
- Export 1s CSV — one row per second of recorded samples. Raw stream for spreadsheets, Python, or your own analysis.
- CSV 30s — one row per 30-second block of the ride, with full distribution stats for each metric.
- CSV by zone — one row per FTP zone section (Z1–Z7) you spent time in, with the same deep stats plus zone bounds.
FIT export is separate — second-by-second records for Strava and TrainingPeaks, with session-level Ritmo Power and Ritmo Intensity when FTP is set. See FIT export to Strava and Ritmo Power indoors.
Stats used in 30s and zone CSVs
Power, cadence, speed, and resistance each get the same set of summary columns (with unit suffixes like _w or _rpm):
| Column suffix | Meaning |
|---|---|
avg |
Arithmetic mean over all samples in the block or zone. |
max |
Highest value seen, including zeros if the trainer reported 0. |
min |
Lowest value seen, including zeros. |
min_nz |
Lowest non-zero value — useful when coasting reports 0 watts but you want “lowest pedaling effort.” |
median |
50th percentile — half the samples are below this value. More stable than average when you soft-pedal mid-interval. |
q1 |
First quartile (25th percentile) — 25% of samples are at or below this value. |
q3 |
Third quartile (75th percentile) — 75% of samples are at or below this value. The spread between q1 and q3 is your interquartile range. |
Quartiles are computed from the actual per-second samples inside each block or zone — not estimated from average power alone. That is why a 30-second CSV row can tell you whether you held steady watts or surged and recovered within the same half minute.
Ritmo Power and Ritmo Intensity
During and after a ride, each zone block on screen shows R. PWR (Ritmo Power) and R. Int (Ritmo Intensity). These are RitmoSync’s effort-weighted power metric and its ratio to FTP.
-
Ritmo Power (
ritmo_power_w) — rolling 30-second average of your watt stream, raised to the fourth power, averaged, then fourth-rooted. Surges count more than the same average ridden smoothly. For short zone sections, the window shrinks to match the section length (minimum 1 second of samples). -
Ritmo Intensity (
ritmo_intensity) — Ritmo Power ÷ FTP. A value of 0.85 means the section felt like 85% of threshold. Set FTP in the menu for accurate numbers.
Both columns appear in 30-second and zone CSV exports (blank when FTP is unset or the block is too short for a valid Ritmo Power window). FIT export includes session-level Ritmo Power and Ritmo Intensity in the session record when FTP is set. The 1-second CSV does not include these — they are rolling effort metrics, not instantaneous watts.
1-second CSV columns
File name pattern: samples-1s.csv. One row per recorded second.
| Column | Description |
|---|---|
elapsed_sec |
Seconds since session start (integer). |
power_w |
Instantaneous power in watts from the trainer. |
cadence_rpm |
Crank cadence in revolutions per minute. |
heart_rate |
Heart rate in bpm when a strap is paired (blank if unavailable). |
speed_kph |
Reported speed in km/h (trainer simulation). |
distance_m |
Cumulative distance in meters from the trainer, when reported. |
resistance_level |
Trainer resistance level when the device exposes it over FTMS. |
30-second CSV columns
File name pattern: interval-summary.csv. Blocks are aligned to elapsed time from session start.
| Column | Description |
|---|---|
interval_index |
1-based index of the 30-second block. |
start_sec / end_sec |
Elapsed time window for this block (seconds). |
distance_m or distance_miles |
Distance covered inside this block only (metric or imperial per app setting). |
accumulated_m or accumulated_miles |
Total distance from session start through the end of this block. |
Plus all power, cadence, speed, and resistance stat columns listed above
(power_avg_w, power_median_w, power_q1_w, power_q3_w,
ritmo_power_w, ritmo_intensity, … through resistance_q3).
Zone (section) CSV columns
File name pattern: zone-summary.csv. One row per FTP zone you rode in during the session.
| Column | Description |
|---|---|
zone_index |
1-based order the zone appeared in your ride. |
zone |
FTP zone number (1 = recovery … 7 = neuromuscular). |
duration_sec |
How long you spent in this zone segment (seconds). |
zone_min_w / zone_max_w |
Lower and upper power bound for this zone based on your FTP (or display range if FTP is unset). |
distance_m |
Distance covered while in this zone segment. |
Plus the same power, cadence, speed, and resistance distribution columns as the 30-second export
(including ritmo_power_w and ritmo_intensity).
Use this file to compare how steady you were in Z2 vs Z4, or to chart quartile spread across a workout’s intensity changes.
Why so many columns?
A FIT file carries the ride for platforms like Strava. A lap export might give you one average per interval. RitmoSync’s CSV goes further: the 1-second file is your raw stream, while the 30s and zone files ship ready-made windowed aggregates — median, quartiles, Ritmo Power, and more — so you can analyze pacing without writing percentile code first.
That combination — raw plus windowed stats in standard CSV — is uncommon at this depth, especially behind a one-time Pro license rather than a higher subscription tier.
Typical uses: paste the 30s CSV into a spreadsheet to chart median vs average power per block; filter the zone CSV for time-in-zone validation; feed the 1s CSV into Python or R for custom analysis.
Export your next ride. Train free, upgrade to Pro when you want history and files.
Open web app — free Get Pro