Bug: Swim imports from FORM Smart Swim Goggles via Strava show wrong intervals/graphs

Hi,

I noticed that pool swims recorded with FORM Smart Swim Goggles don’t import correctly into Intervals.icu when synced via Strava. The same activity looks fine in Strava and in the FORM app, but Intervals.icu shows broken intervals and graphs.

What should happen (Strava/FORM):

  • Clean lap/rest structure (e.g. 50 m swim → 15–30 s rest).
  • Pool length set correctly (25 m).
  • Pace, HR, and metrics aligned to actual lengths.

What actually happens (Intervals.icu):

  • Intervals split incorrectly (rests merged into work, some “1s recovery” intervals).
  • Pace and cadence graphs misaligned with the lengths.
  • Metrics (pace, SWOLF, strokes) look unrealistic.

Example activity (2,100 m, 2 Sept 2025):

  • Screenshot from Intervals.icu (wrong):
  • Screenshot from Strava (correct):

It looks like timer events or lap markers from the FORM files aren’t being parsed the same way Strava does.

Could this be fixed so that FORM swim imports show the same correct intervals as in Strava? I can share the original FIT/TCX files if that helps debugging.

Thanks a lot!


Hey there!

Any update on this?

Can you share the original fit file and the one imported from Strava?

Sure. As I cannot attach .fit nor .csv files, here is a Google Drive Link containing the files directly exported from the Form app and from Strava.

It is not the same workout as in the Screenshot, as I used a more recent session.

Hi!

I totally support this! Currently I have to leave intrrvald to analyse a swim.

It would be lovely if intervals would understand the laps, forms great intervals just like Strava and the original forms app does.

If this is not possible or hard via Strava (maybe Strava strips data) then I would really love a forms>intervsls.icu integration. Happy to vote on this with the forms company.

And happy to provide any files and screenshots if that helps.

Best
Thomas

I take it that when you upload Either the Strava FIT or the FORM fit, then it works properly? or is it the same?

I was looking at your fit file. I think the problem could be that it often doesn’t record every second (lots of “missing” records).

Intervals is calculating times and distances from the record section, only based on the lap markers (if you use “Use Laps”), in favor for being able to fix data. But if that lap marker second is missing in the record file, it probably is taking the next recorded second, so you end up with having laps, which have different length in calculation and in the “overview”.
Strava in comparison is only plotting the lap table from the fit file. This isn’t possible at the moment in intervals.

SWIM actually uses Length Messages (not laps). But we’ll have to wait for the OP to actualy response w/ more info

(I did quite a bit of work to support FORM swim googles integration for BreakAway: Indoor Training.)

The files are exactly the same. It is as described by @R2Tom.

Unfortunately, there are no options/configs to set in the Form Swim App and/or the Goggles.
So, you cannot choose to record every second, or change anything else related.

Yeah.. Swimming FIT files are not the same as other activities. There’s no requirement to do PER-Second data recording. Hence, the normal FIT file’s “record” category can actually be blank for (lap) SWIMs. Open Water swims will have accurate GPS based per-sec data.

Lap Swimming can have per-sec data like HR, but distance is gonna be matched to when the watch detects the wall push off.

So i did a partial dive on the data and this is what I believe is happening. Intervals.icu is using the FIT’s record (Per sec) data and trying to interpret this as open water swim (i tried changing swim → open water > swim and also ticking “trainer” and also “ignore pace/velocity → reanalyse” but nothing much changed)


From the 2 screenshots above, Intervals.icu is interpreting the 1st 7secs (12:12:21am → 12:12:30) as recovery as there’s no cadence / distance / speed

then 12:12:32 → 12:14:17 (1m45s) as the “swim” section as there is cadence data (dropouts up to 3+ secs are handled by backfilling the data) etc etc..

long story short, there’s some work to be done for swim activities. The proper way to interpret indoor lap swims is to look at the LENGTH data rather than per second RECORD data.

@david FYI and let me know if I’m off the mark.

Same problem here.. did you find any solution? I upload the strava file every time

I want vote this up aswell. I am using Form and the data looks excellent in the FORM app and Strava. I would be really valuable to have this show properly in intervals. I have a coach that looks into intervals.icu and from there the data is really not helpful.

I am sure the guys at FORM have an interest for it to show up properly in intervals. So if they can do a small change in the file so it shows perfectly here, they may just do that. Alternatively is there a way to reformat the file? Strava seems to be able to take the data and show it nicely.

Do you have the same issues syncing directly from Form to Intervals using the relatively new API?