Real-Fruit-Snacks188 downloadsTrack gym workouts, exercise volume, streaks, and history on mobile and desktop.
Track strength workouts and rucks inside Obsidian — sets, reps, RPE, routines, insights, streaks, and personal records, on desktop and mobile.
Your training log belongs next to your notes, not in another subscription app. Gym Tracker keeps structured workout data inside Obsidian: log strength sessions and rucks as you train, review volume trends and personal records in Insights, and export sessions as Dataview-friendly Markdown notes. The layout is responsive, so it works the same on your phone at the gym as it does on your desktop.
Requires Obsidian 1.7.2 or newer.
Download main.js, manifest.json, and styles.css from the latest release into <your-vault>/.obsidian/plugins/gym-tracker/, then enable Gym Tracker under Settings → Community plugins.
git clone https://github.com/Real-Fruit-Snacks/obsidian-gym-tracker.git
cd obsidian-gym-tracker
npm install
npm run build
Copy or symlink the repository into <your-vault>/.obsidian/plugins/gym-tracker/, then reload Obsidian and enable the plugin.
| View | What it's for |
|---|---|
| Workout | Build a strength or ruck draft, load routines, import GPX files, run the rest timer, and save the session |
| Insights | Totals, weekly trends, exercise progress, progression suggestions, and personal records |
| Calendar | Browse workouts by date and create a workout for a selected day |
| Routines | Start, edit, or delete reusable workout templates |
| Library | Filter exercises, add your own, inspect history, edit, or delete entries |
| History | Review, edit, export, or delete saved workouts |
| Command | Description |
|---|---|
| Open view | Open the Gym Tracker view |
| Export latest workout to note | Write the most recent workout to a Markdown note |
| Export tracker backup JSON | Create a portable JSON backup in the export folder |
| Load demo data | Fill the tracker with sample data to explore the views |
| Clear tracker data | Reset the tracker to a blank state |
| Setting | Default | Description |
|---|---|---|
| Weight unit | lb |
Used for labels and exports |
| Auto-export workouts | Off | Create or update the Markdown workout note after each save |
| Link exercise notes | On | Use wiki links for exercises in exported workout notes |
| Create exercise notes | Off | Automatically create missing exercise notes when saving a workout |
| Default rest timer | 120 |
Default rest duration in seconds |
| Default workout type | Strength |
Pre-filled when you start a new workout |
| Export folder | Gym/Workouts |
Folder where exported workout notes are created |
| Exercise folder | Gym/Exercises |
Folder where exercise notes are created |
Switch a workout to Ruck mode and select Import GPX. Gym Tracker calculates route distance from the GPX track points, elevation gain from positive elevation changes, and elapsed duration from the first and last timestamps. Enter pack weight and RPE after import to calculate load-distance and preserve how the ruck felt.
Workout data is stored through Obsidian's plugin data storage, inside your vault. GPX files are read locally in the Obsidian app. Gym Tracker never sends workout or location data to an external service — the plugin makes no network requests at all.
Run Gym Tracker: Export tracker backup JSON from the command palette any time to create a portable backup in your configured export folder.
Exported workout notes carry YAML frontmatter, so Dataview queries work out of the box.
Recent workouts:
TABLE date, workout_type, duration_minutes, volume, set_count
FROM "Gym/Workouts"
WHERE record_type = "workout"
SORT date DESC
Rucks:
TABLE date, distance, distance_unit, duration_minutes, pack_weight, pace_minutes_per_mi
FROM "Gym/Workouts"
WHERE workout_mode = "ruck"
SORT date DESC
Bench press sessions:
TABLE date, volume, set_count
FROM "Gym/Workouts"
WHERE contains(exercises, "Bench Press")
SORT date DESC
obsidian-gym-tracker/
├── manifest.json Plugin metadata
├── versions.json Plugin version → minimum Obsidian version map
├── src/main.ts Plugin source (TypeScript, single file)
├── tests/ Vitest unit tests for the data layer
├── styles.css Plugin styles
├── esbuild.config.mjs Build configuration
└── docs/ Documentation site and artwork
src/main.ts, bundled with esbuild.npm test), which also runs in CI on every push and before each release.Contributions are welcome — see CONTRIBUTING.md and CODE_OF_CONDUCT.md for guidelines on pull requests and issues.
Released under the MIT License.