viscosenpai21 downloadsLog weight training sessions to notes in a Dataview-friendly format.
Workout Logger is an Obsidian plugin designed to efficiently log your daily strength training sessions and visualize your progress through a built-in dashboard. Log entries are written in a Dataview-compatible inline metadata format, making it easy to build custom queries on top of your data.
Open Dashboard command) showing charts for body metrics, calories burned, and per-exercise performance across selectable time ranges (Week / Month / Year / All Time).Open Logger command to record a workout session.weight × reps, rounded to integer) and estimated 1RM (Epley formula) are calculated automatically.有酸素 (Cardio), the form switches to speed (km/h), incline (%), and duration (min) inputs. Calories are calculated using a VO₂-based walking formula.This plugin is not yet available in the Obsidian community plugin registry. Install it manually by building from source.
Clone and place the repository
Create a folder (e.g. workout-logger) inside your vault's .obsidian/plugins/ directory and place the project files there:
YourVault/.obsidian/plugins/workout-logger/
Install dependencies
npm install
Build the plugin
npm run build
This produces main.js in the same directory as manifest.json.
Enable the plugin in Obsidian
Go to Settings → Community plugins, find Workout Logger, and toggle it on. If this is your first community plugin, you may need to disable Safe Mode first.
Open Settings → Workout Logger to configure the following options.
| Setting | Description | Default |
|---|---|---|
| Exercise Folder | Vault folder where exercise notes are stored | Gym/Exercises |
| Calculate Calories Burned | Toggle calorie calculation on/off | Off |
| Default Body Weight (kg) | Body weight used for calorie calculation (shown when calorie calculation is on) | 60 |
| Default Body Fat Percentage (%) | Body fat % recorded with each entry (shown when calorie calculation is on) | 0 |
| Body Metrics Note | Path to the note where daily body weight and body fat % are recorded (shown when calorie calculation is on) | Gym/BodyMetrics |
Gym/Exercises/Bench Press.mdNew exercise notes are created with the following YAML frontmatter template:
---
target_muscle: ["Chest"]
equipment: "Barbell"
is_assisted: false
---
# Bench Press
## Log
Strength log entry format:
- [date:: 2026-04-05] | [weight:: 80] kg x [reps:: 5] | [volume:: 400] | [rm:: 93.3] | [rpe:: 8.5]
- [date:: 2026-04-05] | [weight:: 80] kg x [reps:: 5] | [volume:: 400] | [rm:: 93.3] | [duration:: 10] | [calories:: 52]
Cardio log entry format:
- [date:: 2026-04-05] | [speed:: 6] | [incline:: 2] | [duration:: 30] | [calories:: 180]
Field reference:
| Field | Description |
|---|---|
date |
Workout date (YYYY-MM-DD) |
weight |
Weight used per set (kg or lbs) |
reps |
Repetitions per set |
volume |
Volume = weight × reps (rounded to integer) |
rm |
Estimated 1RM using the Epley formula |
rpe |
Rate of Perceived Exertion (6–10, 0.5 steps). Omitted if not selected |
duration |
Time in minutes. Per-set value (total duration ÷ number of sets). Only when calorie calculation is enabled |
calories |
Estimated calories burned. Only when calorie calculation is enabled |
speed |
Cardio speed in km/h |
incline |
Treadmill incline in % |
Gym/BodyMetrics.mdWhen calorie calculation is enabled, body weight and body fat % are automatically appended once per day when a workout is logged. If an entry for that date already exists, it is skipped.
# Body Metrics
## Log
- [date:: 2026-04-04] | [body_weight:: 70] | [body_fat_percentage:: 15]
- [date:: 2026-04-05] | [body_weight:: 69.8] | [body_fat_percentage:: 14.9]
Install and enable the Dataview community plugin to query your workout data.
TABLE
max(rm) AS "Best 1RM",
sum(volume) AS "Total Volume"
FROM "Gym/Exercises"
WHERE date
GROUP BY date
SORT date DESC
TABLE
max(rows.weight) AS "Weight (kg)",
max(rows.reps) AS "Reps",
max(rows.volume) AS "Volume",
max(rows.rm) AS "1RM",
max(rows.rpe) AS "RPE"
FROM "Gym/Exercises"
FLATTEN file.lists AS L
WHERE L.date AND file.path = this.file.path
GROUP BY L.date
SORT L.date DESC
TABLE
body_weight AS "Weight (kg)",
body_fat_percentage AS "Body Fat (%)"
FROM "Gym/BodyMetrics"
FLATTEN file.lists AS L
WHERE L.date
SORT L.date DESC
MIT