v1n1-03223 downloadsA clickable, GitHub-style streak heatmap. Click a day to mark or unmark it — no habit-tracking dependencies required.
A local Obsidian plugin that displays a clickable, GitHub-style contribution heatmap directly in your notes. Perfect for tracking habits, daily routines, writing streaks, chores, or study goals without external dependencies.

Tab, Enter, Space) and touch interactions (including long‑press on mobile).To create a tracker, insert a streak code block into any note. A title is the only parameter you'll usually want to set:
title: My Habit
No parameters are strictly required — an empty streak block also works and creates a single unnamed board — but naming your board keeps its data separate from any other trackers in your vault.
title – Names your board and groups its data. Also used for automatic markdown task matching.How to safely rename an older board: First, add id: Your Current Title (matching your old title exactly) to anchor your history. Then, change the title: parameter to your new name. The board will update visually, but continue loading your past points safely from the anchored ID.
mode – simple (default) or detailed.stats – bar, text, or none (default).color – Custom highlight color (supports Hex, RGB, CSS names, and theme variables).width – Set to full to stretch the heatmap across the entire width of the note.Example:
title: Study
mode: detailed
stats: bar
color: #ff4757
width: full
id: my-study-board
The plugin operates in two distinct modes depending on how you want to track your data.
If you don't specify a mode, the board defaults to simple. Ideal for basic "done/not done" habit tracking.
title: Drink Water
mode: simple
Designed for tracking specific numerical values (like pages read, miles run, or hours studied). The cell's color intensity will scale across 5 levels depending on how many points you log.
title: Pages Read
mode: detailed
How to use Detailed Mode:
Enter/Space) on a day to instantly add +1 point.Shift+F10).Inside the points popup, you can view the breakdown of tasks completed on that specific day.

Chores: Do the dishes), that prefix is hidden in the list — you'll just see Do the dishes. The full name (title included) is still what's stored internally, so it keeps matching back to the right line in your note.If you have an unchecked markdown task in the same note that contains the board's title, completing it will automatically add +1 point to today's streak. The plugin appends a date badge to prevent double‑counting.
- [ ] Pages Read: chapter 4- [x] Pages Read: chapter 4 ✅ 2026-08-29Unchecking the task again removes the badge, so it becomes completable once more. The point already logged for that day is kept — unchecking just resets the task, it doesn't undo your streak.
You can personalize the look of your heatmap using the color and stats parameters.
Use the color: parameter to change the heatmap's highlight color. The plugin understands almost any standard color format. If you provide an invalid color, it safely falls back to the default green.
Examples of accepted color formats:
color: #ff8c42 or color: #39d353color: tomato or color: dodgerbluecolor: rgb(57, 211, 83) or simply color: 57, 211, 83color: var(--interactive-accent) or simply color: --interactive-accent (great if you want the heatmap to change colors automatically when you switch Obsidian themes).Use the stats: parameter to show your progress below the calendar.
stats: bar – Displays a visual progress bar, total marked days, percentage of the year, and your longest streak.stats: text – Displays the same summary text, but without the visual progress bar.stats: none – (Default) Hides the statistics entirely.Note: The percentage is always calculated out of the full calendar year (365 or 366 days). In detailed mode, any day with 1 or more points counts as exactly "1 marked day" for your streak and percentage.
data.json file in the plugin's folder. Data is completely private and migrates automatically if you previously used version 1.1 or 1.2.x.ResizeObserver to redraw only when necessary.idle, processing, queued) to avoid race conditions when multiple modifications occur in quick succession.This plugin is available in the Obsidian community plugins browser and can be downloaded and installed directly from there.
main.js, styles.css, and manifest.json from the Releases tab.<your-vault>/.obsidian/plugins/streak-heatmap/Thanks to @FilipeSix for contributing to this release.
Distributed under the MIT License.