Markdown Preview & Editor
Write Markdown and see it rendered instantly. Supports headings, lists, code blocks, tables, links and images. Works offline.
Markdown syntax cheat sheet
# Heading 1
## Heading 2
**bold** *italic* ~~strikethrough~~ `inline code`
- unordered list
- second item
- nested item
1. ordered list
2. second item
> blockquote
[link text](https://example.com)

| Column A | Column B |
| --- | --- |
| value 1 | value 2 |
- [ ] unchecked task
- [x] checked task
---
Why Markdown is worth learning
Markdown is plain text with a light syntax layer. That format choice gives you several things at once:
- Portable — readable in any text editor, forever, with no proprietary format
- Versionable — a one-line change in a diff instead of a whole-document reformat
- Convertible — renders to HTML, PDF, Word, slides or anything else
- Focused — you write content, not layout
It is the format behind most developer documentation, most README files, and a large share of content on the modern web.
Writing conventions
- Put one sentence per line. GitHub renders soft line breaks as spaces, so this makes diffs far more readable.
- Use ATX headings (
##) rather than setext (===). - Always put a blank line before and after a list or code block — otherwise the Markdown parser may not recognise it.
- Fence code blocks with three backticks and name the language for syntax highlighting.
Related
Need to check length before publishing? The word counter shows words, characters and reading time.
Frequently asked questions
Is my text uploaded anywhere?
No. The preview is rendered locally in your browser.
Which Markdown features are supported?
Headings, bold, italic, strikethrough, inline code, fenced code blocks, lists, blockquotes, tables, links and images.
How should I write Markdown so diffs stay readable?
Put one sentence per line. GitHub renders soft line breaks as spaces, so this makes every change show up as a single-line diff.
Should I use ATX or setext headings?
ATX, meaning ## Heading. Setext headings rely on underlines, which are easy to break accidentally.
Why is my list not rendering?
Markdown needs a blank line before and after a list. Without it the parser treats the dashes as part of the preceding paragraph.