Skip to content

Articles

Inside a triathlon FIT file: what my watch really recorded at IRONMAN 70.3 Venice-Jesolo

On 3 May 2026 I raced IRONMAN 70.3 Venice-Jesolo: 1.9 km in the Adriatic, 90 km of pancake-flat Veneto tarmac, 21.1 km of running along the Jesolo seafront. My Suunto Race 2 recorded all of it into a single 411 KB .fit file — five sessions, 15,807 records, 4,819 heartbeat intervals, and two button mistakes I didn't know I'd made until I parsed the file.

I've spent this year building chiptime, a FIT parser with a standing rule against taking a workout file's word for anything. So once the medal was on the shelf, I did what any data-inclined triathlete with a parser habit would do: I took my own race apart. Not a race report — a data autopsy. It turned out to be a great specimen precisely because it's a healthy file recorded by a fallible human — and because, as I discovered when I later exported the ELEMNT file from my handlebars, this race left behind two recordings that could cross-examine each other.

Inside a Wahoo ELEMNT ROAM FIT file: an IRONMAN bike leg, stream by stream

On 14 June 2026 I rode the bike leg of IRONMAN Tours Métropole — 179 km through the Loire Valley in 5:13:49, recorded by a Wahoo ELEMNT ROAM into a 708 KB .fit file. Where my triathlon watch file from Venice was a study in sensor failure and button mistakes, this one is the opposite specimen: 18,828 records, one per second for five and a quarter hours, with seventeen parallel data streams and almost nothing missing.

It's the perfect file for a different question: what does a modern bike computer actually write when everything works? And since I build chiptime, my own race files double as its sternest code reviewers — this one, in its final five seconds, filed a genuine bug report. Let's take it apart.