FIT reference
Every activity recorded by a Garmin, Wahoo, Coros, Suunto or Polar device ends up in a .fit file. Here is what it contains: 125 messages and 1849 fields, each one explained.
FIT (Flexible and Interoperable Data Transfer) is a compact binary format designed by Garmin to store and exchange sport, fitness and health data. Watches, bike computers, smart trainers and scales write it; platforms like Garmin Connect, Strava, TrainingPeaks or Zwift read it.
A FIT file is a sequence of messages. Each message has a type (session, lap, record…) and a set of fields holding the values. A file only stores the fields a device actually measured, so two files of the same type rarely contain exactly the same fields.
The activity message wraps up a whole activity file.
Climb messages are written when the ClimbPro feature detects that the user is approaching, starting or completing a climb of the course or route being followed.
Event messages record everything that happens at a given moment of an activity: the timer starting and stopping, laps, alerts (heart rate, speed, power…), gear changes, rider position changes, radar threats, dive alerts and so on.
Jump messages describe each jump detected during a mountain biking, BMX or skiing activity.
A lap message summarizes a portion of a session: a lap triggered manually with the lap button, an automatic lap (every kilometer or mile for instance), or an interval of a structured workout.
A length message describes one length of a pool swimming session, either active (swum) or idle (rest).
Record messages are the time series of an activity: the device writes one every second (or using smart recording, when something changes), with everything it measures at that moment: GPS position, altitude, heart rate, speed, cadence, power, temperature and so on.
A session message summarizes a period of a single sport within an activity.
Set messages describe the sets of a strength training activity: the exercise performed, the number of repetitions, the weight lifted and the duration, as well as the rest periods between sets.
Split messages divide an activity into meaningful parts beyond laps: ski runs and lifts, climbing routes, dive ascents and descents, intervals of a workout, transitions… The splitType field tells what kind of split it is.
A split summary message aggregates all the splits of a given type in an activity.
Time in zone messages tell how long was spent in each heart rate, speed, cadence and power zone during a session or a lap, along with the zone boundaries and thresholds used for the computation.
Weather alert messages store the severe weather alerts (storm, flood, heat…) received from the phone during an activity.
Weather conditions messages store the current conditions and the forecasts received from the phone during an activity: temperature, wind, humidity, precipitation probability…
The course message describes a course file: a route to follow, made of record messages for the track and course point messages for the turns and points of interest along the way.
Course point messages are the points of interest of a course: turns, summits, water points, food, danger, first aid, segment starts… The device alerts the user when approaching them.
Exercise title messages give a custom name to the exercises of a strength workout.
Goal messages describe the targets set by the user: a number of steps per day, a distance or a duration per week, a number of activities per month and so on.
Schedule messages plan workouts and courses on a calendar.
Segment file messages list the segments available on the device, with the leaders to race on each of them.
The segment ID message identifies a segment: a portion of road or trail that users race against each other or against their own best time.
A segment lap message holds the statistics of a segment raced during an activity, like a lap message but for the portion of the activity covering the segment.
Segment leaderboard entry messages describe the leaders of a segment that the user can race against: their personal best, the overall leader, a connection…
Segment point messages form the track of a segment.
The workout message describes a structured workout: its name, sport and number of steps.
Workout session messages split a multisport workout into sessions, each one with its own sport and its own range of steps.
A workout step message describes one step of a structured workout: how long it lasts (time, distance, calories, heart rate, open…), what to target (pace, heart rate, power, cadence zones or custom ranges), its intensity, and how to repeat previous steps.
Beat intervals messages store the time between consecutive heartbeats, measured by the optical sensor or a chest strap.
Blood pressure messages store the measurements of a blood pressure monitor.
Heart rate messages store heart rate data recorded by a chest strap while it was not connected to the watch (during swimming for instance), and merged back into the activity afterwards.
HRV messages store the times between heartbeats (R-R intervals) recorded during an activity, when heart rate variability logging is enabled.
The HRV status summary message holds the nightly heart rate variability status: last night average, weekly average and the personal baseline range they are compared to.
HRV value messages store the heart rate variability measured during the night, every 5 minutes.
Raw accelerometer data recorded by the health sensors of the watch, as exposed to Garmin Health SDK applications.
Body Battery data recorded by the watch, as exposed to Garmin Health SDK applications.
Configuration of the health data collection, as exposed to Garmin Health SDK applications.
Events of the health data collection, as exposed to Garmin Health SDK applications.
Raw gyroscope data recorded by the health sensors of the watch, as exposed to Garmin Health SDK applications.
Heart rate data recorded by the optical sensor of the watch, as exposed to Garmin Health SDK applications.
Respiration rate data computed by the watch, as exposed to Garmin Health SDK applications.
Blood oxygen saturation (SpO2) data measured by the pulse oximeter of the watch, as exposed to Garmin Health SDK applications.
Step counts recorded by the watch, as exposed to Garmin Health SDK applications.
Stress levels computed by the watch, as exposed to Garmin Health SDK applications.
Wrist temperature measured by the watch, as exposed to Garmin Health SDK applications.
Max MET data messages store the VO2 max estimates computed by the device after a run or a ride.
Monitoring messages are the all-day activity tracking data: steps, distance, calories, active time, intensity minutes, floors climbed and heart rate, recorded at regular intervals throughout the day, outside of activities.
Monitoring heart rate data messages store the resting heart rate computed daily.
The monitoring info message gives the context needed to read the monitoring messages of a file: local time, resting metabolic rate and the factors converting cycles into distance and calories for each activity type.
Nap event messages store the naps detected by the device or entered by the user, with feedback on their timing and duration.
Raw beat-to-beat interval (BBI) messages store the time between heartbeats measured by the optical sensor, with a quality indicator and gaps.
Respiration rate messages store the breathing rate measured throughout the day and night.
Skin temperature overnight messages store how the skin temperature measured during the night deviates from the personal baseline of the user.
The sleep assessment message holds the scores computed after a night of sleep: overall sleep score, and the sub-scores for duration, quality, recovery, deep, light and REM sleep, awakenings and restlessness.
The sleep disruption overnight severity message gives the overall level of sleep disruptions detected during the night.
Sleep disruption severity period messages describe the level of sleep disruptions detected during each period of the night.
Sleep level messages describe the sleep stages of the night, one message each time the stage changes.
SpO2 data messages store the blood oxygen saturation readings of the pulse oximeter, during spot checks, at night or all day.
Stress level messages store the stress level computed throughout the day from heart rate variability.
Totals messages store the lifetime totals of the device for each sport: time, distance, calories and number of sessions.
Weight scale messages store the measurements of a smart scale: weight, body fat, body water, muscle and bone mass, BMI and metabolic estimates.
Dive alarm messages describe the alarms configured for scuba diving: a depth to reach, a dive time, or an ascent/descent rate.
Dive apnea alarm messages describe the alarms configured for freediving (apnea): a depth to reach, a dive time, or an ascent/descent rate.
Dive gas messages describe the breathing gases configured for a dive: air, nitrox or trimix, as oxygen and helium percentages.
The dive settings message holds the configuration of the dive computer for a dive: decompression model and gradient factors, water type, oxygen partial pressure limits, safety stop, rebreather setpoints, alerts and display preferences.
Dive summary messages hold the statistics of a dive or of a series of dives: depth, bottom time, ascent and descent rates, gas consumption and the oxygen and nitrogen loads.
Tank summary messages hold the gas consumption of each tank equipped with a wireless pressure transmitter.
Tank update messages store the pressure readings of the wireless tank pressure transmitters during a dive.
Bike profile messages describe the bikes set up on a cycling computer or watch: their sensors, wheel size, weight, crank length, gearing and odometer.
The connectivity message holds the wireless settings of the device and the connected features enabled with the phone: live tracking, weather, automatic upload, incident detection…
The device settings message holds the system settings of the device: time and date formats, time zone, backlight, activity tracking, move alerts, screens and automatic synchronization.
Extended display data concept configuration messages describe the data concepts (speed, heart rate, power…) shown in each field of the screens of an extended display.
Extended display data field configuration messages describe each data field of the screens of an extended display.
Extended display screen configuration messages describe the screens of an extended display: a device showing the data of another one, such as a watch mirroring a cycling computer.
Heart rate monitor profile messages describe the heart rate sensors paired with the device.
The optical heart rate settings message tells whether the wrist heart rate sensor is enabled.
Stride-based speed and distance monitor (SDM) profile messages describe the foot pods paired with the device.
The training settings message holds the targets of the training features of the device, such as the virtual partner.
The user profile message holds the personal data of the user (gender, age, height, weight, resting and max heart rates, step lengths) and their display preferences (language, units, coordinate format).
The watch face settings message describes the watch face selected on the device.
Cadence zone messages define the cadence zones of the user, one message per zone, ordered from the lowest to the highest.
Heart rate zone messages define the heart rate zones of the user, one message per zone, ordered from the lowest to the highest.
MET zone messages define, for each heart rate zone, the calories burned per minute.
Power zone messages define the power zones of the user, one message per zone, ordered from the lowest to the highest.
Speed zone messages define the speed zones of the user, one message per zone, ordered from the lowest to the highest.
The sport message names the sport of a sport settings file, which holds the zones and training settings specific to that sport.
The zones target message holds the thresholds used to compute the heart rate and power zones of the user, and the method used for each.
One-dimensional sensor calibration messages hold the calibration used to convert the raw readings of single-axis sensors (barometer) into physical units.
Three-dimensional sensor calibration messages hold the calibration used to convert the raw readings of three-axis sensors (accelerometer, gyroscope, magnetometer) into physical units.
Automatic activity detection accelerometer features messages store the accelerometer statistics the device uses to detect activities automatically.
Accelerometer data messages store the raw and calibrated samples of the accelerometer of the device, several per second.
ANT channel ID messages identify the ANT sensors connected to the device, so that the raw ANT messages can be attributed.
ANT RX messages store the raw ANT messages received from the sensors, for debugging or for decoding sensor data not covered by the FIT profile.
ANT TX messages store the raw ANT messages sent to the sensors, for debugging or for decoding sensor data not covered by the FIT profile.
Aviation attitude messages store the attitude of an aircraft computed by an attitude and heading reference system (AHRS): pitch, roll, accelerations, turn rate and track.
Barometer data messages store the raw samples of the barometric pressure sensor.
Camera event messages record the actions of an action camera connected to the device: video start, split and end, photos taken…
GPS metadata messages store detailed GPS fixes, with sub-second timing, heading and velocity on each axis.
Gyroscope data messages store the raw and calibrated samples of the gyroscope of the device, several per second.
Magnetometer data messages store the raw and calibrated samples of the compass of the device, several per second.
NMEA sentence messages store the raw sentences received from an external GPS or marine device using the NMEA 0183 protocol.
OBD-II data messages store the raw readings of the on-board diagnostics port of a vehicle (engine speed, vehicle speed, fuel level…), as parameter IDs (PIDs).
Video frame messages correlate the frames of a video recorded by a camera with the time of the activity.
The video message references a video associated with the activity, hosted online.
Video clip messages describe the clips of a video associated with the activity, mapping the time of the video to the time of the activity.
Video description messages hold the description of the video associated with the activity.
Video title messages hold the title of the video associated with the activity.
Battery messages store the charge level of the device over time.
The capabilities message describes what a device supports: languages, sports, workout features and connected features.
Developer data ID messages declare the applications (such as Connect IQ apps and data fields) that added their own developer fields to the file.
Device auxiliary battery info messages describe the additional batteries of a device, such as a battery pack.
Device info messages describe every device involved in the recording: the watch or bike computer itself (deviceIndex creator), and each connected sensor (heart rate strap, power meter, foot pod, speed and cadence sensors, radar…).
Field capabilities messages tell which fields of a message a device supports for a given file type, and how many values it can store.
Field description messages define the developer fields: custom fields added by third party applications to standard messages.
File capabilities messages tell which file types a device supports, where they are stored and how many of them it can hold.
The file creator message tells which software and hardware versions of the device created the file.
The file ID message is the first message of every FIT file.
Memo glob messages store long texts or binary data attached to another message, split into consecutive blocks.
Message capabilities messages tell which messages a device supports for a given file type, and how many of them it can store.
The pad message carries no data.
Slave device messages list the other devices a file applies to, such as the products compatible with a settings file.
Software messages describe the software (firmware) versions installed on a device.
The timestamp correlation message links the system time of the device with UTC and local time, so that timestamps recorded in system time can be converted.
Training file messages reference the workouts and courses files a training plan relies on, by manufacturer, product, serial number and creation time.
Chrono shot data messages store the speed of each projectile measured by a ballistic chronograph.
The chrono shot session message summarizes a session of a ballistic chronograph: number of shots, projectile and speed statistics.