Markdown Syntax Cheat Sheet: How Markdown Formatting Actually Works

Markdown formats text using a small set of plain-text symbols. Here is what each one does and why the format caught on.

Headings use a leading # for each level

"# " through "###### " map to heading levels 1 through 6, and a space after the # marks is required for it to be recognized as a heading.

Emphasis uses * or _ around text

*italic* or _italic_ produces italics, **bold** or __bold__ produces bold, and ***bold italic*** combines both.

Lists use - or 1. at the start of a line

A dash or asterisk creates a bulleted list, a number followed by a period creates a numbered list, and indenting a line nests it as a sub-list.

Code uses backticks

A single backtick wraps inline code, while a fenced block of three backticks (```) wraps multi-line code, and adding a language name after the opening fence often enables syntax highlighting.

Blockquotes and horizontal rules

A line starting with > becomes a blockquote, and a line containing only --- creates a horizontal rule.

Why Markdown caught on

Unlike HTML tags, Markdown is designed to stay readable as plain text even before it is rendered, and it is lightweight enough to write without any special editor. That combination is a big part of why it became a near-universal standard across GitHub, documentation tools, chat apps, and note-taking apps.

Markdown is not a perfectly uniform standard

The base specification is intentionally minimal, so many platforms layer on their own extensions β€” tables, checkbox task lists, strikethrough, footnotes β€” under names like GitHub Flavored Markdown. A document written for one platform's flavor can render slightly differently, or not fully, on a simpler parser elsewhere.

Frequently Asked Questions

Does every app that supports Markdown render it exactly the same way?

No. The core syntax works almost everywhere, but any extended feature β€” tables, footnotes, and similar additions β€” depends entirely on which flavor and parser the specific platform uses.

Can you mix raw HTML inside Markdown?

Many Markdown implementations let raw HTML tags pass through unrendered by the Markdown parser, which is useful for things Markdown cannot do natively, like a manual <br> line break. This is not guaranteed everywhere, though β€” some platforms disable raw HTML entirely for security reasons.