FitKit

by Paul Chiu
5
4
3
2
1
Score: 49/100

Description

The FitKit plugin tracks workouts in normal Markdown notes using Dataview inline fields for sets, reps, weight and duration. It opens a form based editor for logging during a session, supports a rest timer, autosaves changes and keeps the saved note readable if the plugin is removed. New workouts can be created from a command, exercise notes can be created on first use, and each card can store a next session plan with increase, keep or decrease options and an optional weight step. It also generates a dashboard with recent sessions, personal bests, next session plans and per exercise progression charts. The exercise registry can rename or consolidate exercise names across workout history, and Dataview is required for history tables and recent session views.

Reviews

No reviews yet.

Stats

2
stars
2,111
downloads
0
forks
49
days
0
days
0
days
309
total PRs
2
open PRs
32
closed PRs
275
merged PRs
51
total issues
6
open issues
45
closed issues
360
commits

RequirementsExperimental

  • Dataview plugin

Latest Version

11 hours ago

Changelog

Added

  • Open dashboard in a workout note's more options (⋯) menu rebuilds the dashboard and opens it in a new tab.

README file from

Github

FitKit

FitKit is a workout tracker for Obsidian. Your sets, reps, weight, durations, interval sessions, and bodyweight rungs are stored as plain Markdown in your vault, edited through a form built for use during workouts, with a rolled-up dashboard and per-exercise progression charts when you need it.

Every workout is a normal note with Dataview inline fields. If you uninstall FitKit tomorrow, your training history is still plain text in your vault. You choose where to store the notes and how you use your data.

The workout editor is optimised to be low-touch so you can expend workout effort on reps rather than data entry. Tap to add a set, type the weight, that's it. Once you have a few workouts logged, the dashboard and the per-exercise charts auto-populate.

Install

FitKit needs the Dataview plugin to render history tables and recent-session views. Install it first from Obsidian's community plugins.

FitKit is listed in Obsidian's community plugin directory. To install it from the community plugins browser:

  1. Open Settings, then Community plugins, then Browse.
  2. Search for FitKit.
  3. Select Install, then Enable.

For beta builds with BRAT or a manual install from a GitHub release, see Install.

Log your first workout

The defaults are designed so you can log a workout the moment FitKit is enabled. No setup is required.

Workout editor with a strength card and an interval card part way through its plan

  1. Run Open today's workout from the command palette. FitKit creates today's note under Fitness/Workouts/ and opens it in the editor.
  2. Add an exercise. Type the name, for example Squat. If it is new, FitKit asks whether to create an exercise note for it; say yes for anything you want to chart and revisit later.
  3. Log your sets: weight and reps for a strength exercise, a duration for a time-based one, or a rung and reps for a bodyweight one. Tap the rest timer between sets if you want it.
  4. Before you move on, open the card menu and set a plan for next session: increase, keep, or decrease, with an optional weight step. It shows up as a badge on the card, and prefills the weight the next time that exercise comes around.

That is it. The editor autosaves as you go, and the underlying Markdown stays readable:

---
type: workout
date: 2026-05-12
name: Squat Day
---

## [[Squat]]

- [exercise:: [[Squat]]] [set:: 1] [weight:: 50] [reps:: 5]
- [exercise:: [[Squat]]] [set:: 2] [weight:: 55] [reps:: 5]

## [[Push Up]]

- [exercise:: [[Push Up]]] [set:: 1] [level:: 2] [reps:: 8]
- [exercise:: [[Push Up]]] [set:: 2] [level:: 2] [reps:: 6] [load:: 10]

Run an interval session

For timed sessions such as Tabata, over-unders or EMOMs, switch a duration card to interval with Change type... in the card menu. The plan form opens with common sessions to start from, or you can build your own from steps, rests and repeats, with a watts, load or level target on each step.

Start then takes over the tab with a big clock: it counts each step down, beeps the last three seconds, and writes every rep to the note as it finishes, with the time you did and the intensity you held.

An interval card on a phone with its plan profile and logged reps, beside the runner counting down an over step

The plan and the rows are plain inline fields too:

## [[Indoor Bike]]

- [exercise:: [[Indoor Bike]]] [plan:: (x 8 (work 20s 400W) (rest 10s))]
- [exercise:: [[Indoor Bike]]] [set:: 1] [step:: work] [duration:: 20] [watts:: 405] [rest:: 10]
- [exercise:: [[Indoor Bike]]] [set:: 2] [step:: work] [duration:: 20] [watts:: 398] [rest:: 10]

Because the run lives in the note, a phone closing Obsidian mid-session does not lose it: reopening the workout picks up from the clock. See Interval training for writing plans, the runner, and managing interval exercises over time.

After a few sessions

Run Sync and repair everything from FitKit's settings to generate Fitness/Fitness Dashboard.md. It lists your recent sessions, a personal best per exercise, and any next-session plans you recorded, followed by a per-exercise section backed by a Dataview query.

