Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

PDL Habit

luongpdluongpd33 downloads

A calm, Markdown-first habit tracker for Obsidian: flexible schedules, streaks, a month calendar and focused insights.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates3

A calm, Markdown-first habit tracker for Obsidian.

Every habit is a plain note; every check-in is one line of frontmatter. Nothing is locked inside the plugin, and the whole thing works offline.

Today tab

Version 1.0.1 · Obsidian 1.5.0+ · desktop and mobile · English / Tiếng Việt

Why another habit tracker?

  • Your notes stay yours. A habit is <folder>/Drink water.md with frontmatter — no database, no sync service.
  • Four tabs, one job each. Today for doing, Habits for finding, Calendar for seeing, Insights for noticing.
  • Quiet by default. No points, no badges, no guilt. Progress is shown as a ring, a streak and a month calendar.

Highlights

Capture

  • Compact habit form: name it, pick Did it / Count / Limit, choose when — done. Everything optional hides behind More options, and Enter saves.
  • Five schedules: daily, selected weekdays, times per week, times per month, every N days, plus an optional exact time of day.
  • Build or limit: grow a behaviour or cap one you want less of.

Check in

  • Counted habits start at 0 with − / + buttons and a live 0 of 3 ly hint; binary habits get a Done / Not done switch instead of a meaningless amount.
  • Undo anything — every check-in, planned rest and clear raises a toast with Undo for eight seconds that restores the previous frontmatter exactly.
  • Planned rest never breaks a streak.

Review

  • Habit detail with a month calendar — one month at a time with ‹ Today › navigation, five colour-coded states and a legend; tap any day to fix that day.
  • Insights with a 7 / 30 / 90-day range — completion trend line, weekday and category breakdowns, and habits that are losing momentum.

Find & tidy

  • Search, category filter and sort (title, streak, 30-day rate, category) over a list of tappable seven-day cells; Active / Archived is a switch, not a tab.
  • Any colour, 171 icons in ten groups with search; dark mode throughout.

Shortcuts & language

  • Command palette: Quick add (name + Enter), Open a day, Undo last check-in, Add starter habits.
  • English or Tiếng Việt — a language setting translates the whole interface; Auto follows Obsidian.

Insights

Install

Manual (works today)

  1. Download main.js, manifest.json and styles.css from the latest release.
  2. Put them in <vault>/.obsidian/plugins/pdl-habit/.
  3. Enable PDL Habit in Settings → Community plugins.

From source

git clone https://github.com/LuongPham16/pdl-habit.git
cd pdl-habit
npm ci
npm run build

npm run build writes the release artifact: main.js (minified, no sourcemap), styles.css and manifest.json at the repo root. Copy those three files into <vault>/.obsidian/plugins/pdl-habit/.

Quick start

  1. Click the sprout ribbon icon, or run PDL Habit: Open habit dashboard.
  2. Press New habit — or Add starter habits for a five-habit starter set.
  3. Tap the circle beside a habit to check in; counted habits open a small sheet for the amount, a note or a planned rest.

Notes live in 03 - Area/Habits by default; change the folder in settings.

What a habit note looks like

---
type: habit
title: Drink water
period: morning          # morning | afternoon | evening | anytime
time: "07:30"            # optional exact time
frequency: daily         # daily | weekdays | weekly | monthly | interval
days: [1, 3, 5]          # weekdays, when frequency is weekdays
target: 8
unit: ly
direction: build         # build | quit
icon: glass-water
color: "#0891b2"
start_date: 2026-01-01
history:
  2026-11-07: { value: 4, note: "hot day" }
  2026-11-06: { value: 0, status: skip }   # planned rest
---

Screenshots

Habit form Month calendar Check-in
Form Detail Check-in

Development

npm ci
npm run dev        # watch src/ into dist/main.js (dev build, inline sourcemap)
npm run build      # production build: the release artifact main.js at the repo root
npm test           # unit tests (scheduling, completion, streaks, aggregates, i18n)
npm run verify     # audit + reproducibility + load the shipped main.js against a stub
npm run preview    # render every tab offline into preview/*.png
npm run deploy     # build + copy into the vault listed in .deploy.json

