Habit Tracker 21

by zoreet
5
4
3
2
1
Score: 59/100

Description

The Habit Tracker 21 plugin is designed to help users develop new habits by tracking their progress and providing a clear visualization of their commitment and consistency. With a simple setup process, you can create a folder for your habits and enable the habit tracker UI in your Obsidian notes. The plugin allows you to specify a path to a folder or specific habit, set the last displayed date, and choose how many dates to display in the chart. By using this plugin, you'll be able to see at a glance which habits you've formed and which ones need more attention.

Reviews

  • Greg Banner
    Reviewed on Nov 28th, 2025
    No review text provided.

Stats

126
stars
26,408
downloads
27
forks
871
days
57
days
57
days
12
total PRs
1
open PRs
6
closed PRs
5
merged PRs
77
total issues
20
open issues
57
closed issues
40
commits

Latest Version

2 months ago

Changelog

add today class to all rows, not just the header fixes #82 by @nanjingman

README file from

Github

Habit Tracker 21 Obsidian Buy Me a Coffee GitHub Downloads (all assets, all releases) GitHub release GitHub Release Date PRs Welcome

A minimalist, elegant habit tracker for Obsidian that helps you build lasting habits with clear progress visualization.

Transform your Obsidian vault into a habit-building powerhouse. Track daily habits with an intuitive grid interface, customize your tracking experience, and watch your consistency streaks grow over time.

Habit Tracker Demo

Features

  • Minimalist Look - Elegant, clean interface with nothing but essential functionality. Matches your theme effortlessly using Obsidian CSS variables
  • Maximum configurability - You can tweak and customize pretty much every aspect of Habit Tracker 21 to make it just right for you
  • Easy to setup - Matches your theme effortlessly using Obsidian CSS variables and includes sensible defaults for all tracker properties
  • Smart Folder Support - Track individual files or entire habit folders
  • Flexible Streak Counting - Optional gap tolerance (maxGap) keeps streaks intact across short breaks while counting only days you actually completed
  • Daily Note Integration - Click any date in the header to jump straight to your daily note for that day
  • Debug Mode - Comprehensive debugging gives you all the info you need to figure it out

Quick Start

  1. Install the plugin from Obsidian's Community Plugins
  2. Create your habits folder (e.g., Habits/)
  3. Add habit files like Exercise.md, Reading.md for each habit you want to track
  4. Insert tracker in your Daily notes template, or any other file:
```habittracker
{
  "path": "Habits"
}
```

That's it! Click the grid to log your daily habits.

Customization

Custom Habit Titles

By default, habit titles use the filename (e.g., Exercise.md → "Exercise"). Customize titles by adding frontmatter to your habit files:

---
title: "Morning Workout 💪"
entries: []
---

Examples:

  • title: "📚 Daily Reading"
  • title: "Drink 8 glasses of water"
  • title: "Meditation & Mindfulness"

If no title is specified, the filename is used as before.

Custom Habit Colors

By default, habit colors inherit from your Obsidian theme's checkbox ticked color. Personalize individual habits with custom colors by adding a color property to your habit file frontmatter:

---
title: "Morning Workout 💪"
color: "#4CAF50"
entries: []
---

Examples:

  • color: "#FF5722" (hex colors)
  • color: "rgb(76, 175, 80)" (RGB values)
  • color: "green" (CSS color names)

Invalid colors are ignored and the default theme color is used.

Streak Gap Tolerance

By default, a single missed day breaks a streak. Use maxGap to keep a streak visually intact across short gaps — useful for habits where occasional misses are acceptable (e.g. a rest day in a workout routine):

---
title: "Morning Workout 💪"
maxGap: 1
entries: []
---
  • The streak bar renders continuously across gap days (shown at reduced opacity)
  • The streak count reflects only actual ticked days — gap days are not counted
  • maxGap: 1 allows 1 missed day, maxGap: 2 allows 2, and so on

Examples by habit frequency:

