Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


license GoDoc Build

fit is a Go package that implements decoding and encoding of the Flexible and Interoperable Data Transfer (FIT) Protocol. Fit is a "compact binary format designed for storing and sharing data from sport, fitness and health devices". Fit files are created by newer GPS enabled Garmin sport watches and cycling computers, such as the Forerunner/Edge/Fenix series.

The two latest versions of Go is supported. The core decoding package has no external dependencies. The latest release of Go and a few external dependencies are required for running the full test suite and benchmarks.

Latest release: 0.13.0

Version Support

The current supported FIT SDK version is 21.84.

Developer data fields are currently only partially supported. At the moment the decoder parses Developer Data Field Descriptions, Developer Data ID Messages and Field Description Messages. The decoder currently discards developer data fields found in records.

The encoder will currently (silently) ignore anything related to Developer data fields, This also means that encoding will not fail if protocol version 2 is specified for a file header.

Developer data fields support is tracked by #21 and #64.


  • Supports all FIT file types.
  • Accessors for scaled fields.
  • Accessors for dynamic fields.
  • Field components expansion.
  • Go code generation for custom FIT product profiles.


Using Go modules:

$ go get

Using $GOPATH:

$ go get

About fit