Future-proof Your Digital Training Logs with Markdown

Andrew O

Andrew O

12 min read Tags: Training

Table of Contents


Introduction

Let me ask you this question: how confident are you that the app you are currently using to track your training progress will still be around in 10 years? Or even 5 years?

I think the answer is obvious: you can’t be sure. Apps come and go, and with them, your data. Some will allow you to export it, but in a format that is not very useful. Others will simply shut down, and you might lose everything. This is a problem that I personally faced more than once, and today I want to share with you the solution I found, as well as the reasons why I think it is the best one.

But first, let me make a note: this applies to the digital training logs. If you are using a good old paper notebook, you are already future-proofed. Congratulations!

For the rest of us, let’s dive in.

Plain text

Think about plaintext as the lowest common denominator of digital formats. The reason you would choose it is that it simply a file with text. You can use it on any device, and there is a plethora of apps that support it. Even if the app you are using now goes away, you can still read and edit the files, for example .txt can be opened in any text editor.

Why would you choose it over a fancy app with pretty interface, graphs and other features?

The answer is independence - instead of becoming dependent on an app, adopt a plain text format that gives you flexibility to use it anywhere. Besides txt, there are other formats that offer more features like headers, lists, and links.

Let me introduce you to Markdown.

Markdown

if you are already familiar with Markdown, you can skip this section.

Out of available plaintext formats, I recommend Markdown. It is lightweight, easy to learn and use, and offers a lot of features that make it a good choice for training logs. It was designed to be easy to write and read, which is important for a training log that you will be using often. Markdown files are saved with .md extension, for example Training.md.

