Exercise and workout dataview ideas

I’m still redoing a bunch of metadata for my fitness stuff so some of these aren’t completely filled out with examples, but I wanted to post some ideas for using obsidian and dataview to track workouts.

name Add Workout
type note(New Workout) template
action Workout Template
class dataview-button

table Date, Type, set-type, planned-rpe, Sets, Reps, max-hr, Calories
from #workouts  
sort date desc

Area:: Fitness


Set Type::

Planned RPE::
Computed Conversion Multiplier:: =choice(this.Reps = 2, 0.97, choice(this.Reps = 3, 0.94, choice(this.Reps = 4, 0.92, choice(this.Reps = 5, 0.89, choice(this.Reps = 6, 0.86, choice(this.Reps = 7, 0.83, choice(this.Reps = 8, 0.81, choice(this.Reps = 9, 0.78, choice(this.Reps = 10, 0.75, choice(this.Reps = 11, 0.73, choice(this.Reps = 12, 0.71, choice(this.Reps = 13, 0.7, choice(this.Reps = 14, 0.68, choice(this.Reps = 15, 0.67, choice(this.Reps = 16, 0.65, 1)))))))))))))))
Conversion Multiplier::


Max HR::
Average HR::



Today’s Exercises

table number(master-exercise.one-rep-max) * number(this.conversion-multiplier) * number(this.planned-rpe) as "Goal Weight", Weight, choice(number(master-exercise.one-rep-max) * number(this.planned-rpe) < Weight, "✅", "-") as PR, master-exercise as "Master Exercise", this.sets as Sets, this.reps as Reps, weight/number(this.conversion-multiplier) as "Today's 1 Rep Max"
from #exercises 
where Workout = this.file.link
sort file.name desc



  • [ ] Update Max Weights if applicable
table master-exercise, master-exercise.one-rep-max as "1 Rep Max"
from #exercises
where Workout = this.file.link
sort file.name asc

name Add Exercise
type note(New Exercise) template
action Exercises Template
class dataview-button

table date as date____, pr, master-exercise as master_exercise____, workout as workout____, master-exercise.family, master-exercise.one-rep-max
from #exercises 
where !contains(file.name, "Template")
sort date asc



Master Exercise::


Computed One Rep Max:: =this.master-exercise.rep-max
One Rep Max::

Computed Sets:: =this.workout.sets

Computed Reps:: =this.workout.reps

Goal Weight::

Computed Planned RPE::=this.workout.planned-rpe
Planned RPE::

Conversion Multiplier::
Todays Rep Max::

table Family, one-rep-max as "1 Rep Max", workouts, exercises, muscle-groups
from #masterexercise 
where !contains(file.name, "Template")
sort family asc

There are still things that I’m tweaking, but should give you some ideas and I’ll try to update this with improvements I make.



I really like the idea, you’ve given me a couple of thoughts that need to percalate a little. Thanks

1 Like

Evening ladies and gents - I’m a noobie to Dataview and could do with some help.

I’m trying to figure out how to access the source element from the YAML.

At the moment, I’m using:

from "Podcasts"
where contains(file.source, "Tim Ferriss")

Have I got this right?

Thanks very much in advance

1 Like

Try this:

table file.mtime 
from "Podcasts"
where source = "Tim Ferriss"

@arminta Interesting in implementing something like this. Did you end up making any changes additional changes after tweaking things?

thx so much @arminta !

do the tiny black sort buttons:

do anything (ie sort?) or are they just GUI eycandy?

thx so much


Hi @arminta
Are you able to share the whole document set ?
I will adapt to my own?
Thanks in advance

Sortable plugin https://github.com/obsidianmd/obsidian-releases

I don’t think she is supporting this any more. I have started to build something, based on this information. It is at detailed yet, but I am continuing to work on it. I posted a video on YouTube. How to use Obsidian to keep a workout log - YouTube

1 Like

Wow I really love your approach and I’m wondering how can I merge it with my approach.

Let me explain it cause You might be interested.
I have an exercise database. So Using the DB Folder plugin I have a folder with a lot of exercises notes that in it’s YAML it is organized by

  • muscle group (hamstrings, shoulders…),
  • skill you are working (coordination, balance, strength…),
  • equipment needed (rings, dumbell…),
    difficulty (1-5),
  • actual status(in my domain, inprogress, next target, out of reach),
  • type of activity (calisthenics, capoeira, gym, )

My idea was to register every workout that I do using a macro (as you brilliantly explain) adding some more fields for quality data (like observations about form or posible disconforts that may occur).
I also would love to create a track of every exercise progression in its own note.
So each exercise note has:
the YAML info to classify for the DB folder plugin.

  • A descripcion of the exercise and a tutorial for the progression
  • A gif(or youtube link) where you can see the movement pattern
  • Certain tips or considerations
  • A table or query with all the workouts that I work that particular exercise.

If you like my approach we should contact each other, I can share with you my exercise database and you can do your magic and see how can we improve it. Because unfortunately my knowledge in programming and queries is very limited.

I think you can benefit from this perspestive because it focus not only in progressing in a limited range of movements but also in unlocking some new ones.

Keep up with this good work!!!

Oh, That’s great Really i like your database template, I want to ask a question. How do I compile this database for my Business?Actually I am owner of a company that provides online services like exercise and in home care. and accroding to my opinion this database is fit for my business.