Emacs: Org Mode Markup Cheatsheet
Emacs org-mode is a markup language, similar to Markdown, but with far more features. This page shows the markup syntax.

Alt+x org-mode
to start org mode.
Heading
Heading starts with a asterisk, like this:
* text
- first level heading
** text
- second level heading
*** text
- third level heading
Inline Code
~text~
- Source Code
=text=
- Verbatim text
Code Block
#+BEGIN_EXAMPLE
source_code
#+END_EXAMPLE
In emacs 26, press < e Tab to insert the markup.
In emacs 27, to insert the markup, press
Ctrl+c Ctrl+,
(org-insert-structure-template
)
Source Code Block
Example of python code:
#+BEGIN_SRC python
python_code
#+END_SRC
#+BEGIN_SRC emacs-lisp
emacs_lisp_code
#+END_SRC
In emacs 27, to insert the markup, press
Ctrl+c Ctrl+,
(org-insert-structure-template
)
In emacs 26, to insert the markup, press < s Tab, type first char of your language name, then press Ctrl+Alt+i. Press that again to switch to next lang.
For how to eval source code, see: Emacs: Org Mode, Work with Source Code
Text Decoration
*text*
- Bold
/text/
- Italic
_text_
- Underlined
=text=
- Verbatim
~text~
- Code
+text+
- Strike-through
List
Unordered list
- item
- item
- item
or
+ item
+ item
+ item
Ordered List
1. item
2. item
3. item
Description list, is just like list, but with ::
separating the term and its description. Often used for definition.
- term :: description
- term :: description
Checkboxes can be added to list items, right after the list marker.
- [ ] description
- [X] description
- [ ] description
Link
[[URL]]
or
[[URL][description]]
Image
[[image_file_path]]
-
org-toggle-inline-images
【Ctrl+c Ctrl+x Ctrl+v】 - Display images
Tags
Tags are keywords attached to headline. Tags must be at the end of headline. Example:
* learn golang :tag_word:
there can be multiple.
* Project xyz :tag_word:tag_word:
tag_word can be any word, such as “work”, “code”, “family”, but space is not allowed in tag word.
Todo
a heading can start with TODO or DONE.
example:
** TODO text
These are for todo features. By default, the keyword are TODO or DONE.
[see Emacs: Using Org Mode for Todo]
Priority Mark
A heading can have priority mark. It follows immediately after TODO:
** TODO [#A] text
The syntax is
[#A]
[#B]
[#C]
- etc.
Priority mark is used for todo/agenda features in org mode.
Date Time
Timestamp has these syntax:
<2019-01-25 Fri>
(active timestamp, where other org features may act on it, such as scheduling, agenda.)<2019-01-25 Fri 20:08>
[2019-01-25 Fri]
(inactive timestamp. Simply a date/time stamp.)
Timestamp can have other syntax variation to specify a duration or repetition.
<2006-11-01 Wed 19:15>
<2006-11-02 Thu 20:00-22:00>
<2007-05-16 Wed 12:30 +1w>
weekly<2004-08-23 Mon>--<2004-08-26 Thu>
range.
Keys:
- Ctrl+c .
-
org-time-stamp
. Insert a time stamp - Ctrl+c !
-
org-time-stamp-inactive
Properties
Each heading can have associated info of key value pairs, called properties.
Here's syntax for properties:
* emacs_tutorial
:PROPERTIES:
:ORDERED: yes
:ID: 11858
:OWNER: Lee
:END:
Properties must immediately follow a headline.
:PROPERTIES:
Followed by key value pair, 1 pair per line.
Followed by
:END:
Drawer
Drawer lets you attach info to a heading. It's similar to properties, but instead of key value pairs, you have arbitrary text.
The difference of drawer content and heading's content is that drawer's content are normally hidden from view. (so, drawer is used for associated info you do not always want to see to prevent clutter.)
Drawer must immediately follow a heading.
Drawer syntax is like this:
* heading
:DRAWERNAME:
drawer_text
:END:
Export
- Alt+x
org-export-dispatch
【Ctrl+c Ctrl+e】 - Export. To export to HTML, the key is Ctrl+c Ctrl+e h h
Org Commands
Emacs Org mode has many commands, including:
- Insert any org markup.
- View expand/collapse by headings only.
- Move headings, or level up/down.
- Evaluate embedded source code.
- Insert dates, todo, tags, etc.
- Insert/compute date range, clocking time.
For a basic tutorial, see: Emacs: Outline, org-mode