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
| Markdown | Result |
|---|---|
# H1 … ###### H6 | Headings, one to six levels |
**bold** | bold |
*italic* | italic |
***bold italic*** | bold italic |
~~strikethrough~~ | |
`inline code` | inline code |
> quote | A block quote |
--- | A horizontal rule |
| Two spaces at line end | A line break within a paragraph |
Lists
| Markdown | Result |
|---|---|
- item or * item | Bulleted list |
1. item | Numbered list — the numbers you write do not matter |
- nested | Nested list, indented two spaces |
- [ ] todo / - [x] done | Task list (GitHub and most renderers) |
Links, images and code
| Markdown | Result |
|---|---|
[text](https://example.com) | A link |
[text](url "title") | A link with a hover title |
 | 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
| Markdown | Meaning |
|---|---|
| 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.
Related tools
- Markdown to HTML — Render Markdown with a live preview.
- Markdown table generator — Build an aligned table from CSV.
- Git cheat sheet — For writing good commit messages.