Thanks for the reply. Here’s the evidence with screenshots:
The issue persists with every workout, but here is a concrete example. I did a 6/3/3/1/1/1 minute ladder with 2-minute rests. The FIT file has 11 laps with lap.intensity values (active vs rest). I have both “Use laps for intervals” and “Keep all laps” enabled in the settings, yet Intervals.icu shows completely wrong intervals.
What the FIT file contains:
| Lap | Intensity | Duration | Avg Pace |
|---|---|---|---|
| 1 | active | 6:00 | 2:00 |
| 2 | rest | 2:00 | — |
| 3 | active | 3:00 | 1:57 |
| 4 | rest | 2:00 | — |
| 5 | active | 3:00 | 1:58 |
| 6 | rest | 2:00 | — |
| 7 | active | 1:00 | 1:46 |
| 8 | rest | 2:00 | — |
| 9 | active | 1:00 | 1:48 |
| 10 | rest | 2:00 | — |
| 11 | active | 1:00 | 1:47 |
What Intervals.icu shows:
- Work intervals: 8m2s, 4m56s, 2m57s, 2m3s, 2m58s, 2m56s, 55s.
- Recovery: 1s, 2s, 4s, 2m3s, 2s, 4s
The 2-minute rests have been collapsed to seconds, and the work intervals have absorbed almost all the rest time. My 6-minute interval became 8m2s.
The Concept2 PM5 record resolution is per-stroke. During rest, there are almost no records (2-4 messages per 2-minute rest, with many metrics like HR not being written at all). When Intervals.icu ignores the lap boundaries and infers intervals from record density, the sparse rest records get merged into adjacent work.
Here is what it should look like:
This pace chart from a tool I coded shows the gray rest bands at exactly the right positions and duration. The lap structure in the FIT file is correct, it’s just not being honored.
The ask:
When “Use laps” is enabled for Concept2 FIT files, I just want the actual lap boundaries imported and lap.intensity field respected. It already comes correct from PM5 computer. The data is already there, it just needs to be read instead of inferred.
Happy to share the FIT file if that helps debug.

