Markdown is a lightweight markup language created by John Gruber in 2004. It lets you add formatting to plain text using simple, intuitive syntax — no HTML required. Today Markdown powers GitHub README files, documentation sites, blogging platforms, note-taking apps, and countless developer tools. If you write anything on the web, learning Markdown will save you hours.
This guide covers every standard Markdown element plus popular GitHub Flavored Markdown (GFM) extensions. Each section shows the raw Markdown source alongside the rendered result so you can see exactly what to type.
1. Headings
Create headings by prefixing a line with # symbols. The number of hashes determines the heading level (1–6).
Heading 1
Heading 2
Heading 3
2. Bold, Italic & Strikethrough
Wrap text with asterisks or underscores for emphasis. Double asterisks for bold, single for italic, triple for both. Strikethrough uses double tildes.
italic text
bold and italic
3. Lists
Markdown supports both ordered (numbered) and unordered (bulleted) lists. You can nest lists by indenting with two or four spaces.
Unordered Lists
- First item
- Second item
- Nested item
- Another nested
- Third item
Ordered Lists
- Step one
- Step two
- Step three
4. Links
Create hyperlinks with square brackets for the text and parentheses for the URL. You can also add an optional title that appears on hover.
5. Images
Images use the same syntax as links, but with an exclamation mark ! in front. The text inside brackets becomes the alt text for accessibility.
6. Code
Inline code uses single backticks. Code blocks use triple backticks (or indent by four spaces). Add a language identifier after the opening backticks for syntax highlighting — essential when documenting APIs or sharing snippets through tools like our JSON Formatter.
Inline Code
console.log() to debug.
Fenced Code Blocks
function greet(name) {
return `Hello, ${name}!`;
}
7. Blockquotes
Prefix lines with > to create blockquotes. You can nest them and combine with other Markdown elements.
"Any fool can write code that a computer can understand."
— Martin Fowler
8. Tables
Create tables using pipes | and hyphens -. Colons control column alignment. Tables are a GFM extension, supported on GitHub, GitLab, and most modern Markdown renderers.
| Tool | Purpose |
|---|---|
| JSON | Data formatting |
| Base64 | Encoding/decoding |
| UUID | ID generation |
| Regex | Pattern matching |
9. Horizontal Rules
Create a horizontal line with three or more hyphens, asterisks, or underscores on their own line.
Below the line
10. Task Lists (GFM)
Task lists — also called checklists or to-do lists — are a GitHub Flavored Markdown extension. Use - [ ] for unchecked and - [x] for checked items.
- ☑ Write the introduction
- ☑ Add code examples
- ☐ Proofread the article
- ☐ Publish to blog
11. Footnotes
Footnotes let you add references without cluttering the text. Define them anywhere in the document — they render at the bottom automatically.
1 With contributions from Aaron Swartz.
12. More GFM Extensions
GitHub Flavored Markdown adds several useful features beyond standard Markdown:
Autolinked URLs
GFM automatically turns URLs into clickable links — just type https://example.com and it becomes a hyperlink. No brackets needed.
Emoji Shortcodes
Syntax-Highlighted Code Blocks
GFM supports language-specific syntax highlighting for over 200 programming languages. Add the language name after the opening triple backticks: ```python, ```json, ```bash, and so on.
Best Practices for Writing Markdown
- Use blank lines between elements (paragraphs, headings, lists) for reliable parsing across different renderers.
- Be consistent with list markers — pick - or * and stick with it throughout a document.
- Add alt text to every image for accessibility and SEO.
- Validate your JSON before embedding it in code blocks — use our JSON Formatter to catch errors.
- Test regex patterns referenced in documentation with a Regex Tester before publishing.
- Generate unique IDs for examples using a UUID Generator instead of placeholder values.
Quick Reference Cheat Sheet
| Element | Syntax |
|---|---|
| Heading | # H1 … ###### H6 |
| Bold | **text** |
| Italic | *text* |
| Link | [text](url) |
| Image |  |
| Code (inline) | `code` |
| Code block | ```lang … ``` |
| Blockquote | > text |
| Unordered list | - item |
| Ordered list | 1. item |
| Horizontal rule | --- |
| Table | | col | col | |
| Task list | - [x] done |
| Footnote | [^1] |
| Strikethrough | ~~text~~ |
Start Writing Markdown Today
Markdown's power lies in its simplicity. You don't need a rich text editor — any plain text file will do. Start with headings, bold, and lists. Once those feel natural, layer in code blocks, tables, and task lists. Within a few days, Markdown will become second nature.
Practice by writing a README for your next project, drafting documentation, or formatting notes. Combine Markdown skills with our free developer tools to be even more productive:
🔧 JSON Formatter 🔐 Base64 Encoder 🆔 UUID Generator 🔍 Regex Tester