An Obsidian plugin for tracking fitness workouts using simple markdown.
Track your workouts directly in Obsidian with interactive timers, editable values, and automatic progress tracking. All data is stored as plain markdown - easy to analyze, backup, and own forever.
- Timers: Count-up for exercises, countdown for rest periods with auto-advance
- Editable values: Click to edit weight, reps, or duration during workout
- Add Set / Add Rest: Quickly add extra sets or rest periods on the fly
- Skip / Pause / Resume: Full control over your workout flow
- Copy as Template: Reuse completed workouts as templates
- Undo support: Ctrl+Z works - syncs timer state with file changes
The easiest way to install and keep the plugin updated, especially useful for mobile:
- Install the BRAT plugin from Obsidian's Community Plugins
- Open BRAT settings (Settings → BRAT)
- Click "Add Beta plugin"
- Enter:
https://github.com/ldomaradzki/obsidian-workout-log - Enable the plugin in Settings → Community Plugins
BRAT will automatically check for updates and notify you when new versions are available. Perfect for mobile users who can't manually copy files!
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Create folder:
<vault>/.obsidian/plugins/workout-log/ - Copy the files into the folder
- Enable the plugin in Obsidian settings
Coming soon.
Create a code block with the workout language:
```workout
title: Morning Workout
state: planned
startDate:
duration:
restDuration: 45s
---
- [ ] Squats | Weight: [60] kg | Reps: [10]
- [ ] Rest | Duration: [45s]
- [ ] Bench Press | Weight: [40] kg | Reps: [8]
- [ ] Plank | Duration: [60s]
```| Field | Description |
|---|---|
title |
Workout name (displayed in header) |
state |
planned, started, or completed |
startDate |
Auto-filled when workout starts |
duration |
Auto-filled when workout completes |
restDuration |
Default duration for "+ Rest" button |
- [ ] Exercise Name | Key: [value] unit | Key: value
[ ]pending,[\]in progress,[x]completed,[-]skipped[value]= editable,value= lockedDuration: [60s]= countdown timer
title: Push Day
state: planned
startDate:
duration:
restDuration: 90s
---
- [ ] Bench Press | Weight: [60] kg | Reps: [8]
- [ ] Overhead Press | Weight: [30] kg | Reps: [10]
- [ ] Tricep Dips | Reps: [12]
title: Quick HIIT
state: planned
startDate:
duration:
---
- [ ] Jumping Jacks | Duration: [30s]
- [ ] Rest | Duration: [10s]
- [ ] Burpees | Duration: [30s]
- [ ] Rest | Duration: [10s]
- [ ] Mountain Climbers | Duration: [30s]
npm install
npm run build # Production build
npm run dev # Watch modeMIT



