Note, September 2024: This project is not actively maintained anymore. Please see https://github.com/muktihari/fit for a more modern alternative.
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.15.0
The current supported FIT SDK version is 21.115.
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 github.com/tormoder/fit@v0.15.0
Using $GOPATH
:
$ go get github.com/tormoder/fit