Emacs: Using Org Mode for Todo

By Xah Lee. Date: . Last updated: .

This pages is a tutorial on using emacs org-mode as todo list.

todo list crossout nothing

TODO Heading

To mark a heading as todo item, start it with “TODO”.

* TODO call mom for birthday
* DONE finish coding absca
Ctrl + c Ctrl + t (org-todo)
change heading among 3 states: {TODO, DONE, normal}. It will add the word “TODO” or “DONE” in the heading.

Insert Date Time

Ctrl + c . (org-time-stamp)
Insert an active date stamp. e.g.

<2023-02-09 Thu>

Ctrl + u Ctrl + c . (org-time-stamp)
Insert active date and time. e.g.

<2023-02-09 Thu 14:45>

Ctrl + c ! (org-time-stamp-inactive)
Insert an inactive date stamp. e.g.

[2023-02-09 Thu]

Change Date Time

Shift + (org-shiftup)
increase any {year, month, day, hour}. (cursor must be on a date.)
Shift + (org-shiftdown)
decrease any {year, month, day, hour}. (cursor must be on a date.)


Each heading may have keywords, called “tags”. e.g. work, family, urgent, coding.

The syntax for tag is any word between colon, like this: :mom: or :this:that:. They are placed at end of the headline. Like this:

* call mom for bday. :family:...
* finish writing the org-mode tutorial. :emacs:work:

Tag name cannot have space, nor hyphen. Use lowline _

Tags are inherited from parent nodes, in the sense that when you search for a tag, a heading with that tag will show but also all its children, even if the children's headings do not contain that tag.

Insert Tag

Alt + x org-set-tags-commandCtrl + c Ctrl + q
Insert a tag. You can also just type the tag yourself.

Show Headings by Tag

Alt + x org-match-sparse-treeCtrl + c \
Show only headings of a given tag.

Org Mode

Emacs Tutorial

Quick Start


Split Window




Find Replace



Rectangle Edit

Line Wrap


View Special File

Editing Brackets

Org Mode


Emacs Efficiency