Todos
Everything in this section is what MarkTodo reads and what it writes back. There is no other state.
Statuses
Section titled “Statuses”A todo is any Markdown checkbox, and the glyph is the status. The bullet may
be -, * or +, and the indent you typed is kept exactly as it is.
| Glyph | Status | Means |
|---|---|---|
[ ] |
Backlog | Captured, not scheduled |
[>] |
Warming | Next up, not started |
[-] |
Paused | Deliberately set down |
[/] |
Doing | In flight right now |
[!] |
Blocked | Waiting on something else |
[x] |
Done | Finished |
That is the order MarkTodo draws everywhere — board columns, status sections in a note, the app’s tabs — so the table above reads in the same order as the software.
Nothing mirrors the glyph, so nothing can disagree with it. Open the note in any editor on any device and the status is right there in the text.
A glyph MarkTodo does not recognise — [?] written by another plugin — is
preserved verbatim and shown as Backlog. Even when MarkTodo rewrites that line
for another reason, it writes the glyph back exactly as it found it rather than
normalising it to one of the six, so another plugin’s boxes survive a vault
MarkTodo indexes.
Checking a box in a plain editor writes [x]. Unchecking one maps back to
Backlog, not Paused: unchecking says the work is not finished, which is a
different claim from deliberately setting it down.
The two phases
Section titled “The two phases”The six are MarkTodo’s own, and they split in two — three statuses for work you are planning, three for work that is live:
| Phase | Statuses | Means |
|---|---|---|
| Plan | Backlog, Warming, Paused | Nothing is moving yet, by choice |
| Active | Doing, Blocked, Done | The work is live, even when it is stuck |
That split is why Blocked and Paused are different statuses rather than one “on hold”. Blocked is someone else stopping live work, so it stays in the active phase where you have to look at it. Paused is you setting the work down, which is a planning decision, so it drops back to the planning phase and out of today.
The app’s Kanban board draws its tabs in this order — every Plan status, then every Active one — and its horizontal swipe walks the same path.
The names are fixed
Section titled “The names are fixed”These six are the whole set, and their names cannot be changed. A Doing
heading means the same thing in every vault, on every device, in the plugin and
in the app — which is what makes the vocabulary worth learning, and what lets a
note written on one device be read correctly on another.
The note
Section titled “The note”Indent a line under a todo and it becomes that todo’s note. It is the second line of the row in every list, in both programs.
- [/] Demo old floor @high Skip booked for Thursday. Keep the trim, it's original.- [ ] Price new subfloorThere is no marker and no capsule key. The block is the note, recomputed from the bytes every time MarkTodo reads the file — so a note you type by hand in any editor is picked up like any other edit, and there is no flag that can fall out of step with the text.
The rules are short:
- A note is the deeper-indented lines directly under the todo.
- A blank line ends it.
- A nested todo ends it too. Those lines are sub-items, not note.
- Moving a todo carries its note and its sub-items with it, so changing a status, a section or a project never strands them.
When MarkTodo writes a note back it drops blank lines inside the block, because a blank would end the block: the lines after it would be read as loose text belonging to no todo.
Priority
Section titled “Priority”Three optional tokens. No token means no priority.
- [ ] Renew the domain @urgent- [ ] Demo old floor @high- [ ] Alphabetise the spice rack @lowType @pu, @ph or @pl and MarkTodo expands it to the full word.
A token counts only as a whole word — at the start of the text or after a
space, and followed by a space or the end of the line. bob@high.com and
@high-school are ordinary text, and stay that way.
- [ ] File the permit due @ 2026-07-01- [x] Measure the subfloor done @ 2026-06-28 14:07due @ YYYY-MM-DD stays inline, exactly where you typed it.
done @ YYYY-MM-DD HH:MM is stamped when you complete a todo and removed if you
reopen it. The minute is there so Done can read most-recently-completed first
within a single day’s work. done @ is matched as a whole word too, so a line
that says undone @ 2026-06-28 is left alone.
A stamp already in your notes that carries only a date is kept exactly as it is and never rewritten — the minute it would gain is the minute you re-saved, not the minute you finished — so it sorts as that day’s start.
Hand-typed dates may skip leading zeros (due @ 2026-9-14); MarkTodo pads them
the next time it writes that line.
Reminders
Section titled “Reminders”- [ ] Call the plumber notify @ 2026-07-01 09:30notify @ YYYY-MM-DD HH:MM — local time, 24-hour — sets a reminder. The Android
app raises the notification at that time. In Obsidian, the todo shows up in the
Reminders segment of Agenda.
Times pad the way dates do: type 9:05 and MarkTodo writes 09:05 the next
time it rewrites the line.
On Android the reminder also needs the system’s Alarms & reminders permission. Without it Android treats the alarm as inexact and may hold the notification back by up to an hour. The app offers the permission the first time you set a reminder without it, and until you grant it there is a button in the app’s Settings — see the Android app.
Tags and links
Section titled “Tags and links”#tags and [[links]] stay where you put them. MarkTodo scans them so it can
index and filter by them, and never moves them out of the line — the same
in-place rule the dates and the priority token follow.