---
title: Can't get swim pace targets to display as min/100m — Intervals.icu UI hardcodes min/km, Garmin shows km/h
date: 2026-08-14
tags: [garmin, intervals-icu, fit, swim, structured-workouts, triathlon]
type: fail
status: open
reproducible: false
---

# 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.
