Markdown syntax

Markdown syntax is a small set of plain-text marks that a processor turns into formatted HTML. You write with ordinary punctuation, such as # for a heading, ** for bold or - for a list item, and the text stays readable before it is rendered.

The syntax comes in two layers. The core is the original 2004 syntax that every tool understands: headings, paragraphs, lists, links, images, code and quotes. On top of that, extensions add what longer documents need, like tables, task lists, footnotes and math.

Start here

Basics

Every core rule, with side-by-side examples of what you type and what it renders.

Read the basics →

HTML markup

Drop in raw HTML for underline, colour, accordions and image sizing when Markdown has no mark of its own.

See HTML markup →

Cheat sheet

Every element and its syntax on one page for quick reference.

Open the cheat sheet →

Compatibility

Which syntax works across CommonMark, GitHub, Obsidian, VS Code, Reddit and Pandoc.

Check compatibility →

Common questions

How do I create a table in Markdown?

Separate the columns with pipes and put a row of dashes under the header row. See Tables.

How do I add a link in Markdown?

Wrap the link text in square brackets and the URL in parentheses, like [text](url). See Links.

How do I add an image in Markdown?

Use the same syntax as a link with an exclamation mark in front, like ![alt text](image.jpg). See Images.

How do I make text bold or italic in Markdown?

Wrap text in two asterisks for bold and one for italic, like **bold** and *italic*. See Formatting.

How do I create a list in Markdown?

Start each line with a dash for a bullet list, or a number and a dot for an ordered list. See Lists.

How do I write a code block in Markdown?

Fence the code between lines of three backticks, and optionally name the language for syntax highlighting. See Code.