Generated dashboard with recent workouts, PBs, and next session plans

Exercise notes pick up a progression chart and a Recent sessions table without you wiring anything up. They are ordinary notes with type: exercise frontmatter, so the Notes section is yours to write in.

Maintaining your exercise list

Names drift. You log 'Pushup' one week and 'Push Up' the next, or an exercise ends up living only in workout history with no note behind it. The registry in FitKit's settings lists every exercise the plugin knows about, labelled by where it came from, and is where you fix that.

Registry table showing note-backed, registry-only, and history-only exercises

Renaming from here renames the exercise note, rewrites every reference across your workout notes, and keeps the old name as an alias so nothing stops resolving. You see a preview of every file and row that will change, and can cancel before anything is written. Renaming onto a name already in use consolidates the two.

Documentation

Page What it covers
Workout editor Cards, sets, durations, the rest timer, next-session plans, autosave.
Interval training Setting up interval cards, writing plans, common sessions, running and managing.
Exercise registry Where exercises come from, rebuilding, renaming, consolidating, kinds and units.
Dashboard and charts What the dashboard generates, how a PB is chosen, fitkit-chart options.
Note format Frontmatter, inline fields, and exactly what survives a save.
Settings and maintenance Every setting, every maintenance action, and the two commands.
Install Installing with BRAT for beta builds, and installing manually from a release.

Limitations

  • Conflict resolution is manual. FitKit detects mid-edit file changes and asks you to reload before further edits.
  • Splitting one exercise into two is not implemented. Consolidating two into one is.
  • Repeat-last-workout is not implemented.
  • Inline fields FitKit does not recognise, such as [rpe:: 7], are dropped the next time the editor saves that note. Everything else in a workout note is preserved, see Note format.
  • Interval beeps cannot sound while a phone has Obsidian suspended in the background. The run itself catches up when you return.
  • A per-exercise weight unit (kg or lbs) only changes labels. There is no numeric conversion.
  • SQL/WASM analytics and a custom fenced source format are not implemented.

Development

See CONTRIBUTING.md for how to propose changes and what a good PR looks like.

Run npm install to install dependencies.

Run npm run dev to start esbuild in watch mode. It produces main.js next to manifest.json at the repo root.

To point a dev vault at the build, symlink main.js, manifest.json, and styles.css from the repo root into <vault>/.obsidian/plugins/fitkit/. Reload Obsidian, or toggle the plugin off and on, to pick up new builds.

The local gate is npm test, npm run lint, and npm run format. Run all three before pushing.

On merge to main, the Release workflow stamps a version using the PR's label (major, minor, patch, or norelease) and publishes a GitHub release with main.js, manifest.json, and styles.css attached.

To test a change through BRAT first, label its open PR beta. Each push then publishes a prerelease that only BRAT installs, and the store keeps the stable release until the PR merges. See CONTRIBUTING.md.

See AGENTS.md for project conventions.

License

