Home / Tools / Markdown Cheat Sheet
Free tool · runs in your browser

Markdown Cheat Sheet

Every piece of Markdown syntax in one reference, with the GitHub-flavoured extensions marked and the differences between renderers explained — because “Markdown” is not one format.

Reference

A reference page. To see Markdown rendered as you type, use the Markdown to HTML converter, or build a table with the table generator.

How it works

The syntax

Text and headings

MarkdownResult
# H1 … ###### H6Headings, one to six levels
**bold**bold
*italic*italic
***bold italic***bold italic
~~strikethrough~~strikethrough
`inline code`inline code
> quoteA block quote
---A horizontal rule
Two spaces at line endA line break within a paragraph

Lists

MarkdownResult
- item or * itemBulleted list
1. itemNumbered list — the numbers you write do not matter
  - nestedNested list, indented two spaces
- [ ] todo / - [x] doneTask list (GitHub and most renderers)

Links, images and code

MarkdownResult
[text](https://example.com)A link
[text](url "title")A link with a hover title
![alt](image.png)An image — always write real alt text
<https://example.com>An automatic link
```lang … ```A fenced code block with syntax highlighting
[text](#heading-name)A link to a heading on the same page

Tables

MarkdownMeaning
| a | b |A row
|---|---|The separator row — required, or it is not a table
|:--|Left-aligned column
|:-:|Centred column
|--:|Right-aligned column
\|A literal pipe inside a cell

There is no single Markdown

John Gruber’s 2004 original left many cases undefined, so every renderer resolved them differently. That is why the same file looks different on GitHub, Reddit and in your editor.

  • CommonMark is the strict specification that pinned down the ambiguities. Most modern renderers follow it.
  • GitHub Flavored Markdown (GFM) is CommonMark plus tables, task lists, strikethrough and autolinking. It is the de facto standard for READMEs.
  • MultiMarkdown / Pandoc add footnotes, citations, definition lists and maths.

Tables, task lists and strikethrough are not in original Markdown. They are near-universal now, but a minimal renderer may not support them.

Things that trip people up

A table needs its separator row. Without the row of dashes, pipes render as literal text. This is the most common “my table is broken” cause.

Line breaks are not what you expect. A single newline is treated as a space; a paragraph break needs a blank line. For a line break inside a paragraph, end the line with two spaces or use <br>.

Underscores inside words. snake_case_name can be read as emphasis by older renderers. CommonMark fixed this by ignoring intra-word underscores, but escape them as \_ if a renderer misbehaves.

Indentation creates code blocks. Four spaces of indentation means a code block, which is why an over-indented list item sometimes renders as code.

Raw HTML is often allowed — which makes any renderer that accepts untrusted input an XSS risk unless the output is sanitised.

Writing a README that works

Lead with what the project is in one sentence, then how to install it, then a minimal working example. A reader deciding whether to use your project is answering “what is this and will it work for me” — badges and a table of contents do not answer either.

Always write real alt text for images: screen readers depend on it, and it is what shows when an image fails to load. Specify a language on every fenced code block so it is highlighted.

What people use it for

  • Writing a README or project documentation.
  • Formatting a pull request or issue comment.
  • Building a table and needing the alignment syntax.
  • Checking whether a feature is standard or a GitHub extension.
  • Debugging a table or list that is not rendering.

Nothing is uploaded. This tool runs entirely in JavaScript in your browser. Your input is never sent to a server, never logged and never stored, and no account is required. Once the page has loaded you can go offline and it still works — open your browser's network tab and watch if you'd like to confirm it.

Frequently asked questions

Why is my table not rendering?

Almost always a missing separator row. A pipe table needs a row of dashes between the header and the body; without it the pipes render as literal text. Tables are also a GitHub extension, so a strict CommonMark renderer may not support them at all.

How do I add a line break without starting a new paragraph?

End the line with two spaces, or use a literal
tag. A single newline on its own is treated as a space, and a blank line starts a new paragraph.

What is the difference between CommonMark and GitHub Flavored Markdown?

CommonMark is the strict specification that resolved the ambiguities in the 2004 original. GFM is CommonMark plus tables, task lists, strikethrough and autolinking, and is the de facto standard for READMEs.

Can I use HTML inside Markdown?

Most renderers allow it, which is how people get line breaks and nested layouts. It also makes any renderer accepting untrusted input an XSS risk unless the output is sanitised, so some renderers disable or escape it.

Why is my snake_case word turning italic?

Older renderers treated underscores inside words as emphasis markers. CommonMark fixed this by ignoring intra-word underscores, but if a renderer misbehaves, escape them as \_.

Tools that run where your code is

This page does its work in your browser because sending your data to a server to process it is a bad default. Catalase applies the same idea to AI coding: a free, open-source code editor that runs language models on your own machine through Ollama, with no account and no telemetry. Cloud models are there when you choose one, not by default.

Download Catalase freeWhat is Catalase?

Related tools

All 30 free developer tools →