DEV.co
Open-Source Databases · tcgoetz

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.

Source: GitHub — github.com/tcgoetz/GarminDB
3.2k
GitHub stars
280
Forks
Python
Primary language
GPL-2.0
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositorytcgoetz/GarminDB
Ownertcgoetz
Primary languagePython
LicenseGPL-2.0 — OSI-approved
Stars3.2k
Forks280
Open issues28
Latest releasev3.8.0 (2026-05-14)
Last updated2026-05-31
Sourcehttps://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.

Quickstart

Get the GarminDB source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/tcgoetz/GarminDB.gitcd GarminDB# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Personal Health Data Retention & Offline Analysis

Athletes and health-conscious users who want to own their Garmin data locally without relying on cloud services. Useful for long-term trend analysis and backup against service changes or data loss.

Custom Health Dashboards & Advanced Reporting

Users requiring tailored metrics beyond Garmin Connect's built-in views. Jupyter notebooks enable flexible SQL queries and matplotlib/plotly visualizations for activity summaries, sleep patterns, and multi-month trends.

Research & Data Science on Wearable Health Metrics

Researchers or developers analyzing patterns in heart rate, activity, sleep, and stress data. Direct SQLite access and retained raw FIT files allow reproducible analysis pipelines and plugin-based data enrichment.

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.

SignalAssessment
MaintenanceActive
DocumentationAdequate
License clarityClear
Deployment complexityLow
DEV.co fitPossible
Assessment confidenceHigh
Security considerations

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.

Software development agency

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.co

Related 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?
Not natively. You would need separate GarminConnectConfig.json files and separate database instances, managed manually or via scripting.
What happens if Garmin changes their web UI or authentication?
GarminDB may break. It scrapes the web UI, not an official API. Maintainer would need to reverse-engineer and patch the tool. Community contributions or forking may be necessary.
Can I share the database with friends or family?
Technically yes (it's a file), but no multi-user concurrency control. SQLite locks on write; only one user can modify at a time. Not designed for collaborative or shared access.
Is my health data encrypted in the SQLite database?
No. SQLite data is stored unencrypted on disk. Encryption depends on your OS file system or full-disk encryption. Ensure file permissions are restricted.

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.