Garmin Developers

Flexible and Interoperable Data Transfer (FIT) SDK


Getting Familiar with FIT

The Flexible and Interoperable Data Transfer (FIT) protocol is designed specifically for the storing and sharing of data that originates from sport, fitness and health devices. The FIT protocol defines a set of data storage templates (FIT messages) that can be used to store information such as activity data, courses, and workouts. It is designed to be compact, interoperable and extensible.

The FIT file protocol was designed to provide:

  • Interoperability of device data across various platforms
  • Scalability from small embedded devices to cloud platforms
  • Forward compatibility, allowing the protocol to grow and retain existing functionality
  • Automated compatibility across platforms of different native endianness

The following example use case illustrates one way that the FIT protocol is used to transfer activity data acquired during exercise to a cloud platform.

FIT Ecosystem.
  1. Sensors measure parameters such as heart rate, speed, pace, power, etc.
  2. Data is broadcast in real time, using low power ANT+ and Bluetooth protocols
  3. Session events and real time activity data is collected and saved into a FIT file on a display device
  4. The FIT file is transferred from the display device to desktop, mobile, or cloud platforms

After the initial sensor data is collected, the FIT protocol provides a consistent format allowing all devices in the subsequent chain to share and use the data.

Implementing FIT

Step 1: Download the FIT SDK. The SDK includes: example programs to Encode and Decode FIT files in many popular programming languages; sample .FIT files; and the FitCSVTool for converting FIT files back and forth to .csv files for testing.

Step 2: The FIT File Types guide describes the predefined FIT File types which consist of common message groupings and best practices for each file type.

Step 3: Explore the Cookbook and Example Projects for ways to use the FIT SDK in your application.

FIT SDK Resources

The FIT Profile

The FIT Profile (Profile.xls) lists all of the predefined FIT messages and FIT data types found in the FIT SDK. This document is useful for understanding the content and format of messages. Custom messages and files may also be generated for application specific cases. Profile.xlsx is updated with each release of the FIT SDK and is the most up-to-date and complete reference of the FIT Profile. Profile.xlsx is located at /path/to/fit/sdk/Profile.xlsx.


FitCSVTool is a command line tool used to convert binary FIT files to readable text files. Converting FIT files to text files may assist with the debugging of applications that encode or decode FIT files.


The FIT SDK Cookbook contains examples of using the FIT SDK to solve real world problems. There are recipes for encoding and decoding Activity, Workout, and Course files; and tips for working with the FIT SDK. The recipes are written in C#, but the concepts can be applied to the Java and C++ versions of the FIT SDK.

Programming Languages

The FIT SDK is available for C, C++, C#, Java, JavaScript, Objective-C, and Python. Each SDK includes Example Projects that can be used as a starting point for your projects.


FitGen.exe is a Windows command line tool that can be used to customize the FIT SDK. FitGen can be used to add custom messages to the FIT SDK, or to optimize the C SDK for use in embedded applications.

FIT Developer Forum

Share your knowledge, ask questions, and get the latest FIT SDK news in the FIT Developer Forum.