GFGPXFIT

Pauses in FIT files: what 36 real recordings show

Devices record every pause as timer events rather than as gaps in the track. We measured how often FIT files record a pause and what happens when a tool ignores it.

From the 36 recordings we measured, 9 had at least one stop and restart. A tool that ignores the events over-counts your distance by up to 3.16% and shows an elapsed time far above your moving time.

9 of 36
recordings with at least one stop and restart
25%
of real device files, in a corpus that leans toward odd files
54
segments in the most-paused ride
3.16%
largest distance over-count from ignoring the pauses

Where a FIT file keeps its pauses

A GPX file marks a break in the recording with a second <trkseg>. It's in the structure; any parser sees it. FIT does something different. When you press stop, the device stops writing position records and writes a timer event into a separate message stream. When you press start, it writes another one and carries on writing records.

So the records either side of a 20-minute cafe stop sit next to each other with nothing between them. A tool that reads records alone sees one continuous ride and draws a line from the cafe door to wherever you restarted. The pause exists only in the events, and you have to read them to know it was there.

What the 36 files say

9 of the 36 real device recordings had been stopped and restarted at least once, about 25%. Among those 9, the median number of restarts is 5, and three files sit far above it: two Garmin Edge 500 rides with 28 and 46 restarts, and a Wahoo ELEMNT ride with 55.

The Wahoo ride is the extreme case. Over 349.5 minutes of wall clock it sat stopped for 168.7 of them (about 48%), with one stop of 42.2 minutes, and the parser splits it into 54segments. The file is intact. The device did what auto-pause or a rider's thumb told it to, 57 times.

The distance effect is small but always in one direction. Reading the records flat charges you for the straight line across each gap. Across the 9 paused files the over-count runs from 0% to 3.16%. The worst case is a Coros Pace 2 ride stopped for 24 minutes with one 11.4-minute break: 33.1 km read flat, 32.05km with the pauses honoured. A stop where you don't move costs nothing either way; a stop where you drive, walk or ride somewhere before restarting is where the two numbers part.

Almost every file carries at least one timer event. 34 of the 36 write a final stop when the activity ends, so a parser can rely on the event stream existing. 2files carry no timer events at all (one from the IpBike Android app, one Suunto cross-country ski file), and for those there is nothing to read: if a pause happened, the file doesn't say.

One quirk worth knowing: a restart doesn't always produce a new segment. 3 of the 9 paused files have fewer segments than restarts. In two of them the device restarted and stopped again before it wrote a single position record. The third carries one stray timestamp, a 2015 date inside a 2013 ride, and the parser, which only walks forward through the boundaries, crosses several of them at that point rather than guessing where they really fell. The Wahoo file also has 2 segments that contain exactly one point. GPXFIT keeps those rather than collapsing them, since the device really did stop the timer and a threshold would be a guess dressed up as a fact.

The 9 recordings with a pause

Recorded time is first record to last. Stopped time is every stop event paired with the start that followed it. Over-count is the distance read flat minus the distance with pauses honoured, as a share of the flat figure.

DeviceSportRecorded minStopsSegmentsStopped minLongest stopOver-count
Wahoo ELEMNTcycling349.55754168.742.22.01%
Garmin Edge 500cycling211.5484734.117.50.11%
Garmin Edge 500cycling188.9302717.36.40.08%
Garmin Edge 200cycling27.1761.10.40.19%
Coros Pace 2cycling211.5662411.43.16%
O-Syncecycling110.6656.340.02%
Garmin Edge 500cycling117.61243.91.80.05%
Garmin Edge 510cycling54.84410.60.08%
Garmin fenix 5Xmultisport845.3120.10.10%

Download the full table as CSV (38 rows, one per file that decoded with GPS, including the 2 synthetic SDK samples that are excluded from the counts above).

What this means for your file

If you merge FIT files with GPXFIT, the pauses inside each file survive the merge as separate segments, and the join between files is a segment boundary too. Distance is summed per segment, so the gap is a gap. The output is GPX, which has a place to put that structure.

If you open a paused FIT in the File Inspector, the distance it reports honours the pauses. Expect it to sit a little under the number a tool that reads records flat would give you, by the margins in the table. The device's own summary distance is a third number again, since head units count wheel or GPS distance as they go rather than recomputing it from the saved points.

If you're merging GPX rather than FIT, the GPX merger keeps each file's existing segments, so a pause your device already wrote as a track segment stays one.

Method

The files are the public FIT test fixtures of three open-source projects: python-fitparse, GoldenCheetah and fit-parser. None of them came from GPXFIT users; nothing you drop into a GPXFIT tool is stored or seen by anyone. The corpus has 68 FIT files. 30 have no GPS records or fail decoding (indoor sessions, settings files, deliberately corrupted fixtures), which leaves 38. 2 of those are Garmin SDK example files no device wrote, so the counts on this page use the remaining 36.

Every file was decoded with the same code path the site runs in your browser: Garmin's official FIT SDK, then GPXFIT's parser, which reads the timer events, treats any stop or stopAll followed by a startas a restart, and splits the records there. A script in the site's repository (scripts/fit-pause-data.ts) walked the corpus and wrote the CSV above and the numbers on this page. Nothing here was typed in by hand, and the page is regenerated from the script, not edited.

Limits, stated plainly. 36files is a small sample, and it isn't random: people contribute a file to a parser's test suite because it broke something, so the corpus leans toward odd recordings. The 25% figure describes this corpus, not Garmin owners in general. The data can't tell an auto-pause from a button press either; both write the same events. And the manufacturer spread is thin outside Garmin: 23 Garmin files, then 1 or 2 each from Wahoo, Coros, Suunto, Stryd, Hammerhead, Sigma, O-Synce, Zwift and IpBike.

Generated 2026-09-08. If the parser or corpus changes, the script is re-run and this page changes with it.

Frequently asked questions

Does my Garmin record when I pause?
Yes. When the timer stops, a Garmin, Wahoo or Coros device writes a stop event into the file's event stream, and a start event when you resume. The position records either side sit next to each other; the pause lives only in the events. 34 of the 36 recordings here carry timer events, and 2 carry none at all.
Why is my elapsed time so much longer than my moving time?
Because elapsed time includes every stop and moving time doesn't. The most-paused ride here, a Wahoo ELEMNT, sat stopped for 168.7 of its 349.5 minutes, about 48%. Both numbers are correct; they answer different questions.
Why does my ride show a straight line across a gap where I stopped?
The tool that drew it read the position records and skipped the timer events, so it joined the last point before the stop to the first point after it. A tool that reads the events starts a new segment at each restart instead, and the gap stays a gap.
Why is my distance different between apps?
Partly pauses. Reading the records flat charges you for the straight line across every gap. Across the 9 paused recordings here that over-count runs from 0% to 3.16%. A stop where you didn't move costs nothing; a stop where you walked or drove before restarting is where apps part ways. The device's own summary distance is a third number, counted as you rode rather than recomputed from the saved points.
Do pauses survive converting a FIT file to GPX?
In GPXFIT, yes: each restart becomes a new track segment in the GPX, which is the format's own way of marking a break. Whether another converter keeps them depends on whether it reads the timer events, and this data doesn't measure other tools.
How long is a typical stop?
It depends on the ride. In 6 of the 9 paused recordings the average stop is under a minute, the length of a junction or a traffic light. In 2 it is 3 to 5 minutes, the length of a cafe or a mechanical. The longest single stop in the set is 42.2 minutes. The file can't say whether auto-pause or a button caused any of them; both write the same events.