Habit Frequency maxGap Why
Workout 3× per week 3 Allows up to 3 rest days between sessions (e.g. Mon → Fri)
Clean Puramax Every 2 weeks 13 Up to 13 days can pass between cleanings
Call a friend or family member Weekly 6 One call per week, any day
Car service / deep clean Monthly 30 Up to 30 days between occurrences

Configuration

Global Settings

Access via Settings > Community plugins > Habit Tracker to set defaults for all trackers:

  • Default Path - Choose from dropdown of vault folders
  • Days to Show - Number input (default: 21)
  • Show Streaks - Toggle streak indicators and counts on/off (default: on)
  • Open daily note on date click - Click a date in the header row to open the corresponding daily note (default: on). Requires the Daily Notes core plugin or the Periodic Notes community plugin
  • Debug Mode - Toggle debug output on/off
  • Match Line Length - Fit tracker to readable line width

Per-Tracker Settings

Override global settings in individual code blocks:

```habittracker
{
  "path": "Habits",
  "daysToShow": 30,
  "lastDisplayedDate": "2024-01-15",
  "debug": true,
  "matchLineLength": false
}
```

All Settings

Per-Tracker Settings (code block)

Setting Type Default Description
path string "/" Path to habit folder or file. Defaults to root folder if left empty
firstDisplayedDate string auto First date shown in grid (format: "YYYY-MM-DD"). When provided, takes priority over daysToShow
lastDisplayedDate string today Last date shown in grid (format: "YYYY-MM-DD"). If left empty, defaults to today
daysToShow number 21 Number of days to display. Ignored when firstDisplayedDate is explicitly provided
color string "" Custom color for this tracker (hex, RGB, or CSS color name)
showStreaks boolean true Display streak indicators and counts
debug boolean false Enable debug console output
matchLineLength boolean false Match readable line width

Per-Habit Settings (frontmatter)

Setting Type Default Description
title string "" Custom display name. Falls back to filename if not set
color string "" Custom color for this habit (hex, RGB, or CSS color name)
maxGap number 0 Allow up to N consecutive missed days within a streak. Gap days show at reduced opacity; only actual ticked days are counted
entries array [] Array of completed dates in YYYY-MM-DD format. Managed automatically when clicking the grid

Usage Examples

Track all habits in a folder:

```habittracker
{
  "path": "Habits"
}
```

Single Habit

Track one specific habit file:

```habittracker
{
  "path": "Habits/Exercise.md"
}
```

Custom Time Range

Show last 30 days:

```habittracker
{
  "path": "Habits",
  "daysToShow": 30
}
```

Custom Tracker Color

Override default color for entire tracker:

```habittracker
{
  "path": "Habits",
  "color": "#FF5722"
}
```

Streak Gap Tolerance

Allow up to 1 missed day without breaking a streak:

```habittracker
{
  "path": "Habits/Exercise.md"
}
```
---
title: "Exercise"
maxGap: 1
entries: []
---

Disable Streaks

Hide streak indicators for cleaner view:

```habittracker
{
  "path": "Habits",
  "showStreaks": false
}
```

View Past Date Range

Show habits ending on a specific date:

```habittracker
{
  "path": "Habits",
  "lastDisplayedDate": "2024-01-15",
  "daysToShow": 30
}
```

Show Specific Date Range

Track habits for the entire month of November 2024:

```habittracker
{
  "path": "Habits",
  "firstDisplayedDate": "2024-11-01",
  "lastDisplayedDate": "2024-11-30"
}
```

Debug Mode

Enable detailed logging:

```habittracker
{
  "path": "Habits",
  "debug": true
}
```

Troubleshooting

Common Issues

"Path is required" error

  • Set a default path in plugin settings, or specify "path" in your tracker

Tracker shows "No habits found"

  • Check the path exists in your vault
  • Ensure folder contains .md files (subfolders are ignored)