MIT.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Dataview
6 years ago by Michael Brenan
A data index and query language over Markdown files, for https://obsidian.md/.
Note Toolbar
3 months ago by chrisgurney
Flexible, context-aware toolbars for your notes in Obsidian.
Breadcrumbs
5 months ago by skepticmystic
Add typed-links to your Obsidian notes
Charts
6 years ago by phibr0
Charts - Obsidian Plugin | Create editable, interactive and animated Charts in Obsidian via Chart.js
Sheet Plus
3 months ago by ljcoder
obsidian spreadsheets solutions
Heatmap Calendar
5 years ago by Richard Slettevoll
An Obsidian plugin for displaying data in a calendar similar to the github activity calendar
MetaEdit
5 years ago by Christian B. B. Houmann
MetaEdit for Obsidian
Charts View
5 years ago by caronchen
Data visualization solution in Obsidian, support plots and graphs.
Smart Chat
3 months ago by 🌴 Brian
DataCards
a year ago by Sophokles187
Obsidian Plugin that transforms dataview tables into visually appealing and customizable card layouts.
Bases Charts
5 months ago by Moritz Jung
Notion Bases
3 months ago by bgarciamoura
Turn any folder into a Notion-style database — 7 views, 17 column types, formulas, relations, rollups, and subtasks. All stored in plain Markdown frontmatter.
Dataview Serializer
2 years ago by Sébastien Dubois
Obsidian plugin that gives you the power of Dataview, but generates Markdown, making it compatible with Obsidian Publish, and making the links appear on the Graph.
Gantt Calendar
3 months ago by Sugar
obsidian-gantt-calendar
Table to CSV Exporter
4 years ago by Stefan Wolfrum
An Obsidian Plugin that allows to export tables from a pane in reading mode to CSV files.
Link Tree
3 years ago by Joshua Tazman Reinier
A sidebar foldable list of Obsidian link hierarchies.
Dataview Publisher
2 years ago by UD
Output markdown from your Dataview queries and keep them up to date. You can also be able to publish them.
Simple Note Review
4 years ago by dartungar
Simple, customizable plugin for easy note review, resurfacing & repetition in Obsidian.md.
Tasks Map
a year ago by NicoKNL
A graph view of your tasks.
Better Inline Fields
4 years ago by David Sarman
Obsidian plugin to enhance Dataview style inline fields
Slash snippets
a year ago by echo-saurav
Insert snippet of text with slash command
Habit Calendar
4 years ago by Hedonihilist
Monthly Habit Calendar for DataviewJS. This plugin helps you render a calendar inside DataviewJS code block, showing your habit status within a month.
Plotly
5 years ago by Dmitriy Shulha
Obsidian plugin to embed Plotly charts into markdown notes.
Virtual Footer
a year ago by Signynt
Display markdown text (including dataview queries or Bases) at the bottom, top or in the sidebar for all notes which match a specified rule, without modifying them (sort of like a dynamic template).
Habit Tracker
4 years ago by David Moeller
A Plugin to display a Habit Tracker in Obsidian.
Release Timeline
4 years ago by cakechaser
Financial Doc
3 years ago by Studio Webux
Financial Documentation and Tracking using CSV format and Chart.js directly in Obsidian
moviegrabber
3 years ago by Leon Holtmeier
obsidian.md plugin to grab data from public movie Databases and make them into a note that can be used with dataview querries
Bulk Exporter
3 years ago by symunona
Bulk export Markdown filtered, renamed and sorted by front matter metadata into a new structure.
View Count
3 years ago by Trey Wallis
Add view count tracking to your Obsidian vault
Double Colon Conceal
4 years ago by Michal Srch
Obsidian plugin to display double colon (i.e. Dataview inline fields) as a single colon for more natural reading experience.
Strava Sync
2 years ago by Howard Wilson
Sync Strava activities to your Obsidian vault
Kanban Status Updater
2 years ago by Ankit Kapur
Obsidian plugin that automatically updates the note property when card is moved to a column.
Feeds
3 years ago by LukeMT, pashashocky, madx
Magic feeds dataview query for obsidian
Vega Visualizations
4 years ago by Justin Kim
Create Vega and Vega-Lite visualizations in https://obsidian.md/.
Meld Build
4 years ago by meld-cp
Write and execute (sandboxed) JavaScript to render templates, query DataView and create dynamic notes.
Reason
3 years ago by Joshua Pham
Digest your Obsidian notes
HackerOne
3 years ago by neolex
A plugin to get our hackerone reports data into obsidian
Size History
3 years ago by Piotr Borowski
Graph with vault size over time
Workout Tracker
2 years ago by wanabeunique
Obsidian plugin for track workouts
Tier List
2 years ago by Mox Alehin
Obsidian plugin for visual ranking and organizing content into customizable Tier Lists.
Habitify
3 months ago by justrelaxdc
Run
3 years ago by Hananoshika Yomaru
Generate markdown from dataview query and javascript.
SQLite DB
2 years ago by Stefano Frigerio
SQLSeal Charts
2 years ago by hypersphere
Charting extension for SQLSeal Obsidian Plugin. Visualise your data!
TikToker
7 months ago by ameyxd
A Tiktok parser and saver for Obsidian
CSV All-in-One
2 years ago by hihangeol
Dataview Autocompletion
2 years ago by Daniel Bauer
Daily Note Metrics
2 years ago by Andre-Diamond
Obsidian Plugin that parses Daily Notes and uses data to create charts
Workout Planner
9 months ago by Rares Spatariu
TinyChart
2 years ago by Alin Coop
Dead simple ASCII charts for Obsidian.
Gym Vault
2 months ago by Ruan
Every Day Calendar
2 years ago by QuBe
Obsidian plugin to create calendars inspired by Simone Giertz's Every Day Calendar
MOC Link Helper
2 years ago by Bogdan Codreanu
This obsidian plugins allows you to quickly see which notes you need to include in your MOC.
Prism
13 days ago by floorianmb
Prism: sandboxed, themed, interactive visualizations in Obsidian notes
Vtable
11 days ago by vmsimab
在 Obsidian 中创建增强表格,支持单元格合并、公式计算、一键图表与富文本实时渲染等众多功能。
Pug Templates
2 years ago by Nicholas Wilcox
An Obsidian plugin that enables the usage of Pug templates.
Move Cursor On Startup
a year ago by Jared Kelnhofer
Obsidian plugin to move the cursor to the right and back to the left when starting up. Why? To keep DataView expressions from not running on the first load of, say, your Home file.
Ultra Budget Tracker
a month ago by Ahmed Hassan
Ultra Budget Tracker — turn bank SMS into structured transaction notes, budgets and balances inside Obsidian. Offline, desktop and mobile.