Where the eleven minutes went

Two swims from the same point west of Aquatic Park, due east into the cove, two weeks apart. Same route, same water temperature, and the same stroke rate to within a tenth of a stroke per minute. One took forty-seven minutes; the other took fifty-eight.

2
Swims compared
2.0 km
Due east, both
14 days
Apart
0.1
Stroke-rate gap, spm
10:48
Time gap
AQUATIC PARK START FINISH 30 May 13 Jun 500 m · TRUE SCALE, BOTH AXES EAST →
Both swims, from the GPS traces. They start 60 m apart and finish 20 m apart, running due east on a bearing of 90°. The last fifth is inside the Aquatic Park breakwater — which turns out to be the most useful part of the swim.

The controlled variable

27.5 / 27.4

Strokes per minute, 30 May against 13 June. Identical to within a tenth, and flat across both swims — no segment in either falls outside 26.9 to 29.0.

Effort was held still without anyone intending to hold it still. That is what makes the eleven minutes attributable to something.

The uncontrolled one

286

Extra strokes on 13 June, for 89 m more distance. Metres per stroke fell from 2.108 to 1.784.

At the same cadence, distance per stroke is the water plus the swimmer. The study is about telling those two apart.

Side by side

The same swim, twice

Nothing in the setup differs enough to matter. Two weeks apart, the same hour of the morning, water within 0.2 °C.

 30 May13 Jun
Distance2,742 m2,831 m
Time47:1258:00
Pace103 s/100 m123 s/100 m
Speed over ground0.968 m/s0.814 m/s
Stroke rate27.5 spm27.4 spm
Strokes1,3011,587
Metres per stroke2.1081.784
Water14.8 °C15.0 °C
Where the gap opened

Two-thirds of it went in three segments

13 June was slower in all ten segments, but not evenly. It tracks within about 10% through the first half, then loses a quarter of its speed for three consecutive stretches roughly 1.1 to 1.6 km in.

0.6 0.8 1.0 1.2 SHELTERED WHERE IT WAS LOST 30 May 13 Jun 1 2 3 4 5 6 7 8 9 10 TENTH OF THE SWIM, WEST TO EAST m/s
Speed over ground by tenth of the swim, west to east. Closest at segment 4 (−6%); widest at segment 8 (−26%). Both swims fall off the same cliff at segment 9, where the breakwater begins.
Segment30 May13 Jun13 Jun is
1 0.9920.906 -8.7%
2 1.1030.914 -17.1%
3 1.0970.986 -10.1%
4 1.1981.122 -6.3%
5 1.2101.066 -11.9%
6 1.1830.881 -25.5%
7 1.0000.754 -24.6%
8 1.2250.901 -26.4%
9 — sheltered 0.7510.636 -15.3%
10 — sheltered 0.7430.640 -13.9%
Each swim against itself

One held on and fell off; the other faded from the middle

-30% -20% -10% +0% +10% +20% +11% 30 May +24% 13 Jun 1 2 3 4 5 6 7 8 9 10 AGAINST THAT SWIM’S OWN MEDIAN
The same two swims with the day's conditions divided out — each segment against that swim's own median. The shapes are not the same shape.

30 May ran flat and fast, peaking at segment 8, +11% above its own median, with one isolated dip at segment 7 between two of its best stretches. Then it fell 32% in the final fifth.

13 June peaked early and much harder — segment 4, +24%, the sharpest single stretch in either swim — and then slid continuously: −3%, −16%, 0%, −30%, −29%. It spent its best water early and had nothing after the middle.

The control that was already there

Both swims lose 36% at the breakwater

The final 500 m sits inside Aquatic Park, sheltered from the tide. Both swims slow by the same 36% on entering it, at unchanged stroke rate — so that stretch is a same-day, same-route measurement of speed without the current.

 30 May13 Jun
Open water (segments 2–6)1.159 m/s0.993 m/s
Sheltered (segments 9–10)0.746 m/s0.638 m/s
Implied current assist0.80 kn0.69 kn

Of the 0.166 m/s gap in open water, 35% was the current and 65% was the swimmer.

Both mornings carried a real push — around three-quarters of a knot eastward, which is roughly half the speed over ground in the middle of each swim. 30 May had a little more of it. But most of the difference was not the tide: in sheltered water, where the tide is not a factor, 30 May was still 17% faster at the same cadence. Its metres per stroke there was 1.607 against 13 June's 1.379 — and 1.379 is almost exactly the 2026 median for swims inside the cove.

This rests on an assumption that cannot be checked from the data: that the sheltered stretch is equally current-free on both days, and that fatigue does not contaminate it. 13 June reached the breakwater eleven minutes deeper into the swim. NOAA publishes tidal-current predictions for this stretch of the bay; with them, the split above becomes a measurement instead of an inference.

Why it matters

Raw pace is close to meaningless here

103 s/100 m against 123 s/100 m reads as a 19% difference in performance. Most of it is not performance, and a naive log would record 30 May as a breakthrough.

This is the case that current-normalised comparison exists for. The tooling is open at dhk/plumbline, which compares an athlete against their own record and nothing else — the two swims above are the whole argument for why that record has to be corrected before it means anything.

Method

Two swims, 2026-05-30 09:01 and 2026-06-13 09:00, San Francisco Bay. Whole-swim figures come from a local Apple Health export; routes from the Strava reduced polylines for the two activities; segment figures from the within-swim profile, ends trimmed 100 yd and the remainder split into ten equal-distance segments — equal distance rather than equal time, because equal-time bins give a slow stretch more weight for being slow. Speeds are speed over ground. Open-water GPS is sparse, so distances are approximate; both swims are measured the same way on the same device, so the comparison holds even where the absolute numbers do not.