Todo.md
Manage tasks in plain Markdown, right in VS Code.
Inspired by todo.txt, but not strictly compliant - it uses Markdown checkbox syntax and extends the format with nesting and custom metadata.
Syntax
Tasks are standard Markdown checkboxes.
Enrich them with optional inline markers:
- [ ] (A) Task title +project @context #tag due:2025-06-01
- [x] Completed task completed:2025-05-20
- [ ] Sub-task (indented child)
- Any indented non-task line is treated as a note
| Marker |
Example |
Meaning |
| Priority |
(A) (B) (C) |
Priority level, A–Z |
| Project |
+project |
Project label |
| Context |
@context |
Context label |
| Tag |
#tag |
Freeform tag |
| Due date |
due:2025-06-01 |
Due date in ISO format |
| Completion |
completed:2025-05-20 |
Auto-appended on completion |
| Custom |
key:value |
Any key:value pair (configurable) |
Example
- [ ] (A) Launch v2.0 +release due:2025-06-15
- [ ] Write release notes +release @writing
- [ ] Update landing page +release @frontend #wip
- Design reference: https://example.com/design
- [x] Freeze feature scope completed:2025-05-28
- [ ] Refactor auth module +backend #tech-debt due:2025-06-30
- [ ] (B) Replace JWT library +backend @security
- Current library has known CVE, see issue [#42](https://github.com/oni0002/vscode-todomd/issues/42)
- [ ] Add refresh token support +backend
- [ ] Update integration tests +backend @ci
- [ ] Q2 retrospective meeting @team due:2025-06-27
- Agenda doc: https://internal.example.com/retro-q2
- [ ] Send calendar invite @team
- [ ] Prepare slides @writing
- [x] Set up CI pipeline +devops @ci completed:2025-05-10
- [x] Configure GitHub Actions completed:2025-05-08
- [x] Add lint and test jobs completed:2025-05-09
Views
The extension adds a sidebar with some views:
Tasks - mirrors the structure of your todo.md file.
Each item shows the task label and, for incomplete tasks, the due date (relative or ISO).
Overdue tasks are marked with a warning icon.
The view toolbar provides:
- Sort by priority or due date
- Filter by tag, project, or context
Tags / Projects / Contexts - grouped lists of all metadata values found in the file.
Clicking an entry shows all tasks that carry it.
Right-clicking a value lets you rename it across the entire file.
Keybindings
These shortcuts work when the cursor is on a task line in your todo file:
| Shortcut |
Action |
Alt+X |
Toggle completion ([ ] <--> [x]) |
Alt+P |
Set priority (QuickPick A–Z or None) |
Alt+D |
Set due date (presets or custom input) |
Alt+J |
Add project tag |
Alt+C |
Add context tag |
Alt+T |
Add tag |
Settings
| Setting |
Default |
Description |
todomd.todoFile |
"todo.md" |
File name to track (relative to workspace root) |
todomd.metadataKeys |
[] |
Additional key:value keys to highlight (due and completed are always highlighted) |
todomd.dateDisplayFormat |
"relative" |
Due date display in the Tasks view: "relative" or "iso" |
todomd.recordCompletionDate |
true |
Append completed:YYYY-MM-DD automatically when a task is completed |