Markdown Cheat Sheet: All 21 Syntax Elements on One Page
A markdown cheat sheet is a single-page reference that pairs each markdown element with its exact syntax, so you can format a document without a trip to the full documentation. This page covers all 21 elements in two tables: the 10 basic elements John Gruber defined in the original 2004 specification, and the 11 extended elements that later flavors such as CommonMark (2014) and GitHub Flavored Markdown (2017) added on top. Every syntax example on this page also works in the online markdown editor, where the live preview shows the rendered result as you type.
Basic syntax
Basic syntax covers the 10 elements from the original 2004 markdown design, and every markdown application renders them identically. These 10 elements handle the bulk of everyday writing: structure comes from headings and lists, emphasis comes from bold and italic, and references come from links and images. If a document uses only the rows in this table, it renders correctly on GitHub, in Obsidian, on Reddit, in Discord, and in any editor built after 2004.
| Element | Syntax | Rendered result |
|---|---|---|
| Heading | # H1 / ## H2 / ### H3 | Section titles at levels 1 to 6; one # per level |
| Bold | **strong words** | strong words |
| Italic | *slanted words* | slanted words |
| Blockquote | > quoted line | Indented quotation block with a left border |
| Ordered list | 1. Step one 2. Step two | Numbered list; numbering renders sequentially |
| Unordered list | - First point - Second point | Bulleted list; * and + also work as markers |
| Code | `inline code` | inline code in a monospace box |
| Horizontal rule | --- | Full-width divider line between sections |
| Link | [anchor text](https://example.com) | Clickable hyperlink labelled "anchor text" |
| Image |  | Embedded image with alt text for accessibility |
The heading marker needs a space after the final #, and the horizontal rule needs a blank line above it. Those two details cause most basic-syntax rendering failures.
Extended syntax
Extended syntax adds 11 elements that the original 2004 specification never included, and support depends on which markdown flavor an application implements. Tables, fenced code blocks, and task lists arrived with GitHub Flavored Markdown, which GitHub formalised as a spec in 2017. Footnotes, definition lists, and highlight come from other flavors and render in fewer applications.
| Element | Syntax | Rendered result |
|---|---|---|
| Table | | Name | Role | | --- | --- | | Ada | Engineer | | Grid with a header row and aligned columns |
| Fenced code block | ```json { "id": 1 } ``` | Multi-line code box with optional syntax colouring |
| Footnote | A claim.[^1] [^1]: The source. | Numbered reference with a note at the page bottom |
| Heading ID | ## Pricing {#pricing} | Heading with a custom anchor for direct links |
| Definition list | Term : Meaning of the term | Term on one line, indented definition below it |
| Strikethrough | ~~old figure~~ | |
| Task list | - [x] Ship the draft - [ ] Review edits | Checklist with checked and unchecked boxes |
| Emoji shortcode | :tada: | The matching emoji character, 🎉 |
| Highlight | ==key phrase== | Phrase on a coloured background |
| Subscript | H~2~O | H₂O |
| Superscript | x^2^ | x² |
Support varies by application: GitHub renders tables, fenced code blocks, task lists, strikethrough, footnotes, and emoji shortcodes but ignores highlight, subscript, and superscript; Obsidian handles tables, footnotes, task lists, strikethrough, and highlight; Discord accepts bold, italic, strikethrough, and code blocks but has no table or footnote support. When a target platform is unknown, the 10 basic elements are the safe set.
How to use this cheat sheet
Find the element in the left column, copy the syntax from the middle column, and replace the placeholder text with your own content. The rendered result column shows what the output looks like, so you can confirm the element matches your intent before you copy it. For anything in the extended table, check the support note first; a footnote that renders on GitHub disappears on Discord.
The fastest way to verify syntax is to paste it into the online markdown editor. The live preview renders each element within milliseconds, so a broken table or an unclosed ** marker shows up immediately. Writers who use markdown daily tend to memorise the basic table within a week; the extended table is the part worth keeping within reach.
Download and print
This cheat sheet fits on one A4 page and is available as a .md file, so you can keep a copy inside your own notes app or print it for your desk. The downloaded file is itself valid markdown, and both tables render correctly in any application that supports GFM tables. Open it in the editor, in Obsidian, or in a GitHub repository and the reference stays formatted.
Frequently asked questions
What is the difference between basic and extended markdown syntax?
Basic syntax means the 10 elements from the original 2004 specification, and extended syntax means the 11 elements that later flavors added. Every markdown application supports the basic set. The extended set depends on the flavor: CommonMark standardised core behaviour in 2014, and GFM added tables, task lists, and strikethrough in its 2017 spec.
Do all markdown applications support extended syntax?
No. Extended syntax support differs by application, and no single app renders all 11 extended elements. GitHub skips highlight and subscript, Discord skips tables and footnotes, and Obsidian covers the widest range of the three. Documents intended for multiple platforms should rely on basic syntax plus GFM tables.
Is markdown hard to learn?
No. Markdown has 21 total elements, and the 10 basic ones cover most documents. A # for headings, ** for bold, and - for lists account for the majority of real-world usage. Most people write fluent markdown after a single session with a live preview editor, because the preview corrects mistakes on the spot.
