This plugin enables downloading and visualizing your Strava activities to your Obsidian vault.
Since this plugin is not yet available in the Obsidian Community Plugin store, you'll need to install it manually:
- Download the latest release from the GitHub releases page
- Extract the files to your vault's plugins folder:
VaultFolder/.obsidian/plugins/strava-activities/ - The folder should contain:
main.js,styles.css,manifest.json - Restart Obsidian or reload the app
- Go to Settings → Community Plugins and enable "Strava Activities"
-
Create Strava API Application: Login to your Strava account and visit https://www.strava.com/settings/api to create your API application. Use these values:
Application Name: Obsidian Strava Plugin (or any descriptive name) Category: Other Website: https://github.com/saadsaifse/strava-obsidian Authorization Callback Domain: obsidianforstrava
Note for Application Name: Strava has strict brand guidelines. Use a descriptive name like "Obsidian Strava Plugin", "Personal Strava Sync", or "My Strava Data". Avoid using just "Strava" as this violates their brand guidelines.
Once created, note your
Client IDandClient Secret. -
Configure Plugin: Go to Settings → Strava Activities and enter your Client ID and Client Secret, then click Save.
-
Authenticate: Click the Authenticate button to complete OAuth authorization in your browser.

-
Sync Activities: Click the Strava icon in the left ribbon to synchronize your activities.
- Activity Sync: Download summaries of all your Strava activities with smart sync that prevents missing backdated uploads
- Detailed Activities: Get detailed activity information including segment data via right-click context menu

- YAML Frontmatter: Activities now include YAML frontmatter for easy Dataview queries and property-based filtering
- Daily Note Integration: Each activity automatically links to daily notes using
[[YYYY-MM-DD]]format - Map Visualization: View activity routes on interactive Leaflet maps (requires Obsidian Leaflet plugin)

Activities are organized in a clean directory structure:
Vault/
Strava/
2023-09-17/ # Activity date
0123456789/ # Activity ID
Summary.md # Activity summary with YAML frontmatter
Detailed.md # Detailed activity data (created on demand)
map.geojson # Route data for map visualization
- Synchronize Strava Activities: Smart sync that checks for new activities and backdated uploads
- Force Resync All Activities: Complete resync of all activities (useful for troubleshooting)
- Insert Today's Strava Activities: Add today's activities to your current note
- Insert Today's Strava Activity Maps: Add only the maps from today's activities
- Authenticate with Strava: Set up or refresh your Strava connection
Each activity file now includes structured YAML frontmatter with key metrics:
---
activity_id: 1234567890
name: "Morning Run"
sport_type: "Run"
start_date: "2023-09-17"
start_time: "06:30:00"
distance: 5000.0
moving_time: 1800
average_speed: 2.78
average_heartrate: 145
total_elevation_gain: 50.0
---This enables powerful Dataview queries like:
TABLE name, distance, average_speed, average_heartrate
FROM "Strava"
WHERE sport_type = "Run" AND distance > 5000
SORT start_date DESC
- Incremental Sync: Only downloads new activities since last sync
- Backfill Detection: Automatically checks last 30 days for activities uploaded with earlier dates
- Duplicate Prevention: Filters out activities that already exist in your vault
- Detailed Sync Feedback: Shows total activities synced and how many were backfilled
Once you have activities synced, you can add links to today's Strava activities in your daily notes using the available commands:

- The leaflet map doesn't open centered. This is a bug in the Obsidian Leaflet plugin. Until that's fixed, please click on the Reset Zoom button on the left of map to zoom to the activity map.
Hi 👋🏼, if I made your life easier, consider buying me a coffee :) https://www.buymeacoffee.com/saadsaif
Quick starting guide for new plugin devs:
- Install NodeJS, then run
npm iin the command line under the repo folder. - Run
npm run devto compile the plugin frommain.tstomain.js. - Make changes to
main.ts(or create new.tsfiles). Those changes should be automatically compiled intomain.js. - Reload Obsidian to load the new version of your plugin. Or use the hot reload plugin to load changes as they occur https://github.com/pjeby/hot-reload.
- Enable plugin in settings window.
- Update your
manifest.jsonwith your new version number, such as1.0.1, and the minimum Obsidian version required for your latest release. - Update your
versions.jsonfile with"new-plugin-version": "minimum-obsidian-version"so older versions of Obsidian can download an older version of your plugin that's compatible. - Create new GitHub release using your new version number as the "Tag version". Use the exact version number, don't include a prefix
v. E.g.,git tag -a 1.0.0 -m "1.0.0" git push origin 1.0.0 - Github actions will execute upon pushing a new tag and will create a draft release on Github.
- Specify release notes on github and publish the release.
You can simplify the version bump process by running
npm version patch,npm version minorornpm version majorafter updatingminAppVersionmanually inmanifest.json. The command will bump version inmanifest.jsonandpackage.json, and add the entry for the new version toversions.json
- Copy over
main.js,styles.css,manifest.jsonto your vaultVaultFolder/.obsidian/plugins/your-plugin-id/.