garmin-fit-sdk
Garmin FIT Python SDK
What it is and what it does
The Garmin FIT Python SDK is an official decoder for Garmin's FIT (Flexible and Interoperable Data Transfer) binary format, commonly used to store activity data from Garmin sports watches, fitness trackers, and other devices. It reads binary FIT files and converts them into structured Python dictionaries and lists, with optional post-processing to apply scaling factors, convert timestamps to Python datetime objects, expand subfields, and validate file integrity via CRC checks.
The package provides a Stream abstraction to load FIT data from files, bytearrays, or BytesIO objects, and a Decoder class that validates the file structure, checks integrity, and reads messages with customizable options. Developers can disable expensive operations like CRC validation or type conversion to optimize performance, or use a callback listener to inspect and modify messages during decoding. It is typed and actively maintained by Garmin, with support for modern Python versions.
Use it for:
- Extract and analyze activity records (GPS, heart rate, cadence) from Garmin device exports for fitness tracking applications.
- Validate FIT file integrity and structure before processing in data pipelines or archival systems.
- Convert raw FIT epoch timestamps and scaled sensor values into human-readable formats for reporting or visualization.
- Batch decode multiple FIT files while selectively disabling CRC checks or type conversion to reduce processing time.
- Inspect FIT file headers and metadata to determine device type or activity category before full decoding.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Decodes Garmin FIT (Flexible and Interoperable Data Transfer) binary files into structured Python objects, with options to apply scaling, convert timestamps, and expand subfields according to the FIT Profile specification.
Yes, with a license caveat. The package is actively maintained, has low install friction, supports current Python versions, and is the official Garmin decoder—essential if you work with FIT files. However, verify the license terms at the repository first, as the package metadata does not declare one; this is a blocker for proprietary or GPL-sensitive projects.
Install
garmin-fit-sdk on PyPI
pip
pip install garmin-fit-sdkuv
uv add garmin-fit-sdkpoetry
poetry add garmin-fit-sdkInstalling garmin-fit-sdk
Before you install
Low friction: pure Python wheel with only typing_extensions as a runtime dependency. Actively maintained—released 3 days ago with recent commits and 156 repository stars. Supports current Python versions (3.6 and later).
License in practice
License status is unclear—no SPDX identifier or raw license text is available in the package metadata. Verify the actual license terms at the repository before use in proprietary or copyleft-sensitive contexts.
Quickstart
from garmin_fit_sdk import Decoder, Stream
stream = Stream.from_file("Activity.fit")
decoder = Decoder(stream)
messages, errors = decoder.read()
print(messages)
Requires Python 3.6 or greater; input must be a valid FIT binary file (Garmin format).
Verify before relying
- Whether the package is distributed under an open-source or proprietary license (license metadata is absent).
- Performance characteristics when decoding large FIT files or disabling CRC checks.
- Compatibility with all Garmin device types and FIT Profile versions.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — typing_extensions |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 139,291/month — #11,302 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: garmin_fit_sdk-21.213.0-py3-none-any.whl
Keywords: garmin, fit sdk, fit
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
fitdecodeParses and decodes FIT files (Garmin's ANT+…
permissive · top 15,000 on PyPI
fit-toolReads and writes Garmin FIT files for Activity,…
permissive · top 15,000 on PyPI
fitparseParses ANT/Garmin .FIT binary files, extracting…
permissive · top 15,000 on PyPI
ha-garminPython client for the Garmin Connect API with…
permissive · top 15,000 on PyPI
garminconnectPython wrapper for the Garmin Connect API that…
permissive · top 15,000 on PyPI
garthGarth provides Python access to Garmin Connect…
permissive · top 15,000 on PyPI
pyubx2Parses and generates UBX protocol messages from…
permissive · top 15,000 on PyPI
pytileRetrieves information from Tile® Bluetooth…
permissive · top 15,000 on PyPI
pyrtcmParses RTCM3 differential GNSS protocol…
permissive · top 15,000 on PyPI
cobsEncodes and decodes data using Consistent…
permissive · top 15,000 on PyPI