GarminDB
GarminDB is a Python tool that downloads health data from Garmin Connect, FitBit, and MS Health, stores it in a local SQLite database, and provides Jupyter notebooks for analysis and visualization. It enables personal health tracking without cloud dependency by retaining downloaded files locally for reproducible analysis.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | tcgoetz/GarminDB |
| Owner | tcgoetz |
| Primary language | Python |
| License | GPL-2.0 — OSI-approved |
| Stars | 3.2k |
| Forks | 280 |
| Open issues | 28 |
| Latest release | v3.8.0 (2026-05-14) |
| Last updated | 2026-05-31 |
| Source | https://github.com/tcgoetz/GarminDB |
What GarminDB is
Python-based ETL pipeline that ingests activity and monitoring data via Garmin Connect API scraping, parses FIT/JSON formats, stores normalized data in SQLite with schema versioning, and exposes data via SQL views and Jupyter-based visualization notebooks. Supports CLI-driven workflows and plugin architecture for extensibility.
Get the GarminDB source
Clone the repository and explore it locally.
git clone https://github.com/tcgoetz/GarminDB.gitcd GarminDB# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Requires Python 3.x and pip/Make tooling; installation straightforward but configuration demands Garmin Connect credentials and date range setup in JSON.
- Initial data download can be time-consuming for multi-year histories; plan for first run to complete before incremental updates via CLI.
- DB schema versioning is enforced; schema updates require `--rebuild_db` flag, which regenerates from retained JSON/FIT files (no data loss, but downtime for large archives).
- Jupyter notebooks depend on configured environment (Jupyter, matplotlib/plotly); separate toolchain beyond core CLI, though supplied notebooks reduce friction.
- Credentials stored in plaintext in `~/.GarminDb/GarminConnectConfig.json`; users must manage file permissions and protect against unauthorized access.
When to avoid it — and what to weigh
- Real-Time Streaming or Mobile Requirements — GarminDB is offline-first and pull-based, not suitable for real-time dashboards or mobile apps. Designed for periodic batch downloads and local analysis, not continuous monitoring.
- Multi-User Collaboration or Cloud-Native Deployment — SQLite is single-process and file-based; no built-in multi-user concurrency, authentication, or cloud hosting. Not intended for teams sharing data or SaaS deployments.
- Garmin Account Credential Handling at Scale — Requires storing Garmin Connect credentials in local JSON config. No OAuth, credential rotation, or secret management patterns. Unsuitable for enterprises or applications managing many user accounts.
- Unsupported Garmin Account Changes or API Breakage — Scrapes Garmin Connect web UI; changes to Garmin's authentication or page structure can break downloads. No guaranteed support for future Garmin API changes.
License & commercial use
GPL-2.0 (GNU General Public License v2.0). Copyleft license requiring derivative works to also be GPL-2.0 and source-available. Permissive for private/internal use.
GPL-2.0 is a strong copyleft license. Commercial use is permitted, but any software modifications or integration into a proprietary product must: (1) remain GPL-2.0, (2) provide source code, and (3) grant end-users the same freedoms. Selling the tool itself or bundling into a closed-source health app is likely non-compliant. If building a commercial service, consult legal counsel on GPL-2.0 obligations or request a dual-license arrangement from the maintainer.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Adequate |
| License clarity | Clear |
| Deployment complexity | Low |
| DEV.co fit | Possible |
| Assessment confidence | High |
Plaintext credential storage in local JSON config is a risk vector; no encryption or secret management patterns. Scraping Garmin Connect (not official API) exposes tool to future authentication changes and potential account lockouts. SQLite is file-based with no built-in encryption; users must rely on OS-level file permissions or full-disk encryption. Retains downloaded JSON/FIT files locally; ensure physical access controls for sensitive health data. No audit logging or access controls within the tool itself.
Alternatives to consider
Garmin Connect Web UI / Mobile App
Official, cloud-hosted, real-time. No data ownership or offline analysis; limited export and API for third-party integration.
MyFitnessPal / Strava
Cloud platforms with native multi-device sync and social features. Require subscriptions; data subject to terms of service changes.
Custom Python scripts using official Garmin Health API (if available)
Potentially more robust than web scraping, but Garmin official API availability and terms unknown; GarminDB avoids official API dependency by reverse-engineering web UI.
Build on GarminDB with DEV.co software developers
Start analyzing your Garmin, FitBit, and MS Health data locally. Install GarminDB via pip and set up your first database in minutes—no cloud required. Explore custom dashboards and long-term health trends with Jupyter notebooks.
Talk to DEV.coRelated open-source tools
Surfaced by semantic similarity across the DEV.co open-source index.
Related on DEV.co
Explore the category and the services that help you build with it.
GarminDB FAQ
Can I use GarminDB with multiple Garmin accounts?
What happens if Garmin changes their web UI or authentication?
Can I share the database with friends or family?
Is my health data encrypted in the SQLite database?
Software development & web development with DEV.co
Adopting GarminDB is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source databases software in production.
Ready to Own Your Health Data?
Start analyzing your Garmin, FitBit, and MS Health data locally. Install GarminDB via pip and set up your first database in minutes—no cloud required. Explore custom dashboards and long-term health trends with Jupyter notebooks.