Exercise.txt
Re-interpretation of todo.txt for fitness logging. A single line in exercise.txt represents a single activity. This can interpreted flexibly to based on you needs. For example a line could be run, lift or whole workout.
Todo.txt Components
timeline
Priority : (A)
Date: 2025-11-29
Description: Things I need to do
Project: +jobs
Context: @home
Metadata: key;value
(A) 2025-11-29 Things I need to do +jobs @home key:value
Entries start with an optional priority and creation date. Description is unstructured and follows these. It can optionally contain contexts, prefixed with @, or projects prefixed with + and followed by any non-whitespace characters. Metadata can be added with key:value pairs containing non-whitespace characters.
Anatomy of a workout
Recording an activity is likely to involve:
- When it happened
- The activity (run, gym, hiking, yoga etc.)
- Description (what, where, who with)
- Movements, their intensity and volume
- Performance (Time, rounds, score etc.)
- Additional tags (personal best, injury)
Todo.txt programs make searching by priority, context and projects easy. The aim of workout logging is to identify previous performance. Therefore we need to quickly be able to find a previous workout or exercises.
Mapping this to todo.txt syntax:
| Item | Syntax | Example |
|---|---|---|
| Date | YYYY-MM-DD | 2025-11-29 |
| Activity | +activity | +crossfit |
| Description | Free text including zero or many @movements | 5rft @run 400m @DU x75 |
| Movements | @movement intensity volume | @C&J 70kg 1rm |
| Performance | Time/rounds/score | 12:22 |
| Tags | +tag1 +tag2 | +pb +injury |
The use of projects and contexts is a little arbitrary. In todo.txt projects are longer running goals, whilst contexts are where/how a thing will get done.
Projects are interpreted as the activity and any additional tags that it might be useful to filter against. Contexts are primarily reserved for movements, but might also be used for things like climbing grade and partners.
I can't see a good use for priority, though you could have codes for personal bests instead of a tag.
Examples
Cardio
Likely to include a movement or event, an intensity as a distance or calories and the performance (usually time):
2025-11-29 @run 5k 22:11
2025-11-29 @run half-marathon 03:05:20
2025-11-29 @row 60cal 35m56s +pb
2025-11-29 @tough-mudder 02:25:34 +injury
Strength
Include a movement, an intensity as a weight and/or variation (close-grip, banded etc.), volume as reps +/- sets. The performance may not be relevant for a programmed lift, but could be the weight (e.g. a 1RM test) or number of reps.
2025-11-29 @pull-ups x10x3
2025-11-29 @burpees x30 25s
2025-11-29 @C&J 70kg x1
2025-11-29 @C&J 1RM 70kg
2025-11-29 @back-squat 120kg x5x3
Workouts
Recording a workout can be done in varying levels of detail depending on your needs. It might just be a record that you showed up, include every movement in detail or anything in between.
Would include the name of the activity, an optional description that might list the movements done, and any relevant performance metric (time, rounds, heaviest lift etc.).
2025-11-29 +bootcamp
2025-11-29 +gym @starting-strength @squat 80kg @bench 45kg @DL 90kg
2025-11-29 +crossfit @wod Rx 13:45
2025-11-29 +crossfit @251129 scaled 5+45
2025-11-29 +crossfit @dork 6RFT @skip x120 @USA-KBS x30 @burpee x15 22:26
2025-11-29 +crossfit ft @rope-climb x5 @power-clean 105lb x10 @burpee x20 @bike 40cal @burpee x20 @power-cleans x10 @rope-climb x5 12m22s
2025-11-28 +crossfit ft 21-15-9 @WB @T2B rest 2m 12-12-9 @WB @T2B 13:01
2025-11-26 +crossfit 5rft @run 400m @DU x75 12m24s
Sports
2025-11-29 +football @5AS @norwich-fc @away mid-field 4-1
2025-11-29 +tennis @Claire 2-1
2025-11-29 +rugby @harlequins @home forward 26|15
Climbing and Hiking
Indoor bouldering session might include date, location, style and number of routes of each grade completed:
2025-11-29 +bouldering @rainbow-rocket @black 1 @blue 3 @green 5 @white 8
Outdoor routes might be logged one per line with location, route name, grade, ascent style and partner. Scrambles, summits and routes can also belonged similarly.
2025-11-29 +climbing +troy-quarry bob the gob @VS @4c TR
2025-11-29 +climbing +wallowbarrow-crag Trinity slabs with @Ann @VD ** 2nd
2025-11-29 +scramble +tryfan North Ridge @summer @gradeI *** solo
2025-11-29 +scramble +beinn-narnain @winter @gradeI * roped
2025-11-29 +summit +caringorms Ben Lawyers @winter with @Sam 19km +munro
Wellbeing practices
Might include date, position, type, time, reflecition:
2025-11-29 +meditation @sitting @mindfullness 15m
2025-11-29 +meditation @walking @loving-kindness 30m
2025-11-29 +yoga @vinyasa 60m @Tom peaceful
2025-11-29 +yoga @ashtanga 90m tired and sore
Notes
Recording time
Multiple options:
- hh:mm:ss (e.g. 01:22:34)
- hms as units (e.g. 5m or 2h35m or 30s)
Single line per day vs multiple
Depending on your goals a day can be condensed into a single line or each exercise can be a separate line. For crossfit, the strength or skill component might be one line and a description of the WOD on another line. If tracking total volume (e.g. powerlifting) is important then each lift can be a separate line or total volume recorded as the performance, or the final working set of each lift condensed into one line.
Use of projects and contexts
Anything you want to be searchable should be one of these. Important to be consistent as you don't want @pull-ups and +pull_ups confusing things. Finding your squat 5RM should be easy, ideally filter @squat & +pb sorted by date will tell you this (and how long ago it was...).
Completion
If you have planned a program, you could pre-enter your workouts and complete and archive them as they are completed, using the archive as the record of work done.