skillfed

fit-tool

A library for reading and writing Garmin FIT files.

fit-tool v0.9.16 145.5K downloads/30d#11,125 on PyPI5
Permissive license BSD-3-Clause Active released

What it is and what it does

fit-tool is a Python library for reading, writing, and validating Garmin FIT files—the binary format used by Garmin devices to store fitness activities, workouts, and courses. It provides both a high-level API (FitFile for loading and serializing, FitFileBuilder for construction) and a CLI for quick conversions to CSV. The library includes composable validation at multiple conformance levels and supports both PRESERVE and CANONICAL encoding modes.

The package is a community-maintained fork after the original was removed from PyPI. It bundles FIT Profile version 21.212.0 and supports Python 3.9 through 3.14. Runtime has no third-party dependencies, making installation and deployment straightforward. The documentation explicitly defines capability boundaries and validation levels, so you know what is and isn't supported before relying on it.

Use it for:

  • Convert Garmin activity files to CSV for analysis or import into other systems
  • Stream large FIT files with bounded memory for processing without loading entire file
  • Build and export custom Activity or Workout FIT files programmatically
  • Validate FIT file integrity and conformance to Garmin specifications
  • Parse GPS and fitness metrics from Garmin device exports for data pipeline integration

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Reads and writes Garmin FIT files for Activity, Workout, and Course workflows, with support for parsing, validation, streaming, and format conversion.

Yes. Low install friction, no dependencies, active maintenance, permissive license, and no known vulnerabilities make it a safe choice. The explicit capability boundary documentation and multiple validation levels show mature design. Suitable for production use in fitness data pipelines, though real-world validation against Garmin devices should be verified for your specific workflow.

Install

fit-tool on PyPI

pip

pip install fit-tool

uv

uv add fit-tool

poetry

poetry add fit-tool

Installing fit-tool

Before you install

Low friction: pure Python with no runtime dependencies. Active maintenance with a release 9 days ago. Community-maintained fork after original author removal.

License in practice

BSD-3-Clause permissive license allows commercial and private use with minimal restrictions.

Quickstart

pip install fit-tool

from fit_tool import FitFile

fit = FitFile.from_file("activity.fit")
fit.to_csv("activity.csv")

Verify before relying

  • Extent of Activity/Workout/Course workflow support beyond basic read/write
  • Real-world validation accuracy against Garmin devices and official tools
  • Performance characteristics for large or complex FIT files

Package facts

License BSD-3-Clause (permissive)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies none
Maintenance actively maintained — 9 days since the last release
Last repo commit
First released
Downloads 145,463/month — #11,125 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: fit_tool-0.9.16-py3-none-any.whl

Keywords: fit, garmin, fitness, cycling, gps, workout, activity

Development Status :: 4 - BetaIntended Audience :: DevelopersProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9

Tags

garmin fit file parserread write fit filesactivity data garminfit file convertergarmin activity readerfit format librarycycling gps data
garmin-fitnessbinary-formatdata-conversion

More Utilities packages