Garmin FIT Files – welcomed improvements for 2023/4. Is there a downside?

Garmin FIT Files – welcomed improvements for 2023/4.

Garmin recently updated the way it stores activity data in FIT files. FIT (or ‘File Information Transfer’) files are how Garmin devices save activity data for things like runs, bike rides and swims.  The latest changes affecting 2023/ 2024 are relatively small in scope but should improve reliability.

The Problem: Garmin mandated some format changes to be made before 1 Dec 2023 but that hasn’t been done by all companies and various file format errors arise as a result when some platforms try to read FIT files.

Co-authored with: Mathias @Fit File Repair Tools.

First, Some Background

Many people think of FIT files as the standard format for storing exercise and sports data. This is largely true, but some companies like Polar still use the TCX format a lot. Sports platforms also use JSON files to talk to each other, and tools like Golden Cheetah store your data internally as JSON files.

The big advantage of FIT files is that almost everyone understands and can use them. One nice thing is that FIT files only store the necessary data, so they remain small in size. TCX files on the other hand often contain a lot of unused “dead space”.

There are other benefits to FIT files when you look under the hood. The FIT standard includes codes for different sports, devices and more. FIT files can store planned routes or workouts, and are flexible enough to handle data types like cached heart rate from swimming, multiple data points per second, and less frequent “smart” sensor readings.

However, FIT files were not always the obvious top choice. In late 2021 Garmin started a transition to the current FIT file version 2.0 across most of their new devices and services. By early 2022 most Garmin products used it, and the wider industry adopted it by the end of that year.

Now in February 2024, the FIT standard is very mature. It only receives occasional tweaks, plus continuous updates to properly record data from new Garmin sports profiles and device types.

 

Garmin FIT File 2.0 – the improvements

In the past, Garmin saved sports data in the order it was recorded during a workout or activity. So all the individual data points (“records”) would be listed first in the file in the sequence they happened. After that, it would add the lap data if you did any laps. Finally, it added information about the whole exercise session at the very end.

This old format worked fine, but it meant your device had to remember lots of details as you were exercising. It also risked losing some of your data if the battery died halfway through. This could happen because the device waited until the end to write things like the session details or lap information to the file.

So if the battery went flat before you finished, the file may have been missing things like lap splits, total time or distance. The format didn’t protect your data very well if something interrupted the recording before completion.

 

Modern FIT File Structure

Now Garmin structures the files differently. It saves the lap details and session info alongside the individual data points (“records”), rather than just at the end.

So it records the stats for lap 1, then the records from lap 1. Then the stats for lap 2, followed by those records, and so on.

This presents the activity in the order it happened, which is more logical. It also means that if the device loses power, nearly all the collected data will be saved rather than just part of it.

The new way Garmin organises the files provides a better picture of each exercise session. It captures more complete details even if something goes wrong during recording.

Overall it seems a smarter system for storing our important sports records. The changes ensure our hard-earned data is preserved as fully as possible. That way the proof that you did the workout exists for platforms like Strava! Or at least most of it will be there.

These are the more detailed changes that happened

FIT File 2.0 brought these changes in 2021

  • Nested data layout – Lap and session data are placed alongside individual records in a timeline order of how the activity happened.
  • Extra metrics included – New record, lap and session messages provide additional information like vertical bouncing, ground contact time, and training load.
  • Consistent timestamps – All messages now include a time stamp so the timing of events is logged the same across different message types.
  • Clearer definitions – Message definitions are documented better to set out standard uses across different devices and software.
  • Distinct lap transitions – Separate messages show whether lap splits were planned breaks or accidental stops.
  • File checksums – New checksums when files are written and read check contents are not corrupted.
  • Simpler processing – The nested structure makes it easier to work with lap/session data together with individual records.
  • Backwards compatibility – While the structure changed, core record details stayed similar enough to convert from older FIT 1. x files.
  • Optimised size – Files are a bit bigger on average but improved data capture and ability to log more metrics over time makes up for it.
  • Better analysis – Greater context and standardisation allow more accurate calculations of things like training impact in third-party apps.

 

