Subtasks & Recurrence
Subtasks let you decompose a parent task into smaller steps. Recurrence lets a task repeat on a schedule with the next occurrence created automatically when you complete the current one. Both work with plain markdown syntax — no special storage, no separate “subtask” or “recurring task” objects.
Subtasks
Section titled “Subtasks”A subtask is just a task line indented under another task. Two spaces or one tab — Pensum recognises either, but be consistent within a file.
- [ ] Prepare board presentation - [ ] Pull revenue numbers - [x] Get template from design - [ ] Draft pipeline slide - [ ] Practice run with teamEach subtask is a full task in its own right — it can have its own status, priority, due date, scheduled date, tags, and recurrence. Views (Today, Forecast, etc.) treat subtasks as first-class — a subtask with a due date today shows up in Today, even if its parent doesn’t.
Progress badges
Section titled “Progress badges”When a parent task has subtasks, views show a progress badge: 2/5, 1/3, etc. The badge counts only direct children (not grandchildren). Clicking the parent in a view opens its edit modal.
Body text between subtasks
Section titled “Body text between subtasks”You can mix non-task body lines under a parent. They stay associated with the parent for context:
- [ ] Prepare board presentation - [ ] Pull revenue numbers This needs to come from the finance dashboard. Last quarter Sam had to chase it down. - [ ] Draft pipeline slideBody lines don’t appear in task lists — they live in the file alongside the task hierarchy. The task edit modal shows them in a “Notes” section so you can edit context without leaving the modal.
Nesting depth
Section titled “Nesting depth”Subtasks can nest arbitrarily deep. A subtask can have its own subtasks:
- [ ] Q3 launch - [ ] Marketing - [ ] Write announcement post - [ ] Schedule social campaign - [ ] Engineering - [ ] Feature flag setup - [ ] Migration scriptPensum tracks the full tree. The Q3 launch parent shows 2/2 (its two direct children); Marketing shows 0/2; and so on.
When to use subtasks vs. multiple top-level tasks
Section titled “When to use subtasks vs. multiple top-level tasks”| Use subtasks when… | Use separate top-level tasks when… |
|---|---|
| The work has to be done as part of the same thing — you wouldn’t complete the parent without doing the children | The tasks are related but independently completable |
| You want progress visibility on the parent in views | Each task should show as its own line in views like Today / Inbox |
| The parent represents a milestone or deliverable | The tasks represent separate decisions or commitments |
Subtasks are great for “things that have to happen in sequence” or “components of one larger deliverable.” They’re less useful for collections of related-but-independent work — those usually belong as siblings or under a project.
Completing a parent with open subtasks
Section titled “Completing a parent with open subtasks”Nothing stops you. Pensum doesn’t auto-complete subtasks when you check the parent, and doesn’t prevent the parent from being completed if subtasks are still open. The progress badge just shows the asymmetry (e.g. 2/5 even with the parent checked).
If you want sequential enforcement (parent only completable when all children are done), that’s a workflow you build on top — not a built-in constraint.
Recurrence
Section titled “Recurrence”A recurring task carries a recurrence rule that fires when you complete the task: Pensum creates the next occurrence with the updated date.
Syntax follows the Tasks plugin convention: 🔁 <rule> after the description.
- [ ] Water plants 🔁 every week 📅 2026-05-13When you check this task done:
- The current line gets marked completed:
- [x] Water plants 🔁 every week 📅 2026-05-13 ✅ 2026-05-13 - Pensum appends a new occurrence in the same file:
- [ ] Water plants 🔁 every week 📅 2026-05-20
The original completed line stays as a record. Task cleanup will remove it after its retention window (see cleanup).
Supported rules
Section titled “Supported rules”| Rule | What it does | Examples |
|---|---|---|
every N days/weeks/months/years | Adds N units to the current due date | 🔁 every 3 days, 🔁 every 2 weeks, 🔁 every 6 months |
every day/week/month/year | Equivalent to every 1 day/week/month/year | 🔁 every week, 🔁 every month |
every weekday | Skips weekends — Mon → Tue → … → Fri → Mon | 🔁 every weekday |
every <weekday> | Next occurrence of that weekday | 🔁 every Monday, 🔁 every Friday |
every month on the <ordinal> | Same day of the month every month | 🔁 every month on the 15th, 🔁 every month on the 1st |
every year on <month> <day> | Annual repeat | 🔁 every year on March 15 |
The rule writes as a plain string in the markdown — no special escaping needed. It travels with the task in any sync or export.
Anchoring on completion date vs. due date
Section titled “Anchoring on completion date vs. due date”Pensum’s default anchors the next occurrence on the previous due date, not the completion date. So a weekly task due Monday that you complete on Wednesday creates the next occurrence due the following Monday (not the following Wednesday).
This matters for things like “every week” — if you fall behind, the schedule doesn’t slip with you. If you’d rather have the next occurrence anchored on completion (e.g. “water plants every 3 days from when I last watered them, not from when they were last scheduled”), that’s a known feature gap; track via the existing recurrence rule and adjust the date manually if it slips.
Multiple rules
Section titled “Multiple rules”One rule per task. If you need different cadences for related work, model them as separate tasks (or as recurring subtasks under a non-recurring parent).
Recurring tasks in views
Section titled “Recurring tasks in views”Recurring tasks show in Today / Forecast / Calendar exactly like any other task — they have a due date, they appear on that day. The recurrence rule travels along but isn’t itself displayed in the views (it’s part of the task description in the markdown). The edit modal shows the rule and lets you change it.
When you complete a recurring task in a view, the next occurrence appears immediately. If it’s due today, it stays in Today. If it’s due in the future, it disappears from Today and shows up in Forecast.
Stopping a recurrence
Section titled “Stopping a recurrence”To stop a recurring task from generating future occurrences:
- Edit the task and remove the
🔁 rulepart - Or just complete it and don’t worry about it — the new occurrence is the only one that’ll continue recurring
You can also archive the task by moving its line to a different file (e.g. an Archive/ folder) — Pensum scans the new location and the recurrence continues from wherever the task lives.
Subtasks + recurrence together
Section titled “Subtasks + recurrence together”A recurring parent task with subtasks is supported, but be aware: when the parent’s next occurrence is created, the subtasks are not duplicated. If you want each week’s recurrence to come with its own checklist of subtasks, model them as inline body text on the parent rather than subtasks, or use a template instead of recurrence.
Defaults
Section titled “Defaults”| Behavior | How to change |
|---|---|
| Indentation: 2 spaces | Match what Obsidian’s editor uses; Pensum recognises both 2 spaces and 1 tab |
| Recurrence anchor: previous due date | Not currently configurable |
| Subtask progress badge | Always shown for parents with at least one subtask |