Guide · Markdown syntax reference

Markdown formatting guide: headings, bold, lists, tables & more

Markdown looks like plain text but carries structure — headings, emphasis, links, lists and tables — in a handful of easy characters. This guide shows every core syntax with the source on the left and the rendered result on the right, plus a cheat sheet and a complete worked example.

🔒 Examples render in your browser — nothing uploaded ⏱ About 10 minutes 🧩 Beginner friendly, no install

The idea in one line: you write # Notes from the review and **bold** as plain characters, and software that understands Markdown turns them into a real heading and real bold text.

Try as you read: paste any example on this page into the MarkdownPaste converter to see it rendered live, exactly as described here.

What is Markdown?

Markdown is a lightweight markup language created by John Gruber in 2004. Instead of clicking formatting buttons, you add short characters to plain text — a # for a heading, asterisks for emphasis, dashes for lists — and a parser converts those characters into formatted HTML.

That combination is why Markdown is everywhere: AI assistants reply in it, README files and documentation are written in it, and note-taking apps use it as a storage format. Because it's plain text, it travels through any tool, diffs cleanly, and never locks you in. The trade-off is that the characters are only instructions — an app that hasn't been told to interpret them just shows the asterisks, which is exactly what happens when you paste Markdown into Word or Gmail.

Headings

Prefix a line with one to six # characters. One # is the page title (H1), two make a section (H2), and so on down to ######. Put a space after the hash. Keep a single H1 per document and use the rest as an outline.

Markdown source
# Project retro
## What went well
### Quotes
Rendered result

Project retro

What went well

Quotes

Headings are the skeleton of a document: they build tables of contents, anchor links and navigation panes in the apps that receive your text.

Paragraphs and line breaks

Plain lines of text are paragraphs. Separate paragraphs with a blank line. A single line break inside a paragraph is treated like a space — the lines join — so to force a break, end the line with two spaces or a backslash \.

Markdown source
First paragraph.
Still the same paragraph
on a new line.

Second paragraph after
a blank line.
Rendered result

First paragraph. Still the same paragraph on a new line.

Second paragraph after a blank line.

Bold and italic

Wrap text in double asterisks for bold, single asterisks for italic, or both for bold italic. Underscores work too (__bold__, _italic_), but asterisks are the safer habit because underscores inside words can be misread. MarkdownPaste also supports strikethrough with ~~double tildes~~.

Markdown source
**Ship it Friday.**
*Subject to review.*
***Critical:*** rollback ready.
~~Old target: June~~
Rendered result

Ship it Friday.
Subject to review.
Critical: rollback ready.
Old target: June

Links

Square brackets hold the clickable text, parentheses hold the address: [text](url). Write the sentence so the link text is descriptive — "see the project handbook" tells the reader more than "click here". In MarkdownPaste's preview, external links are rendered with safe rel attributes and open in a new tab.