Next, we need to introduce the concept of rendering. When you open a markdown file in a markdown editor, it will render the file, meaning that it will show the formatted text, not the markdown syntax (e.g. “#” will disappear and render headers, “-” will become a bullet point, etc.).

demo

Markdown editing/viewing demo - click to enlarge

In the demo above, you can see me switching between “edit” and “preview” modes in Obsidian.

You can try out Markdown with some online editor, for example markdown live preview, or 4markdown. Works on mobile just as well, for example markdown editor.

Markdown editors

There are plenty editors available, and I encourage you to try a few to see which one you like the most. They are usually free, so you can check them out without any risk.

Here are some that I recommend:

  1. Obsidian - the one that I use personally, also for note-taking beyond training logs. Reasons I use it: good sync between devices, good interface, and a lot of plugins. I use both on mobile and desktop.
  2. Typewriter - a simple and clean editor, available on mobile and desktop.
  3. Typora - a popular choice, with a good interface and a lot of features.
  4. Bear - a good choice for Apple users, with a clean interface and good sync.
  5. NeoVim - for the more advanced users, a powerful text editor that can be used for Markdown as well. My second choice after Obsidian, for desktop use.

Whatever editor you choose, the main advantage of using plaintext format is that if you decide to switch, or if the app you are using goes away, you simply take the file and open it in another app.

When, for example, Obsidian is no longer maintained or gets replaced by something better, I can simply take my files and open them in another app that supports Markdown — this is the beauty of plain text.

Sync and backup

The second component to making a truly future-proof log is to sync and backup the files, so that you don’t lose them in the long term.

This doesn’t have to be complicated. If your app of choice supports sync between devices, you are good to go. If it doesn’t, you can use some cloud service, and place the markdown files into a folder that is shared and synced between devices. This also allows you to use different editors on different devices, and still have the same files with the same markdown syntax.

I personally use Obsidian Sync for this, as I mostly write and edit on logs on my phone, and then analyze them on the computer.


Log format

Next, let’s talk about how to structure the training log. This is a personal choice, and what I provide below is a tried and tested system that I developed over the years. You can borrow some of the techniques and ideas, and adapt them to your needs.

Structure

Usually I think about training periods in terms of seasons (e.g., winter season with more steel, summer season with more activities, spring/autumn - transition periods), and seasons make up a year - so I have one file per year (e.g. 2025 Training.md). This way, it is easy to go back to a certain training block and analyze it.

Within that file, I structure the log by date (as a heading), with an optional location or workout name. Then I list the exercises/activities, with weight, reps, and sets.

The dates within the file go in reverse order, so that the most recent training session is always at the top. This way, you don’t have to scroll down to enter the new data. When analysing the log, you will go from bottom to the top.

Weight, reps, and sets

There are many ways to log the weight, reps, and sets, and I don’t want to trigger a debate on what is the best one, particularly about where to place the reps and sets. The one that I use involves the following structure:

Shortcuts

You might point out that writing a full length of the exercise name into a text file during the training session might be a bit cumbersome. I agree and see two ways to deal with this:

The first option works when you are training within a highly structured program. Still, sometimes you might want to add an exercise on the fly. For example, the accessory work that you do at the end of the session.

In order to tackle this, I’m using a system of shortcuts. They are defined in a separate file with the list of shortcuts, so that I can decipher them later even if I forget what they mean. Some of them might be familiar, and some not - I borrowed a few from the books and articles, and some I developed myself. Fore example, you would likely already know “RDL” for Romanian Deadlifts, or “GHD” for Glute-Ham Raise.

Extending on this, “DL” stands for “Deadlift”, while “SDL” stands for “Sumo Deadlift”, “JDL” for “Jefferson Deadlift”, and so on.

For some exercises, a shortcut offers ridiculous time savings - good example is “Chuck Sipes Gooseneck Wrist Curls” which I shorten to “GCurl”. I do this exercise consistently, and just this one shortcut saves me a lot of time. Shout out to APS1 for introducing me to this exercise in his book.

I encourage you to develop your own system of shortcuts, this way it will also be easier to remember and use.

See below for the list of shortcuts that I use often:

My Commonly Used Shortcuts (click to expand)
  • SQ - Squat
    • ZSQ - Zercher Squat
    • FSQ - Front Squat
    • BSQ - Back Squat
    • GSQ - Goblet Squat
    • HSQ - Hunter Squat
  • DL - Deadlift
    • SDL - Sumo Deadlift
    • JDL - Jefferson Deadlift
    • RDL - Romanian Deadlift
    • ZDL - Zercher Deadlift
  • BP - Bench Press
    • OHP - Overhead Press
    • HKP - Half-kneeling Press
  • PU - Pull-ups
  • PS - Push-ups
  • DPS - Diamond Push-ups
  • TGU - Turkish Getup
  • BCurl - Bicep Curl
    • GCurl - Gooseneck Wrist Curl
    • BRC - Brachialis Curl
    • HCurl - Hammer Curl
  • CP - Clean and Press
  • LC - Long Cycle
  • WC - Weighted Carry
  • W-UP - Warm-up

Some exercises are not shortcutted, for example I write Row, Dips, Swing, Snatch and Clean often in full, simply because they are already short.

Training implements

Sometimes it is useful to note which training implement you used for the exercise. Some exercises like OHP or TGU can be done with a kettlebell, dumbbell, or barbell.

Here the system is simple:

For example, a Barbell Overhead Press, 70kg for 2 sets of 5: OHP BB: 70x2x5.

Pull-ups bodyweight: PU BWx15 or weighted: PU 15x5

Comments

One of the best moments about analyzing your training logs is to see a comment that you wrote a long time ago, and remember the context. It can be just a note about how a certain exercise felt, or a summary of the training block. Raw numbers already tell a good story that you can analyze now and in the future, but comments add a lot of context and your understanding of the training progress at that moment in time.

I use “>”, which is the Markdown syntax for blockquotes, to add comments. This way, they are visually separated from the rest of the log, and easy to spot.

For example: img Here I give context about the weather and how it affected my training session.

Indicating PRs and failed lifts

Nothing beats finishing a PR and putting it in the books. But what about failed lifts?

I think logging a failed attempt is as important as logging a PR. This way, the log is more complete and provides a better picture of your training progress.

For PRs, the way to log it is simple: add (PR) after the weight, reps, and sets. In the example below, you can see that a PR in the squat was hit:

img

For failed lifts, I use a dot .. The dot can replace or extend the rep number. In the screenshot above, you can see that last set of deadlifts was a failed attempt, logged as:

Another example for multiple attempts: three failed attempts in the squat at 100kg would be written as:

The dot can be appended to indicate a set to failure. For example, a set of squats until failure at 100kg(10 reps, 11th failed):

Cardio and aerobic activities

I also log cardio and aerobic activities, like running, hiking, cycling, or swimming in the same log - it is all training after all. Here, the structure is similar, the main difference being that instead of reps, usually the distance or time is logged.

Logging the distance is straightforward, for example, a 5km run:

Logging the time is done using ' for minutes and " for seconds. For example, extending the previous example to include the time:

Same system is used to log intervals, for example 5x400m run with 1 minute rest between:

Effort level

Effort level indicates how hard a given set or interval was, and is useful for both lifting and cardio activities.

For lifting, commonly used system is RPE (Rate of Perceived Exertion), which goes from 1 to 10, with 1 being very easy and 10 being maximum effort.

When logging a lift, add RPE at the end, for example a set of squats at 100kg with RPE 6:

For cardio and aerobic activities, I use a percentage system, where 100% is the maximum effort. For example, a set of hill sprints at 90% effort:

Supersets, complexes and circuit training

For supersets, circuits, or complexes we can utilize indentation to show that exercises are done together. On a higher level, indicate what kind of training it is, and list individual exercises as subpoints. Rest periods or other info also indicated on top level.

Shortcuts for types of circuits/supersets:

For example, 5 supersets of Pull-ups and Push-ups:

- SS x5
  - PU: BWx10
  - PS: BWx10

Slow circuit of kettlebell Swings, Goblet Squats, and Push-ups, 3 rounds:

- SC x3
  - Swings KB: 24x10
  - GSQ: 24x10
  - PS: BWx10

Circuit training of bodyweight Pull-ups, Push-ups, and Squats with 1 minute rest, 5 rounds:

- C x5 (1' rest)
  - PU: BWx5
  - PS: BWx15
  - SQ: BWx10

Examples

Let’s take one or two examples to see how the log looks in practice.

Example 1

img

Example 2

img

Conclusion

I hope that after reading this article, you will consider making a choice towards a more future-proof and flexible way of logging your training progress, and borrow some of the ideas and techniques that I shared here.

Approach provided here will allow you to track your training progress consistently for years to come, be independent of the app, device, operating system, and even the internet connection.

Feel free to leave a comment below, and have outstanding training!

Andrew

Recent Posts

/../assets/images/posts/tmux1.png
GIF/WebP Screen Capture on Wayland(Hyprland)

An easy way to create a screen capture on Wayland(Hyprland) to WebP or gif format

Tags: Linux
Andrew O

Andrew O

3 min read
/../assets/images/posts/gdb1.png
GDB Quick Reference for Most Used Commands

A quick reference for the most commonly used GDB commands for debugging C/C++ programs.

Tags: Linux
Andrew O

Andrew O

3 min read
/../assets/images/posts/tgu1.png
Heavy Kettlebell Turkish Getups, part 1

Benefits, drawbacks, forearm pain

Tags: Training
Andrew O

Andrew O

6 min read

Leave a comment