Skip to the tool

Markdown cheat sheet

The working set of markdown, one page, with the editor right here, read a rule, type it, watch it render. That loop teaches markdown in about ten minutes.

Guide

How to use it

  1. # Heading to ###### Heading: one hash per level, space after the hashes.
  2. **bold**, *italic*, `inline code`, ~~struck~~.
  3. - item for bullets, 1. item for numbered, - [ ] task for checkboxes, blank line before any list.
  4. [text](https://url) for links, ![alt](image-url) for images.
  5. > quote for blockquotes, ``` fences around code blocks, --- alone on a line for a rule.
  6. Tables: a header row, then | --- | --- |, then data rows, pipes between cells.

Examples

The three rules that fix everything

BLANK LINES

Markdown’s paragraph, list and heading breaks all want a blank line before them. Ninety per cent of "why is it not rendering" is a missing blank line.

SPACE AFTER #

#Heading is text, # Heading is a heading. The same courtesy applies to list markers: -item is text, - item is a bullet.

THE SEPARATOR ROW

A table is not a table until the second row is | --- | pipes-and-dashes. Header, separator, data: three-row minimum, and it renders.

Method

How it works

This sheet covers the GitHub-flavoured core, the subset that renders identically on GitHub, GitLab, Discord, Reddit, Notion, static site generators and this editor. Extensions beyond it (footnotes, math, alerts) belong to individual platforms and travel badly.

Markdown’s design goal, per its 2004 origin, was text readable as plain text that also converts to HTML, which is why the syntax reads like things people already typed in email: asterisks, dashes and quotes doing what they look like.

FAQ

Frequently asked questions

How do I force a line break without a new paragraph?

End the line with two spaces, or use a blank line for a proper paragraph. The two-space rule is markdown’s least discoverable feature, now you know it.

How do I show a literal asterisk or hash?

Backslash-escape it: \* and \#. Inside code spans and fences, everything is already literal.

Numbered lists: do the numbers matter?

No, 1. 1. 1. renders as 1. 2. 3., markdown counts for you. Handy when reordering items.

How do I nest lists?

Indent the child two to four spaces under its parent item. Consistency matters more than the exact count.

Bold and italic together?

***three asterisks*** wraps both. Beyond that, restraint is a feature of good documents.

Which flavour should I learn?

Exactly this core. It is the lingua franca, platform extras can be learned the day a platform demands them.

More tools

Related tools

Markdown editorThe full editor with export. Markdown previewRender something you were sent. Regex cheat sheetThe other syntax worth one page. Morse code chartReference charts, the tradition continues.
Skip to the tool

Markdown cheat sheet

The working set of markdown, one page, with the editor right here, read a rule, type it, watch it render. That loop teaches markdown in about ten minutes.

Preview

Notes

Type markdown on the left, see it rendered on the right.

What works

  • Headings, lists and emphasis
  • Links and inline code
  • Tables and task lists

> Blockquotes for the profound bits.

code fences too
ColumnNotes
TablesGitHub style

58 words · autosaved in this browser

Autosaves to this browser only. Drafts never leave your device.

Guide

How to use it

  1. # Heading to ###### Heading: one hash per level, space after the hashes.
  2. **bold**, *italic*, `inline code`, ~~struck~~.
  3. - item for bullets, 1. item for numbered, - [ ] task for checkboxes, blank line before any list.
  4. [text](https://url) for links, ![alt](image-url) for images.
  5. > quote for blockquotes, ``` fences around code blocks, --- alone on a line for a rule.
  6. Tables: a header row, then | --- | --- |, then data rows, pipes between cells.

Examples

The three rules that fix everything

BLANK LINES

Markdown’s paragraph, list and heading breaks all want a blank line before them. Ninety per cent of "why is it not rendering" is a missing blank line.

SPACE AFTER #

#Heading is text, # Heading is a heading. The same courtesy applies to list markers: -item is text, - item is a bullet.

THE SEPARATOR ROW

A table is not a table until the second row is | --- | pipes-and-dashes. Header, separator, data: three-row minimum, and it renders.

Method

How it works

This sheet covers the GitHub-flavoured core, the subset that renders identically on GitHub, GitLab, Discord, Reddit, Notion, static site generators and this editor. Extensions beyond it (footnotes, math, alerts) belong to individual platforms and travel badly.

Markdown’s design goal, per its 2004 origin, was text readable as plain text that also converts to HTML, which is why the syntax reads like things people already typed in email: asterisks, dashes and quotes doing what they look like.

FAQ

Frequently asked questions

How do I force a line break without a new paragraph?

End the line with two spaces, or use a blank line for a proper paragraph. The two-space rule is markdown’s least discoverable feature, now you know it.

How do I show a literal asterisk or hash?

Backslash-escape it: \* and \#. Inside code spans and fences, everything is already literal.

Numbered lists: do the numbers matter?

No, 1. 1. 1. renders as 1. 2. 3., markdown counts for you. Handy when reordering items.

How do I nest lists?

Indent the child two to four spaces under its parent item. Consistency matters more than the exact count.

Bold and italic together?

***three asterisks*** wraps both. Beyond that, restraint is a feature of good documents.

Which flavour should I learn?

Exactly this core. It is the lingua franca, platform extras can be learned the day a platform demands them.

More tools

Related tools