habitonic
Habit Tracker helps you build positive habits and keeps track of your day-to-day habits and routines. Made with Clean a…
git clone https://github.com/zincplusplus/habit-tracker.gitzincplusplus/habit-trackerA 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.
maxGap) keeps streaks intact across short breaks while counting only days you actually completedHabits/)Exercise.md, Reading.md for each habit you want to track```habittracker
{
"path": "Habits"
}
```
That's it! Click the grid to log your daily habits.
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.
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.
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: [] ---
maxGap: 1 allows 1 missed day, maxGap: 2 allows 2, and so onExamples 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 |
Access via Settings > Community plugins > Habit Tracker to set defaults for all trackers:
Override global settings in individual code blocks:
```habittracker
{
"path": "Habits",
"daysToShow": 30,
"lastDisplayedDate": "2024-01-15",
"debug": true,
"matchLineLength": false
}
```
| 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 |
| 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 |
Track all habits in a folder:
```habittracker
{
"path": "Habits"
}
```
Track one specific habit file:
```habittracker
{
"path": "Habits/Exercise.md"
}
```
Show last 30 days:
```habittracker
{
"path": "Habits",
"daysToShow": 30
}
```
Override default color for entire tracker:
```habittracker
{
"path": "Habits",
"color": "#FF5722"
}
```
Allow up to 1 missed day without breaking a streak:
```habittracker
{
"path": "Habits/Exercise.md"
}
```
--- title: "Exercise" maxGap: 1 entries: [] ---
Hide streak indicators for cleaner view:
```habittracker
{
"path": "Habits",
"showStreaks": false
}
```
Show habits ending on a specific date:
```habittracker
{
"path": "Habits",
"lastDisplayedDate": "2024-01-15",
"daysToShow": 30
}
```
Track habits for the entire month of November 2024:
```habittracker
{
"path": "Habits",
"firstDisplayedDate": "2024-11-01",
"lastDisplayedDate": "2024-11-30"
}
```
Enable detailed logging:
```habittracker
{
"path": "Habits",
"debug": true
}
```
"Path is required" error
"path" in your trackerTracker shows "No habits found"
.md files (subfolders are ignored)Settings not updating
Clicking a date does nothing
Debug Output Enable debug mode to see detailed logging in the browser console (F12).
git clone https://github.com/zincplusplus/habit-tracker cd habit-tracker npm install npm run dev
PRs welcome! Please:
MIT License - see LICENSE for details.
Made with ❤️ for the Obsidian community
more like this
Habit Tracker helps you build positive habits and keeps track of your day-to-day habits and routines. Made with Clean a…
An Obsidian plugin to translate selected text in the desired language
DoHabit is a lightweight, local-first habit tracker designed to respect your privacy. No registration, no ads, no cloud…
search projects, people, and tags