How I track my workouts as markdown
Over the last three months I’ve begun tracking my workouts as individual markdown files.
When I first started tracking my workouts, I was tracking them on paper. This was fine and convenient, but it was a pain when I traveled because I’d have to write them down in a separate note and remember to copy them over later.
I later moved to tracking all the workouts for a given month in markdown. The files were innamed 2025-08 Workout log.md and would have headings for each day and workout.
Here’s an example:
### 2025-08-04
- Bicep curls
- Work
- 28/18/15 @ 20
- Lat raises
- Work
- 21/19 @ 10
- One arm dumbbell rows
- Warm
- 6 @ 20
- Work
- 12/12 @ 50
### 2025-08-05
Still a bit sick, but mostly good
- Bench press
- Warm
- 6 @ 20
- 6 @ 30
- Work
- 12/12/8 @ 50
- Flys
- 9/11 @ 20
- Focusing on a deep stretch at the bottom. Makes the reps much harder.
- Rear delt flys
- Warm
- 6 @ 10
- Work
- Moving up to 15
- 13/11+6 @ 15
This format was focused around semi-structured data. The core idea was that I didn’t want to force myself into everything being super structured, but also maintain some consistency.
These files actually became kind of a pain to deal with, partially because of some Obsidian Sync conflicts. These are documented on the forum and have been somewhat resolved, but I still get the conflicts on occasion.
Moving to a single file per workout has a good few advantages:
- Files are atomic - they track a single workout session
- File contents remain semi-structured with weight and rep data, as well as my thoughts and notes
- Individual files play well with Obsidian Bases
- This solves my Obsidian Sync conflict issues
An example of my new format is:
---
tags:
- workout-log
date: 2026-03-17
workout_type: Pull
max_bpm: 150
---
### Bicep curls
Working set:
- 21 @ 25
- 12 @ 25
- 10 @ 25
### Lateral raises
Working set:
- 17 @ 15
- 16 @ 15
### One arm dumbbell rows
Warm up:
- 6 @ 25
Skipped the usual 35lb warmup set. May be overkill.
Working set:
- 12 @ 45
For cardio workouts, there is some additional metadata surrounding distance and time.
I found this new format much easier to deal with and nice to visualize with Obsidian Bases.