Garmin FIT File 2.1

  • In December 2022, Garmin published an update to the specification called version 2.1.
  • Version 2.1 added some new message definitions and further refined existing ones. These helped enable new metrics and edge case functionality.
  • One example is the HRV_24HR message type to support detailed heart rate variability tracking in fitness watches

These format changes were supposed to be implemented everywhere by 1 Dec 2023, presumably on that date all Garmin devices capable of supporting the ‘new’ format switched over to use it. But the changes haven’t been universally accepted by the key players and the likes of Fit File Repair Tool (FFRT) report an increase in the numbers of people encountering errors and not quite knowing the cause plus more potential issues of lost data when recording in the new format.

This file structure requires that all data (all laps, session and all records) are stored in memory or in a temporary file and that the fit file is written after the activity ends… What happens if the battery gets empty during the recording? Will there be any data in a temporary file that can be used to build a fit file which contains data up the point where the battery got empty? Or will the recording stop automatically and will the fit file be written some seconds before the battery gets empty? [Mathias K, FFRT]

New Format

 

FIT File Improvements going forward?

In my opinion, further improvements are needed to ensure that workout files are more easily recovered, especially when we incorrectly discard workouts. Sure, Garmin makes this hard to do by accident. But accidents happen.

At present, FIT files effectively only store one record per second, an exception being that RR/HRV data is stored as multiple deltas per second. For more scientific sports uses like with Muscle Oxygen (SmO2), more frequent data recording is required. The current limit is 5Hz based on an HR of 250bpm and that needs to be significantly higher.

 

Co-authored with: Mathias @Fit File Repair Tools. The FFRT product manipulates and fixes FIT files in many ways. It’s a great tool.

More: Garmin FIT SDK

Reader-Powered Content

This content is not sponsored. It’s mostly me behind the labour of love which is this site and I appreciate everyone who follows, subscribes or Buys Me A Coffee ❤️ Alternatively please buy the reviewed product from my partners. Thank you! FTC: Affiliate Disclosure: Links pay commission. As an Amazon Associate, I earn from qualifying purchases.

