Tareq Alansari6 downloadsGarmin Connect directly in your Obsidian vault. Data is synced, stored in your vault, and rendered in a dashboard. View your data fully offline, compatible on mobile and desktop.
Garmin Connect inside Obsidian.
Sync all your Garmin health, performance and activity data into your vault, and browse it on the built-in dashboard. Compatible on desktop and mobile.
Install · Guide · FAQ · Troubleshooting · Contributing

[!IMPORTANT] This plugin is not affiliated nor endorsed by Garmin.
refreshToken in Obsidian's Secret Storage. Learn more about how this plugin handles security here.[!TIP] Have any ideas? Please send a feature request or learn how to contribute.
![]() |
![]() |
| A run's page: the route coloured by pace, stats, laps and charts. | All Activities: search, filter and sort everything you've recorded. |
![]() |
![]() |
| Health Stats: Body Battery's day, with what charged and drained it. | Performance Stats: Training Status over the last 12 weeks. |
The plugin signs in to Garmin Connect, syncs your data into plain JSON files in your vault, and draws Garmin's pages from those files. So the pages open offline, on every device your vault syncs to.
flowchart LR
garmin["Garmin Connect"] -->|"sync"| plugin["The plugin"]
session["Session in Obsidian's keychain"] --- plugin
plugin -->|"writes JSON"| folder[("Garmin/data in your vault")]
folder -->|"read by"| pages["Home, Activities, Sleep, Health and Performance Stats"]
The plugin is in beta and installs with BRAT. It needs Obsidian 1.11.4 or later.
tareqayz/Obsidian-Garmin-Connect.To install by hand or from source, see Installation.
Enabling the plugin opens a setup over Home:
Then sync with Home's ↻ button, Sync recent days, or Sync on startup. The Guide covers every page and command.
Everything is plain JSON in one data folder, Garmin/data by default. How much room it takes depends
on how much history you keep. A year of data may vary for individuals, but should be around 50 MB per year on average.
[!IMPORTANT] With Obsidian Sync, turn on Sync all other types so the JSON reaches your other devices.
sso.garmin.com, diauth.garmin.com and connectapi.garmin.com (or
their garmin.cn counterparts), to sign in and to fetch your data.tile.openstreetmap.org. That server sees which part of the map you open, roughly where the
activity was, and each request names this plugin. Turn Map tiles off in the settings, and the
route is drawn on its own with no request at all.tls.peet.ws is asked what your connection looks like, but only when you run the network check
in Run diagnostics.What is stored where, and how it is redacted, is in Security.
| Using the plugin | |
|---|---|
| Installation | BRAT, by hand, a second device, from source |
| Guide | setup, syncing, what to keep, every page and command |
| Troubleshooting | problems by symptom, and the diagnostics |
| FAQ | short answers |
| Settings | every setting and what it does |
| Data reference | every file and key the sync writes |
| Security | what is stored, what leaves your device, reporting a vulnerability |
| Working on the plugin | |
|---|---|
| Contributing | branches, releases, data versions, local development, writing docs |
| Architecture | how the system fits together, with diagrams |
| Building pages | how the pages inside Home work, and how to add one |
| Garmin API | every endpoint called, sign-in, and the request budget |
| API catalogue | the full endpoint list, the recorded shapes and the daily check |
| Changelog | what changed in each release |
MIT © Tareq Alansari.
Not affiliated with or endorsed by Garmin. Garmin, Garmin Connect, Body Battery and the other Garmin names are trademarks of Garmin Ltd. or its subsidiaries.