Blog › 31 August 2026

Kite tracks across the water — every session mapped and measured

Your sessions, all in one place — Apple Health, GPX and everything after

Monday 31 August 2026 — London Kitesurfers — by Alan Jay

Most of us already log sessions somewhere. A watch writes a workout, an app draws a squiggle on a map, and three months later you have twelve squiggles in four apps and no idea which day was the windy one.

The LKSA session log is the one place they all land, and the one place that knows what the wind was doing while you were out.

Three ways in

A session arrives from Apple Health, from a GPX file, or you type it in by hand.

On iPhone, Health is the shortest path. Give the app permission to read workouts and the Add menu offers Import from Apple Health (12 months) and Import ALL from Apple Health. There is an opt-in auto-import too, which picks up new workouts as they land so the log fills itself.

Health has no kitesurfing category — Apple files kite, wind and wave under one “surfing sports” bucket, and plenty of trackers use the generic water-sports one instead. The app reads both, so a Woo, Garmin or Hoolan workout lands beside an Apple Watch recording.

The universal route is a GPX file: Woo, Surfr, Zef, Hoolan, Garmin, Strava and anything else that exports a track with timestamps. Pick several at once — the importer works through them file by file and tells you what it found in each, rather than swallowing the batch silently. Files are fingerprinted, so importing the same GPX twice does nothing.

There is no Strava connection, though — Strava is a place you export a GPX from, and a place you can send one back to. The app has no account link of its own, because it has no accounts at all.

What happens to a file when it lands.

It gets split into sessions. A gap of more than 15 minutes ends one session and starts another, so a file covering ride, lunch, ride becomes two entries rather than one four-hour lie. Scraps under a minute, or under five fixes, are dropped as GPS drift.

Nonsense gets thrown away. A leap between fixes implying more than 150 km/h is a bad fix, not you, so it can’t set a false top speed.

It gets matched to a spot. The track’s centre is compared against the LKSA spots and filed under one if it lands within three kilometres — deliberately tight, so a Camber session doesn’t get attributed to a beach on the other side of the marsh.

The Analysis view

Every session with a GPS track opens on Analysis, Details one tap away. The track is drawn on a map with your runs coloured, and tapping a run or a turn in the list below highlights it and frames the camera on it. All of it is computed on your device.

Runs and turns. You count as riding above 6 knots and stop below 4; a run ends when your heading wanders more than 45° off its rolling ten-second average, and has to last 15 seconds and 50 metres to count. The gaps between runs are your transitions, each scored as carried speed (you came out above 5 knots), completed, or stopped — and classified tack or gybe by whether the turn crosses through the wind or away from it.

The speed ladder. Peak, best 2 seconds, 5×10 seconds, best 100 m, 250 m, 500 m, the nautical mile, an hour figure when the session is long enough, and Alpha 500 — your best 500 m starting and finishing within 50 m of itself, so it must contain a turn. All from raw speed readings, unsmoothed.

Technique. Planing time as a share of active time. Port and starboard runs with their average speeds, and a blunt note about which of your tacks is the weaker one. Net metres gained upwind or lost downwind, and how your distance splits between upwind, reaching and downwind.

A wind estimate from the track alone. Your run headings form two clusters; the wind sits on the bisector, and which of the two it is gets settled by which way you drift while you’re not planing. You get a direction, a tacking angle and a confidence percentage — and a plain warning when confidence is low.

Jumps are honest to a fault. Heights come across only when the source file carries them — Woo, PIQ, Rewind and some Surfr exports. The app’s own detector finds jump candidates from the downwind pendulum in your heading, marks them experimental, and never estimates a height: against IMU ground truth, no GPS feature predicts jump height well enough to print a number.

Any session can be shared as an image — a summary card, or something more designed in the share studio.

On the water means on the water

“On the water” is now measured from your first run to your last run, with the full recording length in brackets after it. Rigging on the beach with the watch already going no longer counts as riding. A smaller number than you are used to, and a truer one.

Where a workout came in from Apple Health with heart rate, you get average and max on the session too. On a Mac that arrives synced from the iPhone, since macOS has no Health store of its own.

The wind on the day you rode

