This document is a syntax for todo-lists in Markdown. It proposes a standard that integrates task date, time, and importance. Like Gruber's original spec, this syntax aims to be readable as-is.
a Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.
A todo-item, like a Markdown list-item, should take up one line. They begin with a hyphen -
(so that they render as list-items in standard Markdown), followed by the checkbox, followed by a space. Everything else (text, importance, time, and date) is optional, and can occur in any order—except for the date, which must come last.
- <checkbox> [<text>, <importance>, <time>, <date>]
The checkbox is most often written as two square-brackets with a space in-between [ ]
(see the checkbox syntax for all options). Importance is denoted as a series of exclamation points !
, from none (least urgent) to three (most urgent). Timing, which references what time the item occurs or needs to occur by (not the duration of the item), is denoted with the at-symbol @
. The date should be formatted as YYYY-MM-DD
, and wrapped in parentheses (...)
.
- [ ] Example todo item !! @8pm (2020-08-11)
An empty checkbox is written as: [ ]
. This should produce an <input type="checkbox">
element.
- [ ] Unfinished todo
Tasks that have been pulled from previous times can be written as: ->]
, but should still produce an <input type="checkbox">
element.
- ->] Task from last week
Tasks that have been pushed to later are written as: [->
, and create an <input type="checkbox" disabled>
element.
A completed task has a checked checkbox, and is written as: [*]
. This produces an <input type="checkbox" checked>
.
- [*] Completed todo
You can also use -
, +
, x
, v
, •
, @
, #
, √
, ~
, or ✓
to mark a box as checked.
- [x] This is fine
- [#] This is also fine
- [✓] All good over here
- [@] Everything is done
The text of a todo-item can contain inline Markdown formatting (bold, italic, links, code
).
- [ ] Get this one done *now*
The urgency of a task can be set at one of four levels: none, low, medium, and high. This is written as zero, one, two, or three exclamation points in a row, respectively. The exclamation points can come before or after the text (but not within the text), and a separating space is optional.
- [ ] Very important!!
- [ ] Even more important !!!
- [ ] !A little important
- [*] Not at all important
Sometimes tasks need to happen at a certain time (like meetings), or before a certain time (like schoolwork). The time a task occurs at can be set by writing an at-symbol @
followed by the time (no spaces). The time can be written with or without minutes, and with or without the "AM/PM" (note that if there is no AM or PM, 24-hour time is assumed).
- [ ] This task occurs @8pm
- [ ] @6:30am Walk the dog
- [ ] You can do uppercase @10:30PM
- [ ] Or 24-hour @18:00
The date the task is due can be added at the end. It must follow (YYYY-MM-DD)
format.
- [ ] Happy new year (2025-01-01)
- [*] Eat 100 hotdogs (2006-06-25)
Here are a handful of examples of correct Markdown task items:
- [*] Check out the new Jack White album (2018-03-23)
- [ ] Put out fire!!! @8AM
- ->] Buy new extinguisher
- [ ] Meet Marty for dinner @6:30pm (2020-08-12)
- [-> Do something later