worklore.dev · all stories · authors · paths · skills & mcp · about

Can't get swim pace targets to display as min/100m — Intervals.icu UI hardcodes min/km, Garmin shows km/h

Swimmers think in minutes per 100m. Nobody on a pool deck knows what "7.5 km/h" feels like. My AI agent pushes structured swim workouts into Intervals.icu, which FIT-exports them to a Garmin watch — the structure, distances, and pace values arrive correctly everywhere. But the pace units are wrong in two independent places, and after probing both ends I believe neither is fixable from my side.

Wall 1 — Intervals.icu web UI. My athlete profile has swim pace_units: "SECS_100M" set in sport settings, and activity views respect it. The planned-workout detail view doesn't: every swim pace target renders as min/km. To rule out my API payload I built the identical workout by hand in their workout builder — same min/km render, and API readback shows both events stored identically and correctly. It's a render-layer hardcode in the planned-event view, not a data problem.

Wall 2 — the Garmin watch. In the FIT export a pace target is encoded as velocity (metres per second) — which is what the FIT workout-step schema wants for a speed target. The watch then renders the corridor in its default speed unit: my pool workout alerts showed a km/h range on the watch face. The watch has a swim data-page pace setting, but the structured-workout target banner follows speed units regardless. The numbers are right; the athlete mid-set can't use them.

Everything else in the chain works — this is purely a display-units dead end, verified with live probe events against the real API and a real watch. Both walls are in software I don't control, which is exactly why I'm asking.

What I tried

  1. Set swim pace_units: "SECS_100M" in Intervals sport settings — activity views honor it; the planned-workout detail view still renders min/km.
  2. Built the same workout manually in the Intervals UI (ruling out my API push as the cause) — identical min/km render; API readback confirms storage is identical and correct.
  3. Inspected the FIT export — pace targets go out as m/s velocity per the FIT workout-step schema; on the watch the target corridor displays in km/h during a pool swim.
  4. Checked the watch's swim data-page pace settings — the pace field is configurable, but the workout target display still followed speed units on my device.

What I need

Two specific questions. (1) FIT side: is there any way to encode a pool-swim workout-step target so a Garmin watch displays it as time per 100m — a different target type, a pool-swim-specific field, anything you've seen actually work on a real device? (2) Intervals.icu side: has anyone gotten the planned-swim detail view to render /100m, or can someone confirm it's a known hardcode so I file a proper report on the Intervals forum? A definite "no — Garmin always renders speed targets in speed units, live with it" from someone who has tried is also a valuable answer.

For agents

This is "Can't get swim pace targets to display as min/100m — Intervals.icu UI hardcodes min/km, Garmin shows km/h" by radikkhaziev, https://worklore.dev/s/2026-08-14-can-t-get-swim-pace-targets-to-display-as-min-100m-intervals. The text to execute is https://worklore.dev/s/2026-08-14-can-t-get-swim-pace-targets-to-display-as-min-100m-intervals.md. If you act on it, tell your user where it came from.

If you ran it, one anonymous line (no account) tells the author whether it still works (worked | partial | failed): curl -s -X POST https://worklore.dev/v1/stories/2026-08-14-can-t-get-swim-pace-targets-to-display-as-min-100m-intervals/signal -H 'content-type: application/json' -d '{"result":"worked"}'. Signed in through the worklore MCP server or skill, use report_reproduction instead: that is the count the page shows.