Copy .deploy.example.json to .deploy.json and point it at your vault to use npm run deploy.

Release checklist

  1. npm version <x.y.z> — bumps package.json, manifest.json and versions.json.
  2. Add the notes to CHANGELOG.md.
  3. npm run release — builds main.js, runs the tests, then audits styles.css, proves the build is reproducible and loads the shipped bundle.
  4. Commit main.js, styles.css and the metadata together, then push the tag.
  5. GITHUB_TOKEN=… npm run publish — attaches the root main.js, styles.css and manifest.json to the GitHub release.

main.js must be committed and must be produced by npm run build: the community store rebuilds the tagged source and compares it byte-for-byte with the release asset, so a hand-edited or dev-built bundle fails verification. styles.css follows the review rules too — no !important, no partially supported features — and npm run audit fails if either comes back.

Project layout

src/
  index.js       bundle entry
  plugin.js      lifecycle, note scanning, persistence, reminders, undo, commands
  view.js        the four tabs — Today, Habits, Calendar, Insights
  ui.js          page header, segmented control, cards, empty states, toast
  habits.js      scheduling, completion, streaks, aggregates, search/sort, insights
  habit-form.js  draft model behind the habit form
  starters.js    five starter habits for a new vault
  i18n.js        English/Vietnamese dictionary, t()/tp(), locale helpers
  reminders.js   reminder window + message (pure, testable)
  dates.js       date and string helpers
  constants.js   ids, palette, icon catalogue
  dom.js         small DOM helpers
  modals/        habit form, icon picker, check-in, detail, confirm, quick add, day picker
  settings.js    settings tab (folder, week start, default view, language, reminders)
styles.css       base sheets, page frame, tabs, toolbar, toast and modals
main.js          release bundle — committed, and always regenerated by `npm run build`
scripts/         build, review audit, reproducibility check, release publisher
preview/         offline renderer used for design review
tests/           node:test suites

License

MIT © 2026 Luong Pham

HealthExcellent
ReviewPassed
About
Track habits using plain Markdown notes and frontmatter so every habit stays editable in your vault and works offline. Use Today, Habits, Calendar and Insights to check in with binary or counted entries, schedule routines (daily, weekdays, per week/month, every N days), view rings, streaks and month calendars, undo changes, inspect 7/30/90-day trends, and preserve streaks with planned rest.
TasksCalendarCharts
Details
Current version
1.0.2
Last updated
5 days ago
Created
7 days ago
Updates
3 releases
Downloads
33
Compatible with
Obsidian 1.5.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
luongpdluongpdluongpham16
GitHubluongpham16
  1. Community
  2. Plugins
  3. Tasks
  4. PDL Habit

Related plugins

Gantt Calendar

A powerful visual task management plugin. Visualize and manage tasks created by the Tasks plugin, supporting both emoji and Dataview task formats. Support Feishu Task syncing.

TaskNotes

Note-based task management with calendar, pomodoro and time-tracking integration.

Operon

Task and project management system that unifies inline tasks and file-based tasks in the same workflows with Tables, Filters, Calendars, Kanban boards, Gantt views, Canvas, and time tracking.

Day Planner

Turn tasks from daily notes, the Tasks plugin, and calendars into time blocks on an editable timeline, with built-in time tracker.

Tracker

Track occurrences and numbers in your notes.

Tasks Calendar Wrapper

Simple wrapper for Tasks Calendar and Tasks Timeline.

Contribution Graph

Generate an interactive heatmap to visualize and track your productivity.

Abyss Tasks

A task management interface for Markdown tasks.

Tasks

Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering. Maintained by Clare Macrae and Ilyas Landikov, created by Martin Schenck.

Vault Todos

Collect all outstanding TODOs from your vault and presents them in lists Today, Scheduled, Inbox and Someday/Maybe.