22 thoughts on “Garmin FIT Files – welcomed improvements for 2023/4. Is there a downside?

  1. Downside: I saw an incompatibility with old (but for me still the best program for sports data analysis!…..) Sportracks 3.1. Indeed, the wonderful plugin Garmin Fit device, now can’t import developever data (specific: Power IQ from Stryd). These data are located in a different position in the fit file and the plugin can’t find them. I know that this software is abandoned, so no possibility to solve it, but…. Now I have to trasform power IQ in native power data with fit file repair tool

    1. yes i looked at that last week by coincidence
      the fit device plugin did work for me but not 100%. i used ffrt to ‘fix’ the files (you could convert to FIT 1.0 format for example). ffrt can fix files in batch mode but it is relatively slow for that. (I do it on wahoo where there are also fit file bugs which i reported a while ago)

      1. Caro Sandro,

        I just wished to ask you to try to upload one of the .fit files my Garmin Enduro has produced. I chose a short walk and not a run, in order not to confuse your Stryd Powercenter data.

        I am really curious whether there is any difference of ST3 based on not just watch type, but in which OS ST3 was installed and which of its versions.

        I tried to insert a link, but my post blocked.

        Grazie veramente,
        Zoltan

    2. Pretty interesting what you both wrote for two reasons:

      1) for me there is no need to involve any intermediate tools my ST3 with GFD plugin sucks properly power data track by Stryd Zones. Note: I use not the latest version over 7000, but 6789 (or 6987 or similar)

      2) when .fit ver 2.0 popped up my ST3 stopped to import elevation data track from any Fenixes, but it did and does import it from Edge 530. Note: I dunno why, just have a slight bet that “altitude” may have renamed to “enhanced_altitude” and for some typical Garmin-reason (get it as company wide chaos) this change did not go through the sw of Edge 530/830.

      1. Btw right now I need no help from ffrt, because if I still cared about importing elevation/altitude data track to ST3, I would keep on downloading both the original .fit file and .gpx file from GC , too, and would make a secondary import with gpx updating “GPS data” which properly updates the elevation data track of ST3.

      2. ffrt can add the elevation track to a fit file

        yueah garmin changes the elevation handling a while ago. it was a deliberate change but i cant remember exactly why it had to be done

      3. Interesting… I have 2 device:
        1) Forerunner 255, latest (beta) software (updated about 18 days ago). With this device, I can’t import power curve from Stryd
        2) Epix 2 (no pro), not the latest software (about 1 months ago). With Epix I CAN IMPORT POWER DATA. Maybe is still the previous version of FIT file? Or is it a ST3 problem?

      4. Sandro, do you have any problems with the elevation data track? I mean with both of your watches (FR 255 and Epix 2) can you import elevation data to ST3?

      5. I am more and more curios about how many sub-types of .fit file structures exist on Garmin devices. Based on us, two users with four different devices we could identify three different behaviours of the importing process of ST3. And I would never blame a software which has NOT been changed for years, but Garmin’s “multi-coloured roses” meaning codes in softwares of similar devices.

      6. Fit 1.0, FIT 2.0, FIT 2.1
        Fit 2.0 think introduced the elevation change
        Fit 2.1 is the changes i’m talking about in this post that not every platform has implemented but which garmin has implemented as backwardly as it intends to do
        ST3.1 and the garmin fit importer, i think, supports fit 1.0 but works with later files providing they dont have certian new features

        I guess a forerunner 305 won’t be exporting FIT 2.1 format files any time soon!!

        something along those lines.

      1. don’t ask me either !!!
        it’s a mystery 🙂 you should be able to insert one link but on most wordpress sites if you add two links in one post it gets auto-spammed

      2. Zoltan,
        After uploaded your file, I understood:
        – I can’t see elevation data in ST3 AFTER DISABLED ELEVATION CORRECTION PLUG-IN. This is the reason why my data was ok: at import it automatically creates elevation curve based on GPS track. Without this plug-in: no data.
        But also: no developer data. I can’t see any Stryd curve. With this file do you have Power IQ Stryd data? What’s exactly the name of tracks in GFT plugin?
        Thanks

      3. Thx Sandro for confirming that ST3 is not able to import elevation data track from fit files of newer watches which received sw updates in the last couple of months.

        My Edge 530 also got a sw update in March 2023, but it remained compatible with GFD plugin.

        I am a bit sad that I stole your dream 🙂 that your watches give you elevation data in ST3, but you gave me the idea to use the Elevation Correction feature which comes with Waypoint and Courses plugin, if I remember well.

        May I propose you we should continue the discussion in another forum? I do not want to make any comments, questions about licensing or source code modification issues of ST3 here.

        You know I hope that we could solve the bugs we have if we put together our knowledge.

        Please visit https://www.mtb-news.de/forum/t/alternative-fuer-sporttracks-und-daten-migrieren.900617/page-15#post-19212874

        Anyway if you want me I can upload a running activity to dropbox to see whether it gives you running power data or not.

        The answer to your question is that if you have Custom Data Tracks plugin in ST3 installed, and you import a fit file which includes Stryd Zones as a ciq data field you should see 5 or 6 custom data track in ST3/settings/Custom Data Tracks including Power, Form Power, Vertical Oscillations. If they are ticked you should see Running Power custom data track in the Activity View after you choose (Custom) Data Tracks view. And you can also see a custom data field which is the average of the runnin power data (the name of it can be modified under Logbook next to the properties of your logbook.

        Sry I dont always exactly remember the names of the menus.

  2. Could this be the beginning of getting power data in running workouts natively (and not added as a CIQ data field) from Garmin? I am wondering for so long why Garmin couldn’t do it like Suunto or Coros…?! OK, they offer it with their RD-Devices, but that’s not what we know from bike workouts: Just use the power sensor I want to!

    1. hi
      no i don’t think that is a factor.

      i think i am right in sayign that there is either the ‘cycling’ power bucket or developer field power running buckets to use.
      using the cycling power bucket is incorrect but useful.
      even garmin uses a developer field

      to get runnign power fields the ANT+ profile has to be changed. and that hasn’t been done afiak. i dont even think the Body temperature fields have yet come out of beta.

  3. For me as a developer who has to deal with fit files a lot, this isn’t a nice change.
    With the old variant (called Summary Last File Recording), it was relatively easy to parse multisport activities and easily extract them using the subsequent sessions message. Already during parsing, multi-sport activities could be split into respective sub-activities, by using an internal index, that refers to the session summary of every embedded sport multi sport activity. So it was easy to assign the record and lap messages to a multi-sport activity.

    This is no longer possible or a different – much more complicated – analysis is necessary in order to split up multi-sport activities (if you want that).

    I don’t really understand this change, somehow I can’t understand what advantage it would have on the device side if you embed the session message at the beginning of the fit file and thus, referring to Mathias K.’s quote (if I understood the quote correctly, but I myself come to this conclusion), the device must keep the entire recording in ‘memory’ before finally saving the fit file.

    But maybe i’m wrong, just some thoughts from my specific developer eye’s perspective.

    Thank you for this article, I wasn’t aware of the latest changes until recently.

    1. ty for the comment and your site looks good too!: https://www.hrmprofil.de/
      yes, I hadn’t considered the multisport issue. I will have to think about that.
      I’m finding that Garmin devices seem more reliable and lose data less over the last year or so. However I also see that saving a realtively simple 1 or 2 hour workout can take 10 seconds, which is a very long amount of time. SOMETHING must be calculating when it saves!

      “Summary Last File Recording” (old) and “Summary first File Recording” (new) are the names referred to by Garmin for the new and old methods

      I think the fact that neither you nor I had heard of this until recently explains why others also haven’t heard of this! Hence why problems are occuring

      1. In the past I used to work as a software developer in the sports industry and therefore came into contact with the Fit File format right from the start about 2009/2010. I’ve probably gone through all the stages of development of the Fit File format. I once wrote to Dynastream that Fit File has been a real treasure box and that, although it was intended for the sports industry, it was well documented and specified, but that much of the functionality could only be learned through practical usage.
        All in all, it has made things a lot easier for us developers, especially if you can use the official SDK.

        Mathias K. once helped me a lot making Fit File exports compatible with Strava, as Strava previously required a fixed order of lap, record and session messages within the Fit Files. He was a big help to me a few times because he’s probably the man, who knows most of the secrets of fit file 🙂

        Anyway, the last changes are of course manageable. Today I adjusted the internal splitting of multi-sport activities. Now everything has to be handled internally using the time stamps to devide multi sport activties within a fit file. Seems to work, but unfortunately at the past I’ve seen some fit files that do not always used valid time stamps at the fit messages and this is crucial for this task. But multisport fit files weren’t that common back some years ago and Single-Sport Activities aren’t affected from the position of the session message that much. Although splitting by time stamps seems more reliable, if the time stamps are valid.

        I am curious to see how this format will develop. As you say, there is still much room for improvement. Dynastream (Garmin) has already achieved a lot of positive things in the sports industry with this file format because it has eliminated error-prone decoding of some proprietary binary file structures. And even the text-based and ‘standardized’ GPX and TCX formats are always good for some ‘surprises’ because a lot of things were handled very freely by (us) developers 🙂 .

        Again, it was very helpful for me to come across your article, so I could quickly isolate a new problem with multisport fit files, as I don’t regularly deal with the many minor changes in the fit file format.

        The5krunner and DC Rainmaker are always a very good source of information for us users. Thumbs up !

Leave a Reply

Your email address will not be published. Required fields are marked *

wp_footer()