This is the bit only we can do: every session is paired with the archived wind for the day and hour you were out. Not today’s forecast, not a number you half-remember.

The lookup goes down a ladder: a reading already cached on one of your devices, then the LKSA wind archive for the matched club spot, then the Open-Meteo archive by latitude and longitude — which covers anywhere on Earth. So a Dakhla session in February gets a wind figure the same way a Greatstone session in August does.

The honest limit: it is a model reading for the hour your session started, not an anemometer on the beach, and not the strongest gust of your afternoon. The app labels where each figure came from — app forecast, historical archive, or manual entry if you typed it. Type a number in yourself and it shows the archive’s figure in brackets beside it.

“22 km, 1h 40m” tells you very little. “22 km in 14 knots” and “22 km in 26 knots” are two entirely different afternoons.

The days you forgot to press record

Which is most of the good ones. Add a session by hand: start time, time on water, a spot from the LKSA list or any name you like, wind and direction, notes, best jump, photos. There is no distance or top-speed field — a manual entry has no track, and the app would rather show you nothing than a made-up ladder.

Everything is editable afterwards. Wrong spot, a name your watch invented, a duration that doesn’t match the recording — fix it and the totals follow. There is a bulk rename for when the same generic name got stamped on thirty rows, and an auto-namer that reverse-geocodes unnamed sessions in one pass or one at a time.

A session under five minutes, or with no coordinates at all, still appears in the list — with a small Hidden — too short or Hidden — no GPS pill — but doesn’t add to your totals.

The same ride, twice

If your watch writes to Health and you upload the GPX, one afternoon arrives twice. Sessions are grouped as duplicates when they share a day, start within 20 minutes of each other, sit within 2 km or carry the same name, and their distances agree within 25%.

What happens next is the useful part: the app shows you the group and lets you pick which copy is primary. Only the primary counts toward stats; the others stay for reference, dimmed in the list. Set a ranked list of your recording apps once and it decides for you.

Workouts logged through a trip used to duplicate themselves. They don’t any more, and existing ones repair themselves on launch.

The view across all of it

Filter by year, country, spot or wind band, and the Overview — new in version 2.1 — gives you days on the water, sessions, time on water, total and average distance, average and top speed, longest session, windiest session, most-visited spot and best jump — the record rows tapping straight through to the session that set them.

Insights takes the long view: sessions and distance by month and by year, your best speed month by month, a wind-band breakdown labelled with the kite you ride in each band, your most-ridden spots, and your most-visited countries and continents.

Then the world map — every located session as a pin, filterable by year, continent and wind. A surprisingly good thing to look at in February.

And if you rode somewhere that isn’t on the map at all, the app will build spots out of your own sessions: it clusters your GPS start points, skips places you already have a spot within 5 km of, and walks you through the rest one at a time with a movable pin. There is a whole post on community spots if that is the part you want.

Housekeeping

Years of tracks add up. Session tracks and photos are now stored about 85% smaller — tracks compressed, photos capped at 2048 pixels with their EXIF and GPS intact. New sessions get this automatically; the one-tap Compact Storage in Settings → Diagnostics shrinks your existing log, on the device and in iCloud. Update your other devices first, then run it once.

Sync you can see. Settings → Diagnostics shows the last upload to and download from iCloud, with the timestamp and, if one failed, the exact error. This exists because exports once failed silently for weeks and nothing in the app ever said so.

Where all this lives

On your device. The track is parsed on your phone or Mac, the analysis is computed there, and the log syncs only between your own devices through your own private iCloud database. There is no LKSA session server and nothing to sign up for: no LKSA account, no LKSA login, no ads, no tracking. The only thing that goes over the network is a request for archived wind at a place on a date.

The Mac has all of it except Apple Health, which Apple doesn’t provide on macOS — GPX import and iCloud sync cover the gap. In return it gets a pop-out session map in its own window, which you can drag as big as your screen and actually look at.

Import a season’s worth of old GPX files one wet evening. It takes five minutes and you will learn something about yourself — probably that you only ever go out in cross-onshore 18 knots. The session log is in the iPhone, iPad and Mac app, and a good part of it in the web app too. Anything looking wrong in your log, the usual WhatsApp channels.

See you on the beach.

← Back to blog    More about the apps →