A couple of years ago, I built my own habit tracking dashboard in Obsidian. But looking back, that version had a few problems:
- It relied on a plugin called Tracker that added friction (and occasionally broke when Obsidian updated)
- It was painfully slow to load whenever you viewed your data
- Customizing the charts was a pain and meant digging into hard-coded snippets
So with an assist from Claude, I rebuilt the whole thing using DataviewJS:

But you may be wondering: why track habits in Obsidian at all? There are dozens of dedicated habit apps out there. Some of them are genuinely beautiful. Why bother building this thing inside of a note-taking app in the first place?
The answer is context.
💡 The Big Idea: A streak can only tell you what happened. Obsidian can tell you why.
Most habit tracking apps are built around the “don’t break the chain” concept popularized by comedian Jerry Seinfeld, who once told an aspiring comic to get a big wall calendar and put a red X on every day he wrote new material. Eventually, you’ve got a chain, and your only job then is to not break the chain.
But any app can show you a streak and provide motivation to keep going. Here’s what a standalone habit app can’t do: it can’t tell you why you broke the chain.
When I look at my habit tracking dashboard in Obsidian, and I see a longer break, I can click on any day in that gap and land directly in my daily note from that day. I can read what I was working on, what was stressing me out, whether I was traveling, and whether I was just tired. The context is all right there, all in the same system.
A standalone app can show you the gap. It can’t help you understand it.
And understanding the gap is the whole point. If you’re serious about building habits that actually stick, the goal isn’t to hit a streak number. The goal is to do more of what really matters, and that requires you to understand your patterns well enough to improve them.
That requires context. And for me, that context already lives in Obsidian.
The Real Number to Pay Attention to
When I sit down for my quarterly review and pull up my habit tracking dashboard, I honestly don’t spend much time looking at my current streaks.
The number I care about most is my longest break.
A long break isn’t a moral failure. But it is a signal that something is off. It’s telling me one of two things:
- Either something happened in that stretch that made this habit genuinely hard to maintain, or
- I don’t actually care enough about this thing to do it consistently.
Both of those are useful to know.
If the longest break in my reading habit is three days, that tells me something very different than if it’s three weeks. Three days is a bad week. Three weeks is a pattern. And when I recognize it, I can actually investigate easily because the daily notes from that stretch are all right there. I can see whether it was one specific thing (a launch, a trip, a rough season) or a slow drift I didn’t notice while it was happening.
Let me give you an example:
Say I pull up the dashboard during my quarterly Personal Retreat and I see a 12-day gap in my writing habit back in October. My first question isn’t “why did I miss so much?” It’s “what was going on during those 12 days?” So I click into the first daily note in the gap. Maybe I find out I was prepping for a conference that week. The next note mentions I got sick. The next few notes show I was playing catch-up on everything I missed. By the time I’m done, I’ve reconstructed the whole story — and now I can ask a much better question. Not “how do I never miss again?” but “what’s my system for protecting this habit during high-stress weeks like this?”
That’s a level of insight you can’t get from a standalone app. And it’s actionable. It's the thing that actually helps you build better habits, because you can understand why the chain broke.
Building the Dashboard
My habit tracking dashboard is built as a Canvas file in Obsidian. Each habit gets its own card and its own code snippet. Each card shows a month-view calendar laid out Monday through Sunday, with completed days as solid green circles and missed days as red rings. When you hit consecutive days, green lines connect them across the calendar, so your streak literally becomes a visible chain. You can also navigate between months, and click any date, and you’re in the daily note for that day.
Below each calendar is a stats bar: current streak, longest streak, longest break, completion percentage, and total days completed. The whole thing is powered by a single Dataview code block per habit, reading checkbox properties from your daily notes.
That’s it. No plugins beyond Dataview. No maintenance. No hard-coded logic to untangle when you want to change something.
Here's what the properties look like in my Daily Notes:

As long as I check those boxes and those properties match the code snippets, the data automatically shows up on my habit tracking dashboard.
I’m not going to walk through the full code snippet here, but I did add this new version to my free Obsidian Starter Vault (click here to get the new version).
And if you want to customize the code, there's actually just two things to change.
The first is right at the top. There's a line of code that looks something like const habitProperty = "reading".

If you want to track a different habit, just update the property in your Daily Note template file and update this line of code to match.
There's also one other place further down where there is text in a table that shows the title at the top of the card. Here's what it looks like:

Once you update those two spots in the code snippet, you can track any habit you want.
The 30-Second Check-In
The dashboard is only as useful as the data feeding it. And the data is only accurate if logging it is effortless.
So here’s my entire check-in workflow:
- I open Obsidian on my phone (it opens to today’s daily note by default) as part of my end-of-day journaling routine
- I swipe over to see my properties in the right sidebar
- I toggle the checkboxes for the habits I completed.
That's it. Takes about 30 seconds.
No fancy prompts. No deep reflection questions. This isn’t the thinking step — it’s the data entry step. The reflection happens later, when I’m actually looking at the dashboard and trying to spot patterns.
That separation really matters. If I tried to reflect every single day, I’d either skip the reflection (which defeats the purpose) or skip the tracking (which breaks the data). By making the daily step just “toggle checkboxes,” I eliminate the friction. The elimination of friction creates consistency, and that consistency is what makes the quarterly dashboard review actually worth doing.
The principle here is that any data you want to analyze later has to be cheap to collect in the moment. The moment logging your data becomes a chore, it starts to become unreliable.
Keep the collection stupid simple. Save the intelligence for when you’re ready to use it.
Track Fewer Habits Than You Think You Should
This is the part I wish someone had told me earlier.
The temptation when you build something like this is to throw every habit you care about on the list. Drink water. Meditate. Read. Exercise. Journal. Take vitamins. Stretch. Floss.
But don't do this.
If your daily check-in takes 30 seconds, you’ll do it every day. If it takes five minutes because you’ve got 15 checkboxes and you're trying to remember which ones you actually did, you’re going to start skipping days. Then you’ll stop checking in entirely. Then the whole system falls apart.
This is the pattern for most people who struggle with journaling. And I've fallen into this myself on occasion.
I keep mine between three and five habits. They’re the ones I genuinely care about sustaining right now, not everything I theoretically want to do in an ideal version of my life. Habits I’ve already firmly established (like daily Bible reading or stretching) don’t show up on this list. The ones I’m tracking are the ones I’m actively trying to establish.
The five I’m currently tracking: reading, writing, planning, prayer, and shutdown. Each one is there for a specific reason. Reading and writing are the two creative habits that directly drive my creator business. If I’m not reading, I’m not getting new ideas, and if I’m not writing, I’m not figuring out what I think about those ideas (and that is the basis of all the content I create). Planning is my morning session where I look at my calendar and task list and decide what I’m actually going to focus on that day. Prayer is a spiritual discipline I’m trying to get better at. And shutdown is my end-of-workday routine, which includes closing out tasks, reviewing what got done, and mentally clocking out so I’m actually present with my family in the evening.
Notice what’s not on that list: “drink 8 glasses of water,” “do 50 pushups,” “take my vitamins.” Those quantitative habits might be worthwhile, but they don’t need a dashboard. They need a water bottle, a pull-up bar, and a pill case.
Here’s a good filter: only track habits where consistency compounds over time and you want to see the long-term patterns. Reading compounds. Writing compounds. A morning planning session compounds. The habits that belong on your dashboard are the ones where today’s checkbox is less important than the six-month trend.
Remember: the shorter the list, the lower the friction. The lower the friction, the more accurate the data. The more accurate the data, the more useful the dashboard becomes when you actually sit down to reflect on it.
The Bottom Line: Track Habits to Learn, Not to Judge.
A streak is motivating. But a streak, by itself, doesn’t help you make meaningful change.
The reason I track habits in Obsidian isn’t that the dashboard is prettier than a dedicated app (it’s not) or because I can’t stand to leave Obsidian (I can). It’s because the data only becomes useful when it’s connected to context, and Obsidian is where my context already lives.
When I see a gap forming, the question I ask isn’t “why am I so undisciplined?” It’s “what was happening during those days?”
That's an important shift.
The first question creates guilt. The second one creates data.
And you need data (not guilt) to actually build better habits over time.
So if you’re setting up habit tracking for the first time, or you’re rebuilding what you already have, here are 3 things to keep in mind:
- Keep the list short. Three to five habits, max. The ones that compound.
- Watch your longest break, not just your streak. It’s the number that tells you what’s actually happening.
- Put the tracker where your context already is. For me, that’s Obsidian. For you, it might be somewhere else, but wherever it is, the dashboard is only as useful as the story you can tell around it.
The streak may get you started. But the story is what makes you better.