Habit tracker for Logseq
118
stars
76
commits
Vue
primary language
Oct 10, 2025
updated
If you like this plugin, you can buy me a ☕ here

Record your habits under #habit block in daily journal, then easily track your habits.
Click on gear (⚙️) icon to edit settings.
Habit marker is a keyword to match habits: #habit, it was Habits before v0.2.0
Habit pattern is the regex to parse habits. See Customization for more examples.
Default format is Habit text - 1,2,3 and you can add notes after a new line.
Default: ^(TODO|DONE)?\s*(?<habit>.*?)(?:| - (?:(?<int>\d*?) times|(?<count>.*?)))$,
capture groups:
5 times
Ignore Pattern is the regex to ignore habits matching the habitPattern.
Default value is TODO .*. So while DONE blocks count TODO blocks not.
Date format: D.M\ndd where \n is new line.
Date width: 2em
For Frequency / Period, period is one of d (day), w (week), m (month), y (year).
3/d means 3 times per day4/2w means 4 times in 2 weeksBy checking At Most you can model bad habits to avoid.
Instead of nesting under #habit tag you can also use it in every line and change the format to suit your needs.
14:10 pushups #habit
14:11 #habit drink water
Habit Pattern: \d{2}:\d{2} (?<habit>.*)
With optional time and notes. Thanks @someinternetguy
pushups #habit
pushups #habit did 10 more than usual today, go me!
14:17 pushups #habit
14:17 pushups #habit yay, I remembered to work out today!
Habit pattern: ((\d{2}:\d{2})|())(?<habit>.*#habit(\s|\b))
Ignore habits with unfinished marker. See #10
- #habit
- qwer - 1,2
- qwe
- qwert - X
Ignore pattern: .*- X will ignore habit qwert
Do not count comma-separated items. See #29
- #habit
- qwerty - 1,2
- qwerty
Both will be counted as 1. Habit pattern: ^(TODO|DONE)?\s*(?<habit>.*?)(?:| - .*)$
npm && npm build in terminal to install dependencies.Load unpacked plugin in Logseq Desktop client.76 commits
Vue
83.8%
CSS
9.0%
JavaScript
6.1%
HTML
1.1%
Habit tracker for Logseq
118
stars
76
commits
Vue
primary language
Oct 10, 2025
updated
If you like this plugin, you can buy me a ☕ here

Record your habits under #habit block in daily journal, then easily track your habits.
Click on gear (⚙️) icon to edit settings.
Habit marker is a keyword to match habits: #habit, it was Habits before v0.2.0
Habit pattern is the regex to parse habits. See Customization for more examples.
Default format is Habit text - 1,2,3 and you can add notes after a new line.
Default: ^(TODO|DONE)?\s*(?<habit>.*?)(?:| - (?:(?<int>\d*?) times|(?<count>.*?)))$,
capture groups:
5 times
Ignore Pattern is the regex to ignore habits matching the habitPattern.
Default value is TODO .*. So while DONE blocks count TODO blocks not.
Date format: D.M\ndd where \n is new line.
Date width: 2em
For Frequency / Period, period is one of d (day), w (week), m (month), y (year).
3/d means 3 times per day4/2w means 4 times in 2 weeksBy checking At Most you can model bad habits to avoid.
Instead of nesting under #habit tag you can also use it in every line and change the format to suit your needs.
14:10 pushups #habit
14:11 #habit drink water
Habit Pattern: \d{2}:\d{2} (?<habit>.*)
With optional time and notes. Thanks @someinternetguy
pushups #habit
pushups #habit did 10 more than usual today, go me!
14:17 pushups #habit
14:17 pushups #habit yay, I remembered to work out today!
Habit pattern: ((\d{2}:\d{2})|())(?<habit>.*#habit(\s|\b))
Ignore habits with unfinished marker. See #10
- #habit
- qwer - 1,2
- qwe
- qwert - X
Ignore pattern: .*- X will ignore habit qwert
Do not count comma-separated items. See #29
- #habit
- qwerty - 1,2
- qwerty
Both will be counted as 1. Habit pattern: ^(TODO|DONE)?\s*(?<habit>.*?)(?:| - .*)$
npm && npm build in terminal to install dependencies.Load unpacked plugin in Logseq Desktop client.76 commits
Vue
83.8%
CSS
9.0%
JavaScript
6.1%
HTML
1.1%