Headings, emphasis, links, and images
Use one to six hash characters for heading levels. Use asterisks or underscores for emphasis, but keep one style consistent within a document. Link text should describe the destination; image alt text should describe the information in the image.
# Heading 1
## Heading 2
### Heading 3
**bold**
*italic*
***bold and italic***
~~strikethrough~~
[link text](https://example.com)
Paragraphs, line breaks, and horizontal rules
Separate paragraphs with a blank line. A normal line break inside the source may be rendered as a space, depending on the Markdown flavor. Use a blank line for a new paragraph, or two trailing spaces for a hard line break when your renderer supports that convention.
First paragraph.
Second paragraph.
---
Content after a horizontal rule.Lists and task lists
Use hyphens, asterisks, or plus signs for unordered lists and numbers followed by periods for ordered lists. Indent nested items consistently. Task lists are a GFM extension and are especially useful in issues and project READMEs.
- Unordered item
- Nested item
1. First step
2. Second step
- [x] Completed task
- [ ] Open taskBlockquotes and nested content
> A quoted paragraph.
>
> - A list inside the quote
> - Another item
>
> > A nested quotationRepeat the > marker on blank quoted lines. That keeps multi-paragraph blockquotes reliable across renderers.
Inline code and fenced code blocks
Wrap inline identifiers and commands in one backtick. Use three backticks for a block and add a language after the opening fence for syntax highlighting.
Use `inline code` inside a sentence.
```js
function greet(name) {
return `Hello, ${name}`;
}
```Markdown tables
GFM tables need a header row and a separator row. A colon on the left means left alignment, colons on both sides mean center, and a colon on the right means right alignment.
| Package | Version | Status |
| :------ | ------: | :----: |
| Editor | 2.4 | Stable |
| Parser | 11.0 | Stable |Escape a literal pipe inside a cell as \|. For more detail, use the Markdown table alignment guide.
Escaping Markdown punctuation
Add a backslash before punctuation when you want the character to appear literally instead of starting Markdown syntax.
\*not italic\*
\# not a heading
\[not a link\](https://example.com)
\| literal table pipeHTML inside Markdown
Some renderers accept inline HTML, but support and sanitization rules vary. Prefer native Markdown for portable content. Use HTML only after checking the target platform, especially for details elements, custom alignment, or advanced tables.
Portability checklist
- Put blank lines around headings, lists, blockquotes, and code fences.
- Use spaces rather than tabs for nested list indentation.
- Label fenced code blocks with a real language identifier.
- Use descriptive link labels instead of “click here.”
- Test tables and task lists in the exact platform where they will publish.
- Keep the source readable even before it is rendered.
Specifications and references
For exact parsing behavior, consult the CommonMark specification and the GitHub Flavored Markdown specification. This cheat sheet emphasizes common authoring patterns rather than every parser edge case.