Settings not updating

  • Trackers auto-refresh when global settings change
  • For JSON errors, check syntax (commas, quotes, braces)
  • If issues persist, try force reload (Ctrl+R) or restart Obsidian

Clicking a date does nothing

  • Ensure Open daily note on date click is enabled in plugin settings
  • Ensure either the Daily Notes core plugin or the Periodic Notes community plugin is enabled — if neither is active, a notice will appear when you click

Debug Output Enable debug mode to see detailed logging in the browser console (F12).

Development

Installation

git clone https://github.com/zincplusplus/habit-tracker
cd habit-tracker
npm install
npm run dev

Contributing

PRs welcome! Please:

  • Follow existing code style
  • Update documentation

License

MIT License - see LICENSE for details.


Made with ❤️ for the Obsidian community

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Heatmap Calendar
4 years ago by Richard Slettevoll
An Obsidian plugin for displaying data in a calendar similar to the github activity calendar
Plugin Update Tracker
4 years ago by Steven Swartz
Know when installed obsidian plugins have updates and evaluate the risk of upgrading
Initiative Tracker
5 years ago by Jeremy Valentine
TTRPG Initiative Tracker for Obsidian.md
Task Genius
4 years ago by Boninall
Comprehensive task management plugin for Obsidian
Word Sprint
4 years ago by Andrew Lombardi
Obsidian Word Sprint plugin
Keep the Rhythm
a year ago by Ezben
An Obsidian plugin to track your daily word count through a heatmap.
Habit Tracker
5 years ago by duo
This plguin for Obsidian creates a simple month view for visualizing your punch records.
Daily Activity
5 years ago by trydalch
Habit Calendar
3 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.
Habit Tracker
4 years ago by David Moeller
A Plugin to display a Habit Tracker in Obsidian.
Old Note Admonitor
3 years ago by tadashi-aikawa
Easy Tracker
4 months ago by Hunter Ji
An Obsidian plugin for ultra-simple goal and habit tracking in any note.
YourPulse - Your Writing Activity Visualised
a year ago by Jiri Sifalda
YourPulse.cc - Obsidian.md plugin that turns your vault into a reflection of your creativity, and put your writing on steroids 💪
Waka time box
3 years ago by complexzeng
Unfilled Stats Highlighter
3 years ago by Zachary Hynes
Prefixes stats that haven't been filled out yet.
Daily Routine
a year ago by sechan100
new version of daily-routine obsidian plugin
Filtered Opener
2 years ago by Roman Kubiv
Sets of notes defined by filters to open notes.
Track-a-Lot
2 years ago by Iulian Onofrei
This is a tracker plugin for Obsidian
The Queue
2 years ago by Kolja Sam Pluemer
An Obsidian.md plugin randomly exposing you to your cards. Supports habits, to-dos, spaced repetition flashcards, iterative reading and more.
Goal Tracker
a year ago by Ben Rotholtz
Daily Note Metrics
a year ago by Andre-Diamond
Obsidian Plugin that parses Daily Notes and uses data to create charts
Workout Planner
3 months ago by Rares Spatariu
Tiny Habits
8 months ago by Diego Nazoa
Obsidian Plugin for habit tracking with Svelte
Daily Prompt
2 years ago by Erl-koenig
IMDb
2 years ago by Andrew Chen
A simple plugin for syncing movies from IMDb to Obsidian
Weekly Goal Tracker
a year ago by George Gorman
Every Day Calendar
a year ago by QuBe
Obsidian plugin to create calendars inspired by Simone Giertz's Every Day Calendar
Boardgame Search
a year ago by Marlon May
A plugin to create notes for boardgames based on the BGG API
Kikijiki Habit Tracker
a year ago by KIKIJIKI
Kikijiki Habit Tracker Plugin for Obsidian
Yearly Diary Comparator
10 months ago by kiitosu
show diary in diary note in comparable yearly comarable view
Crackboard
2 years ago by Franklin
Obsidian plugin for crackboard.dev