$cat markdown-guide.md

The Markdown guide

Markdown is a simple way to format plain text that turns into clean HTML. Created by John Gruber in 2004, it powers READMEs on GitHub, posts on Reddit, docs, chat apps and notes. This guide covers every piece of Markdown syntax with copy-paste examples, shown rendered side by side.

shopping-list.md
# Shopping list
 
- [x] Coffee
- [ ] Oat milk
 
**Bold**, _italic_, and a
[link](https://mdflow.cz).
 
> Plain text, clean output.
$markdown --tldr

Markdown cheat sheet

The whole language at a glance. Every row links to a worked example below.

Markdown syntax quick reference
// syntax// result
# TextHeading (one # per level, up to six)
**Text**Bold
_Text_Italic
~~Text~~Strikethrough
[Text](url)Link
![Alt](url)Image
- TextBulleted list item
1. TextNumbered list item
- [ ] TextTask list checkbox
> TextBlockquote
`Text`Inline code
```Fenced code block
| a | b |Table row
---Horizontal rule
Text[^1]Footnote reference
$man markdown

Markdown syntax, with live examples

Each example shows the Markdown source next to exactly how MDflow renders it.

#Headings

Start a line with one to six # characters. One # is the largest heading (use it once, for the page title); six is the smallest.

//source
# Heading level 1
## Heading level 2
### Heading level 3
#### Heading level 4
//rendered

Heading level 1

Heading level 2

Heading level 3

Heading level 4

#Paragraphs & line breaks

Write in plain sentences. Separate paragraphs with one blank line. To force a line break inside a paragraph, end the line with two spaces or a backslash.

//source
Markdown turns plain text into a clean, formatted document.

Separate paragraphs with a single blank line between them.
//rendered

Markdown turns plain text into a clean, formatted document.

Separate paragraphs with a single blank line between them.

#Bold, italic & strikethrough

Wrap text in symbols to emphasize it: ** or __ for bold, * or _ for italic, and ~~ for strikethrough. Combine them for bold italic.

//source
**Bold text** and __also bold__.

_Italic text_ and *also italic*.

~~Strikethrough~~ for crossed-out text.

***Bold and italic at once.***
//rendered

Bold text and also bold.

Italic text and also italic.

Strikethrough for crossed-out text.

Bold and italic at once.

#Blockquotes

Start a line with > to quote text. Add another > to nest a quote inside a quote.

//source
> Markdown is intended to be easy to read and easy to write.
>
>> Add another > to nest a quote inside a quote.
//rendered

Markdown is intended to be easy to read and easy to write.

Add another > to nest a quote inside a quote.

#Unordered lists

Start each item with -, *, or +. Indent by two spaces to nest items under one another.

//source
- First item
- Second item
  - Nested item (indent two spaces)
  - Another nested item
- Third item
//rendered
  • First item
  • Second item
    • Nested item (indent two spaces)
    • Another nested item
  • Third item

#Ordered lists

Start each item with a number and a period. The exact numbers do not matter — Markdown renumbers the list automatically.

//source
1. First step
2. Second step
3. Third step
   1. A nested step
   2. Another nested step
//rendered
  1. First step
  2. Second step
  3. Third step
    1. A nested step
    2. Another nested step

#Task lists (checkboxes)

Make a checklist with - [ ] for an open item and - [x] for a completed one. Great for to-dos and acceptance criteria.

//source
- [x] Write the document
- [x] Add a couple of images
- [ ] Share it with the team
//rendered
  • Write the document
  • Add a couple of images
  • Share it with the team

#Images

An image is a link with a leading !. The text in the brackets is the alt text — always describe the image, for screen readers and for search engines.

//source
![Saving a web page to MDflow with the Web Clipper](/images/mdflow-web-clipper-send.png)
//rendered

Saving a web page to MDflow with the Web Clipper

#Inline code & code blocks

Wrap inline code in single backticks. For a block, fence it with triple backticks and name the language after the opening fence.

//source
Press `Cmd + S` to save your document.

```js
function greet(name) {
  return `Hello, ${name}!`;
}
```
//rendered

Press Cmd + S to save your document.

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

#Tables

Build a table with pipes | between columns and a row of dashes --- under the header to separate it from the body.

//source
| Feature   | Supported |
| --------- | --------- |
| Headings  | Yes       |
| Tables    | Yes       |
| Footnotes | Yes       |
//rendered
FeatureSupported
HeadingsYes
TablesYes
FootnotesYes

#Table alignment

Add a colon to the divider row to control column alignment: :--- for left, :--: for center, and ---: for right.

//source
| Left   | Center | Right  |
| :----- | :----: | -----: |
| apple  | banana | cherry |
| 1      | 2      | 3      |
//rendered
LeftCenterRight
applebananacherry
123

#Horizontal rules

Put three or more dashes, asterisks, or underscores on their own line to draw a divider between sections.

//source
Content above the divider.

---

Content below the divider.
//rendered

Content above the divider.


Content below the divider.

#Footnotes

Reference a footnote with [^id], then define it anywhere in the document. The note is collected at the bottom of the rendered page.

//source
Markdown supports footnotes[^1] for citations and asides.

[^1]: The note appears at the bottom of the rendered document.
//rendered

Markdown supports footnotes1 for citations and asides.

Footnotes

  1. The note appears at the bottom of the rendered document.

$markdown --help

Frequently asked questions

What is Markdown?
Markdown is a lightweight markup language created by John Gruber in 2004. It lets you format plain text — headings, bold, lists, links, and more — using simple, readable symbols that convert to HTML. Because it is just text, Markdown is portable, future-proof, and easy to version-control.
Is Markdown the same as HTML?
No, but they are related. You write Markdown, and a renderer converts it to HTML for display. Markdown is faster to write and easier to read in its raw form, and you can drop raw HTML into a Markdown document whenever you need something Markdown does not cover.
What is GitHub Flavored Markdown (GFM)?
GitHub Flavored Markdown is a popular superset of the original Markdown that adds tables, task lists, strikethrough, and automatic links. MDflow renders GitHub Flavored Markdown, so the examples on this page work exactly as shown.
How do I create a table in Markdown?
Separate columns with pipe characters (|) and add a row of dashes (---) under the header. Add colons to that divider row to left-, center-, or right-align each column. See the Tables section above for a working example.
How do I add an image in Markdown?
Use ![alt text](image-url). The text in the square brackets is the alt text that describes the image for screen readers and search engines, so always fill it in.
Does Markdown support checkboxes?
Yes, through task lists. Write - [ ] for an unchecked item and - [x] for a checked one. MDflow renders these as checkboxes in the preview.
Where can I practice writing Markdown?
Try the free MDflow Markdown Playground — type Markdown on one side and watch it render live on the other, with no sign-up required. When you are ready to keep your documents, MDflow gives you a full Markdown workspace.
Is MDflow free?
Yes. MDflow has a free plan with no credit card required. You can write, organize, and share Markdown documents, and upgrade to Pro when you want unlimited files, the HTTP API, and the remote MCP server.
$mdflow init

Put Markdown to work in MDflow.

Write, organize and share Markdown in a real workspace — readable by people and AI agents. The free plan needs no card.