A simple open-source tool for batch converting .FIT files (Garmin, Polar, Wahoo, etc.) into .CSV files.
This project contains:
- A Python script (
fit2csv_batch.py) that performs the actual FIT → CSV conversion - A macOS Automator application (optional) that provides a simple GUI and wraps the Python script
- Documentation on how to build the macOS app
The goal is to provide a minimal, reliable, and flexible tool for anyone who wants to work with their own training data.
- Convert entire folders of
.fitfiles to.csv - Preserve original filenames
- Output folder selection (or automatic
csv_outfolder) - macOS Automator app:
- Choose input/output folders via GUI
- Shows a “Conversion finished” notification
- Opens output folder automatically
- Embeds the Python script inside the
.appbundle
fit2csv/
│
├── src/
│ └── fit2csv_batch.py # Main Python conversion script
│
├── mac-app/
│ └── README_APP.md # Instructions to build the Automator app
│
├── .gitignore
├── LICENSE
└── README.md
The main script lives in:
src/fit2csv_batch.py
It expects:
- an input folder containing
.fitfiles - an output folder (created automatically if missing)
python3 src/fit2csv_batch.py /path/to/fit-files --out /path/to/outputInstall dependencies:
pip install fitdecodeThe Automator application wraps the Python script and allows you to:
- Select input folder
- Select output folder
- Run the conversion without using Terminal
See:
mac-app/README_APP.md
This explains how to:
- embed
fit2csv_batch.pyinside the.app - use an AppleScript wrapper to call the Python script
- build your own standalone
fit2csv.app
The Automator app is not stored directly in this repository (best practice).
Instead, you can download prebuilt versions via GitHub Releases.
- Windows and Linux packaging
- Optional progress output
- Native Python GUI version (Tkinter / PyQt)
- FIT → Parquet support
- Better error handling and logging
Pull requests are welcome!
This project is released under the MIT License.
See LICENSE for full text.
Ole Fredrik Lie
GitHub: https://github.com/olefredrik
Pull requests and issues are welcome! If you build something cool on top of this tool — GUI, CLI enhancements, better FIT parsing — please consider contributing it back.