Cheatsheets:Markdown: Difference between revisions
| Line 163: | Line 163: | ||
|} | |} | ||
Alternative to classic links like <syntaxhighlight lang="markdown" inline>[CommonMark](https://commonmark.org)</syntaxhighlight>, you can also use reference-style links, which allow you to refer to the target link with an arbitrary placeholder then declare the equivalence of the placeholder to your target link at the end of the file. This allows you to reuse a link in multiple places without repeating it. | |||
{| class="wikitable" | {| class="wikitable" | ||
Revision as of 15:55, 19 August 2026
Quick reference for smart people — part of our dev cheatsheets collection.
Markdown is plain text with a few markers that a renderer turns into HTML. This page is a syntax reference for CommonMark, the standard. GitHub Flavored Markdown (GFM) extensions are covered in the GFM extensions section.
New to Markdown? CommonMark interactive tutorial may interest you.
Basic example: Pancake recipe
| Markdown source | Compiled to HTML | Rendered in the browser |
|---|---|---|
# Pancakes
A quick pancake recipe for two.
## Ingredients
- 150 g flour
- 250 ml milk
## Steps
1. Mix the flour and milk.
2. Cook the batter in a pan.
|
<h1>Pancakes</h1>
<p>A quick pancake recipe for two.</p>
<h2>Ingredients</h2>
<ul>
<li>150 g flour</li>
<li>250 ml milk</li>
</ul>
<h2>Steps</h2>
<ol type="1">
<li>Mix the flour and milk.</li>
<li>Cook the batter in a pan.</li>
</ol>
|
|
Paragraphs and line breaks
- Two paragraphs must be separated by a blank line.
- A single newline becomes a space when rendered.
- For a hard linebreak within a paragraph, use
\
line one
line two
Rendered:
|
line one\
line two
Rendered:
|
Headings
One to six # markers set the level.
| Source | Level |
|---|---|
# Pancakes |
h1 |
## Ingredients |
h2 |
| ... | ... |
###### Note |
h6 |
A space between the last marker and the text is required:
Wrong (no space) Right #PancakesRendered: the line stays a paragraph and the
#is literal:#Pancakes
# PancakesRendered: a level-1 heading:
Pancakes
Emphasis
| Source | Rendered |
|---|---|
*italic* or _italic_ |
italic |
**bold** or __bold__ |
bold |
***both*** |
both |
Emphasis needs word boundaries — underscores inside a word are literal, not emphasis.
Source
foo_bar_bazrenders as foo_bar_baz, not as "foobarbaz". Fix: use asterisks around whole words instead:*foo bar* baz
Links and images
| Source | Rendered |
|---|---|
[CommonMark](https://commonmark.org) |
CommonMark |
 |
Alternative to classic links like [CommonMark](https://commonmark.org), you can also use reference-style links, which allow you to refer to the target link with an arbitrary placeholder then declare the equivalence of the placeholder to your target link at the end of the file. This allows you to reuse a link in multiple places without repeating it.
| Source | Rendered |
|---|---|
[CommonMark][cm]
...
[cm]: https://commonmark.org
|
CommonMark |
Lists
Unordered markers -, * and + are interchangeable. Ordered lists number from the first item's number, whatever you write:
3. Mix the flour and milk.
4. Cook the batter in a pan.
Rendered:
- Mix the flour and milk.
- Cook the batter in a pan.
The numbering starts at 3, as typed — the first item's number sets the start.
Nest with an indentation:
- fruit
- apple
- pear
- veg
Rendered:
- fruit
- apple
- pear
- veg
A blank line between items makes a loose list — each item is wrapped in a paragraph:
Without (tight) With a blank line (loose) - fruit - vegRendered:
- fruit
- veg
- fruit - vegRendered:
fruit
veg
Code
Inline code — backticks; when the code itself contains a backtick, use two backticks:
| Source | Rendered |
|---|---|
`pip install markdown` |
pip install markdown
|
`` `expr` `` |
`expr`
|
Fenced blocks — three backticks; the word after the opening fence enables syntax highlighting:
```python
print("hi")
```
Rendered:
print("hi")
Legacy syntax: indented code blocks. Four leading spaces also produce a code block, without highlighting:
print("hi")Rendered:
print("hi")This form is not recommended — it is easy to break (a blank line ends it, and the indentation must change inside lists). You may still see it in older documents; use fenced blocks instead.
Blockquotes
A line starting with > is a blockquote; an empty > keeps paragraphs separate inside the quote.
> quoted line
>
> second quoted line
Rendered:
quoted line
second quoted line
Nested quotes — >>:
> outer
>
> > inner
Rendered:
outer
inner
GFM extensions
GitHub Flavored Markdown (GFM) used on GitHub and increasingly elsewhere, extends commonMark syntax with the following additions:
Strikethrough — two tildes:
| Source | Rendered |
|---|---|
~~struck~~ |
Tables
| Left | Center | Right |
|:-----|:------:|------:|
| a | b | c |
When rendered, the first column is left-aligned (:-----), the second center-aligned (:-----:) and the third
right-aligned (-----:):
Left Center Right a b c
Task lists
- [x] mix the batter
- [ ] cook the pancakes
Rendered:
☑ mix the batter
☐ cook the pancakes
Escaping
A backslash makes the next character literal:
| Source | Rendered |
|---|---|
\*not italic\* |
*not italic* |
\# not a heading |
# not a heading |
Markdown inside an HTML block is not parsed — raw HTML passes through untouched.
<div> *bold?* no, raw </div>renders the
*bold?*literally. Fix: don't wrap Markdown in raw HTML at all:*bold?* yes
Further reading
- CommonMark spec — the official standard
- CommonMark interactive tutorial — the recommended tutorial
- GFM spec — tables, task lists, strikethrough
- Markdown Guide — a friendly reference