Tool Guides & Tech Tips

Markdown Cheat Sheet: Everything You Need to Know

Markdown is a lightweight markup language created by John Gruber in 2004. It lets you format plain text using simple, intuitive syntax that converts to HTML. Whether you are writing documentation on GitHub, drafting a post on Reddit, or organizing notes in Notion, Markdown is the universal language of formatted text on the web.

In this complete guide, we cover every piece of Markdown syntax you will encounter, with examples you can copy and paste. If you want to practice as you read, open our free Markdown Previewer in another tab and try each example live.

What Is Markdown and Why Use It?

Markdown is a way to write formatted content without using a visual editor. Instead of clicking bold buttons or adjusting font sizes in a toolbar, you type simple characters like # for headings, ** for bold, and - for lists. The result is a plain text file that is readable even without rendering, but converts beautifully to HTML.

The advantages of Markdown are significant. Files are tiny in size, version-control friendly, and platform-independent. You never deal with broken formatting when copying between apps. And once you learn the syntax, you can write faster than in any rich text editor.

Headers

Headers are created using the # symbol. The number of hashes determines the heading level, from H1 (largest) to H6 (smallest).

# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6

Use H1 for the page title, H2 for major sections, and H3 for subsections. Well-structured headings improve readability and SEO.

Text Formatting

SyntaxResult
**bold**bold
*italic*italic
~~strikethrough~~strikethrough
**_bold italic_**bold italic
`inline code`inline code

You can also use underscores for bold (__text__) and italic (_text_), but asterisks are more common and widely supported. Need to convert between text case styles? Try our Text Case Converter to quickly switch between camelCase, UPPER CASE, and more.

Lists

Unordered Lists

- Item one
- Item two
  - Nested item
  - Another nested item
- Item three

You can use -, *, or + as bullet markers. Indent with two spaces for nested lists.

Ordered Lists

1. First step
2. Second step
3. Third step

Markdown auto-numbers ordered lists, so you can even use 1. for every item and the renderer will assign the correct numbers.

Links and Images

[Link text](https://example.com)
[Link with title](https://example.com "Hover text")

![Alt text](image.png)
![Alt text](image.png "Image title")

Links use square brackets for the display text and parentheses for the URL. Images use the same syntax but with an exclamation mark prefix. Always include descriptive alt text for accessibility.

Code Blocks

For inline code, wrap text in single backticks: `variable`. For multi-line code blocks, use triple backticks with an optional language identifier for syntax highlighting:

```javascript
function greet(name) {
  return `Hello, ${name}!`;
}
```

Supported languages include javascript, python, html, css, bash, json, and many more. GitHub, GitLab, and most Markdown renderers support syntax highlighting.

Tables

| Column 1 | Column 2 | Column 3 |
|----------|----------|----------|
| Row 1    | Data     | Data     |
| Row 2    | Data     | Data     |

Use colons in the separator row to control alignment: :--- for left, :---: for center, and ---: for right alignment.

Blockquotes and Horizontal Rules

> This is a blockquote.
> It can span multiple lines.

---

Blockquotes are useful for citing sources or highlighting important notes. Horizontal rules (---, ***, or ___) create visual separators between sections.

Task Lists (GitHub Flavored Markdown)

- [x] Completed task
- [ ] Incomplete task
- [ ] Another todo item

Task lists are a GitHub-specific extension widely adopted by other platforms. They render as interactive checkboxes in issues and pull requests.

Where Markdown Is Used

Try Markdown Right Now

Paste any Markdown into our free previewer and see it rendered instantly. No signup required.

Open Markdown Previewer