Markdown source
Read the [project handbook](https://example.com/handbook)
for the full process.
Rendered result

Read the project handbook for the full process.

Images

Images use the same shape as links with an exclamation mark in front: ![alt text](image-url). The alt text matters — it's what screen readers announce and what shows if the image can't load, so describe the image rather than naming it.

Markdown source
![Bar chart of signups by month,
rising from 120 in January to
540 in June](charts/signups.png)
Rendered result
Jan Feb Mar Apr May

Illustration standing in for the linked chart. In a real document the referenced image file renders here.

Images and the converter MarkdownPaste's converter is built around text structure — headings, lists, code and tables. Image syntax is standard Markdown, but whether an image comes through depends on the destination: email clients and word processors often block remote images. Check the preview to see how your document behaves before you copy it anywhere.

Bullet lists

Start lines with -, * or + followed by a space. All three are equivalent; pick one per document. The list renders as soon as consecutive lines share the marker.

Markdown source
- Draft the announcement
- Review with design
- Schedule the send
Rendered result
  • Draft the announcement
  • Review with design
  • Schedule the send

Numbered lists

Use 1., 2., 3. … with a space after the dot. The numbers must be in order, and nested numbered lists are allowed — start the inner list indented under the item it belongs to.

Markdown source
1. Freeze the scope
2. Run the regression tests
3. Tag the release
Rendered result
  1. Freeze the scope
  2. Run the regression tests
  3. Tag the release

Nested lists

Indent a sub-list by at least two spaces — four reads more clearly in source — under the item it belongs to. Mix bullets and numbers freely; each level keeps its own marker style.

Markdown source
1. Prepare the launch
   - Write the changelog
   - Update the screenshots
2. Announce it
   - Post on the blog
   - Email the beta list
Rendered result
  1. Prepare the launch
    • Write the changelog
    • Update the screenshots
  2. Announce it
    • Post on the blog
    • Email the beta list

Blockquotes

Prefix each line of a quote with >. Use blockquotes for quoted material, callouts and asides — anything you're marking as borrowed or secondary to your own text. Nested quotes take additional > characters.

Markdown source
> "Simplicity is the soul of efficiency."
> — Austin Freeman
Rendered result

"Simplicity is the soul of efficiency."
— Austin Freeman

Inline code

Wrap short code fragments — file names, commands, variable names — in single backticks. The fragment keeps its literal characters: an asterisk inside backticks stays an asterisk instead of turning into italic.

Markdown source
Commit with `git push origin main`
after editing `config.yml`.
Rendered result

Commit with git push origin main after editing config.yml.

Code blocks

For multi-line snippets, fence the block with three backticks on their own lines. Add a language name after the opening fence — js, python, sql — so tools that do highlight can. Inside a fence, nothing is interpreted: hashes and asterisks are literal. MarkdownPaste renders fenced blocks as distinct monospaced blocks in the preview; pasted destinations show them as monospaced text without editor-style highlighting.

Markdown source
```js
const launches = await api.list({
  status: "upcoming"
});
```
Rendered result
const launches = await api.list({
  status: "upcoming"
});

Horizontal rules

A line containing only three or more -, * or _ characters renders as a divider. Rules separate major sections in long documents. One subtlety: a --- directly beneath a text line is read as a heading underline, not a rule — leave a blank line above the rule to be explicit.

Markdown source
End of the summary.

---

Appendix starts here.
Rendered result

End of the summary.


Appendix starts here.

Tables

Tables are pipes and dashes: one row of cells with | between them, a separator row of |---|, then the data rows. The separator row is required — without it the pipes render as plain text. Colons in the separator set column alignment: |:---| left, |:---:| center, |---:| right.

Markdown source
| Milestone | Owner  | Date   |
| --------- | ------ | ------ |
| Beta      | Priya  | Oct 6  |
| GA        | Marcus | Nov 14 |
Rendered result
MilestoneOwnerDate
BetaPriyaOct 6
GAMarcusNov 14

Keep tables narrow for readability, and remember that MarkdownPaste can also turn a table into tab-separated values for Excel with its Copy for Excel button — one table, two destinations.

Escaping special characters

Sometimes you want a literal asterisk or hash. A backslash \ before a character cancels its formatting meaning: \*not italic\* renders as *not italic*. This works for \ ` * _ { } [ ] ( ) # + - . ! | and a few others.

Markdown source
The \*2026\* roadmap uses \#tags
for themes. Cost: \$5/user.
Rendered result

The *2026* roadmap uses #tags for themes. Cost: $5/user.

Quick reference: Markdown cheat sheet

The whole guide on one screen. Each row is live syntax — paste any cell into the converter to confirm the rendering.

MarkdownResultPurpose
# HeadingHeadingPage title (H1)
## SectionSectionSubheading (H2–H6)
**bold**boldStrong emphasis
*italic*italicLight emphasis
~~strike~~strikeStrikethrough
[text](url)textHyperlink
![alt](url)🖼 imageImage with alt text
- item• itemBullet list
1. item1. itemNumbered list
> quote▎quoteBlockquote
`code`codeInline code
``` fenced ```code blockMulti-line snippet
---—Horizontal rule
| a | b |tableRows and columns
\**Escape a character

A complete example

Everything from this guide in one realistic document — a set of release notes. The left panel is the Markdown someone might send you in a chat or write in a notes app; the right panel is what a parser makes of it.

Markdown source
# Release notes: Notes app 2.4

**Ship date:** March 3 · *Status:* ready for review

The full changelog lives in the
[project handbook](https://example.com/handbook).

## Highlights

1. Offline sync for mobile
2. Shared folders with permissions

## Fixes

- Search is 3× faster on long notes
- `Ctrl`+`K` opens the command bar

> Upgrade note: export your data
> before updating from 2.3.

## Rollout

| Channel | Share  | Date   |
| ------- | ------ | ------ |
| Beta    | 10%    | Feb 24 |
| Stable  | 100%   | Mar 3  |

## API example

```js
const notes = await client.notes.list({
  limit: 10
});
```
Rendered result

Release notes: Notes app 2.4

Ship date: March 3 · Status: ready for review

The full changelog lives in the project handbook.

Highlights

  1. Offline sync for mobile
  2. Shared folders with permissions

Fixes

  • Search is 3× faster on long notes
  • Ctrl+K opens the command bar

Upgrade note: export your data before updating from 2.3.

Rollout

ChannelShareDate
Beta10%Feb 24
Stable100%Mar 3

API example

const notes = await client.notes.list({
  limit: 10
});

Eleven syntax elements, one plain-text message — and every one of them survives conversion intact.

From Markdown to formatted text

Knowing the syntax solves half the problem. The other half is what happens when your carefully written Markdown reaches an app that doesn't read it — and that's the gap MarkdownPaste exists to close. Paste your Markdown into the converter, check the live preview against what you intended, then use Copy Rich Text to put real HTML on your clipboard for Word, Gmail, Google Docs or Notion — or Copy for Excel when a table is headed for a spreadsheet. The whole pipeline runs in your browser tab: nothing is parsed on a server, nothing is uploaded, and the parser and sanitizer are bundled into the page so it keeps working offline.

If you'd like the parsing step explained end to end, the how it works section walks through the Markdown-to-clipboard pipeline, and the feature list documents exactly which syntax the converter covers.

Try it with your own Markdown

Paste any example from this guide — or your own notes — and see the rendered result instantly. No sign-up, nothing saved.

Open the converter →

Runs entirely in your browser · works offline once loaded

Questions about Markdown formatting

Does MarkdownPaste support all of the syntax in this guide?

The converter covers the everyday Markdown listed in its feature section: headings H1–H6, paragraphs, bold, italic, strikethrough, ordered and unordered lists including nesting, links, blockquotes, inline code, fenced code blocks, horizontal rules, tables and backslash-escaped characters. Images are standard Markdown, but how they come through depends on the destination app — check the preview to see how your document behaves.

Will my Markdown look identical in every app?

No. Markdown is a convention, and each parser applies its own rules and styling. Structure — headings, lists, tables, links — survives everywhere, but exact fonts, sizes and spacing differ between editors, and between destinations like Word, Gmail or Google Docs after pasting. If exact styling matters, check the rendered output in the destination itself.

What is the difference between inline code and a code block?

Inline code uses single backticks inside a sentence and formats a short fragment such as a file name or command. A fenced code block uses three backticks on their own lines and preserves the line breaks and indentation of a longer snippet. Nothing inside a code fence is interpreted as formatting.

Why didn't my line break show up?

In Markdown, a single line break in the source is treated like a space and lines are joined into one paragraph. To force a break, end the line with two spaces or a backslash — or separate the paragraphs with a blank line, which is usually the better-looking choice.

Is my text uploaded when I use the MarkdownPaste converter?

No. MarkdownPaste has no backend. Parsing, sanitizing, preview rendering, clipboard writes and downloads all run in your browser tab, and the Markdown parser and HTML sanitizer are bundled in the page rather than fetched from elsewhere. Details are in the privacy section.

Can I write Markdown directly in Microsoft Word?

You can type it, but Word won't interpret it — asterisks and hash marks land in the document as literal characters. The usual route is to convert the Markdown to rich text first, which is what the Markdown to Word guide covers step by step.