Staring at endless text-based lists and bullet points was killing my motivation to track anything consistently in Obsidian. My habit logs looked like boring spreadsheets, my project updates felt like homework, and my personal goals disappeared into walls of text. Then, I discovered how to transform my Obsidian notes into visual progress charts, and everything changed.
Suddenly, tracking became engaging rather than tedious. I could see my streaks, spot patterns in my behavior, and feel genuinely motivated by visual progress bars and colorful heatmaps. The transformation from text to charts didn’t just make my notes prettier; it made tracking sustainable and actually enjoyable. Obsidian’s visual tracking capabilities turn mundane data entry into an interactive dashboard that keeps me coming back.
My favorite visualization plugins
A huge plugin library is one of the biggest reasons why people stick to Obsidian, even with so many other note-taking apps out there. Whether you need better task management, custom visualizations, or powerful integrations, there’s usually a plugin that can handle it. The secret to successful progress tracking in Obsidian lies in selecting the right combination of plugins that automatically transform your data into compelling visuals. After testing numerous approaches, I’ve settled on using two plugins that handle all my visualization needs.
Tracker plugin by pyrocholore specializes in habit and goal tracking with powerful calendar and heatmap visualizations. This plugin allows me to quickly and conveniently make charts out of my daily entries through a simple block of code, which I can edit easily.
Dataview plugin by Micheael Brenan allows me to create entirely customized charts using JavaScript. Whenever I have a great idea for a visual display that I want to implement on my dashboard, I use Dataview instead of Tracker. Its flexibility in helping me create personalized charts makes it one of the best plugins I always install in Obsidian.
You can find both plugins in the Community plugins section of Obsidian. After installing, make sure to enable both plugins. You’ll also need to go to options/settings on the Dataview plugin and activate Enable JavaScript queries and Enable Inline JavaScript queries.
Setting up my data structure
Just three folders for easy organization
Aside from the two plugins that I use for making charts, I also use Obsidian’s Daily notes for opening and creating daily note entries.
After ensuring that all three plugins are installed and enabled, I need to organize my vault so that the charts I create know exactly where to find data and update automatically. So, I made three folders in the root of my vault: “Daily Notes,” “Templates,” and “Trackers.”
The Daily Notes folder stores the actual daily entries that my charts will pull data from. The Templates folder holds a template containing all the properties I’m interested in tracking, such as sleep, water, exercise, and reading. The Trackers folder houses the actual charts for each property I want to track.
Now that the folders have been made, I go to settings and update folder paths on the Daily Notes plugin. In settings, I select the Daily Notes plugin under Core Plugins, set New file location to my Daily Notes folder, and set Template file location to my Templates folder.
Creating my daily notes template
Daily entries are faster with a template
After making my data structure, I can now make the template for my daily notes. Though not necessary, having a template for daily entries makes it easier to log my habits and ensure I don’t skip a day.
In my Templates folder, I create a note titled “Daily Notes Template” and add this code:
---
date: {{date:YYYY-MM-DD}}
---
This creates a date properties section that autofills whenever I create a new entry using the Daily Notes plugin. While still in edit mode, I add other properties I want to track by clicking the Add property button, giving each one a name, clicking the hamburger menu beside it, hovering over Property type, and selecting the appropriate type of input.
Here, I’ve set up properties for sleep (Number), exercise (Checkbox), reading (Number), mood (Number), and water (Number). Now that everything’s set up, I’ll go ahead and make a new entry by holding Ctrl + P, typing “Daily notes: Open today’s daily note,” hitting Enter, and filling out the form. I’ll also be making a few extra entries to show progression in my examples.
Making my progress charts
Two ways I like making my charts
Now that I have a few days of entries logged, I’ll start making the visual progress charts for my dashboard.
My first chart will be using the Tracker plugin. I’ll start by making a new note titled “Exercise Progress Chart” in the Trackers folder and use this simple code block:
```tracker
searchType: frontmatter
searchTarget: exercise
folder: Daily Notes
datasetName: Workout Streak
month:
startWeekOn: 'Mon'
color: green
```
To view the chart, I exit edit mode by pressing Ctrl + E.
The Tracker plugin creates a working calendar that shows my workout streak with minimal code. Beyond calendar charts, the plugin also supports line graphs, progress bars, bullet points, and summaries. You can find examples of each visualization type on the Tracker plugin’s GitHub page.
Another way I like to make my charts is by using the Dataview plugin. This plugin allows me to use JavaScript and make my own visualizations from scratch. Here’s my JavaScript code to make a fully custom chart for my daily water intake:
```dataviewjs
const pages = dv.pages('"Daily Notes"');
const avgWater = pages.length > 0 ? Math.round(pages.array().reduce((sum, p) => sum + (p.water || 0), 0) / pages.length) : 0;
const target = 8;
const pct = Math.min(Math.round((avgWater / target) * 100), 100);dv.header(3, "💧 Water Intake");
const circles = "●".repeat(Math.floor(pct / 10)) + "○".repeat(10 - Math.floor(pct / 10));
dv.paragraph(`🔵 ${circles} ${pct}%`);dv.paragraph(`**${avgWater}/${target} glasses** daily average`);
```
Which will look something like this:
For most people, the Tracker plugin should suffice for the majority of charts you want to make. I just wanted to share the Dataview plugin in case you know JavaScript and are interested in making a custom chart for yourself. The only real problem I found with the Tracker plugin is that I can’t find a way to show tabular data. However, you can always create basic tables in Obsidian and still do tabular tracking.
If you looked at my sidebar earlier, you’d see that I’ve already made different charts for each property I wanted to track. It’s now only a matter of making a canvas to display all these charts in one dashboard for easy viewing.
So, I made a dashboard by right-clicking on the sidebar and selecting New canvas, dragging and dropping each chart from the Tracker folder to the canvas, and rearranging everything.
As you can see, I have all properties (reading, exercise, sleep, water, and mood) in one single dashboard, which automatically refreshes whenever I make a new entry. Both the reading and exercise progress charts were made using the Tracker plugin, with the rest using JavaScript and the Dataview plugin.
It gets easier once you start
The setup process might seem complicated at first, but once your visual tracking system is running, you’ll easily understand how each component works. Start with just one or two habits using the Tracker plugin to avoid overwhelming yourself. As you get comfortable seeing your progress in colorful charts and streak counters, gradually expand your dashboard with more metrics. The key is consistency in data entry rather than perfection in setup. Your future self will thank you for taking the time to build a tracking system that actually motivates you to keep going.