WebToolsPlanet
text Tools

Markdown Preview

Write Markdown and see a live HTML preview — supports GitHub Flavored Markdown with tables, task lists, and code blocks.

Last updated: March 25, 2026

Client-Side Processing
Input Data Stays on Device
Instant Local Execution

Find this tool useful? Support the project to keep it free!

Buy me a coffee

What is Markdown Preview?

Markdown is a lightweight text formatting convention where simple characters create rich document structure: ## for headings, **text** for bold, [link](url) for hyperlinks, and - for bullet lists. Created by John Gruber in 2004, it has become the universal standard for developer documentation, README files, pull request descriptions, GitHub wikis, technical blog posts, and content management systems. GitHub Flavored Markdown (GFM) extends the standard with support for tables (|col1|col2|), task list checkboxes (- [ ]), strikethrough (~~text~~), and fenced code blocks with syntax highlighting.

A live Markdown preview editor lets you see the rendered output instantly as you type, without needing to push to GitHub or deploy a website to verify formatting. This is invaluable when writing README documentation, composing a complex table, or verifying that a long technical document renders correctly. The output HTML can be copied for direct embedding or the Markdown source can be downloaded as a .md file

How to Use Markdown Preview

1

Type or paste Markdown syntax in the left "Editor" panel

2

The rendered HTML preview updates in real time in the right "Preview" panel as you type

3

Use the toolbar for quick-insert: headings, bold, italic, link, code, table, task list

4

Toggle "GFM Mode" to enable GitHub Flavored Markdown extensions (tables, strikethrough, task lists)

5

Click "Copy HTML" to copy the rendered HTML, "Copy Markdown" for the source, or "Download .md" for a file

Common Use Cases

  • Writing and previewing a GitHub README.md before pushing to a repository
  • Composing technical documentation for a project wiki and verifying table rendering
  • Drafting a pull request description with task lists and code blocks
  • Writing blog post content for a Markdown-based CMS (Contentful, Sanity, Strapi) and previewing it
  • Learning Markdown syntax by typing and instantly seeing what each convention produces
  • Composing a technical email with code snippets in Markdown before converting to HTML
  • Verifying that a .md file copied from a documentation system renders the way you expect
  • Drafting changelogs and release notes for a software project following Keep a Changelog convention

Example Input and Output

A sample README section demonstrating common GFM elements and their rendered output:

Markdown source
## Installation

Install via npm:

```bash
npm install my-package
```

### Features

| Feature         | Status |
|-----------------|--------|
| GitHub push     | ✅ Done |
| CLI support     | 🔄 In Progress |
| Browser plugin  | ⬜ Planned |

### Checklist

- [x] Initialize project
- [x] Write core logic
- [ ] Write tests
- [ ] Publish to npm
Rendered preview
<h2>Installation</h2>
<p>Install via npm:</p>
<pre><code class="language-bash">npm install my-package</code></pre>
<h3>Features</h3>
<table>
  <tr><th>Feature</th><th>Status</th></tr>
  <tr><td>GitHub push</td><td>✅ Done</td></tr>
  <tr><td>CLI support</td><td>🔄 In Progress</td></tr>
  <tr><td>Browser plugin</td><td>⬜ Planned</td></tr>
</table>
<h3>Checklist</h3>
<ul>
  <li class="task-list-item"><input checked> Initialize project</li>
  <li class="task-list-item"><input checked> Write core logic</li>
  <li class="task-list-item"><input> Write tests</li>
  <li class="task-list-item"><input> Publish to npm</li>
</ul>

Client-Side Processing

Markdown parsing and HTML rendering happen entirely in your browser using a JavaScript Markdown library. Your document content is never uploaded to our servers.

Markdown in VS Code

VS Code has an excellent built-in Markdown preview (Ctrl+Shift+V or the split-preview icon). For writing documentation directly in a code editor, it's the best workflow. Use this online tool when you're away from your editor, sharing a quick preview link, or when working on a machine without VS Code installed.

Markdown vs Rich Text

The main advantage of Markdown over WYSIWYG rich text editors (TinyMCE, Quill) is version-control friendliness — plain text .md files produce human-readable diffs in git. Prose written in Markdown is easier to review in pull requests than binary Word documents or opaque rich-text JSON blobs from Quill/Slate editors.

Frequently Asked Questions

What is GitHub Flavored Markdown (GFM)?
GFM is GitHub's extension of CommonMark Markdown. Additional features: pipe syntax tables (|---|---| dividers required), ~~strikethrough~~, - [ ] task list checkboxes, @username mentions and #issue-number links (on GitHub), fenced code blocks with a language identifier for syntax highlighting (```js), and URL autolinks. GFM is also supported by GitLab, Bitbucket, Notion, Linear, and many Markdown-based CMSs.
What is the difference between Markdown and HTML?
Markdown is shorthand notation that compiles to HTML. "## Heading" becomes <h2>Heading</h2>. "**bold**" becomes <strong>bold</strong>. Markdown is designed to be readable as plain text — you can read a Markdown file without rendering it. HTML is a full markup language with a much larger tag set. You can embed raw HTML directly inside Markdown documents and it will be rendered as-is.
How do I create a table in Markdown?
GFM tables use pipe characters: | Header 1 | Header 2 | on the first row, then a separator row | --- | --- |, then data rows. Column alignment can be set in the separator row: :--- for left-align, ---: for right-align, :---: for center. Example: | Name | Score | / | --- | ---: | / | Alice | 95 | / | Bob | 87 |. Tables outside GFM mode use a plugin extension.
Can I use custom HTML inside Markdown?
Standard Markdown and GFM allow raw HTML to be embedded inline, and it passes through to the rendered output. This means you can add elements Markdown cannot express: <details><summary>Click to expand</summary>hidden content</details> (collapsible sections), <kbd>Ctrl</kbd> (keyboard key styling), or <mark> (text highlighting). Note that some platforms (GitHub, Notion) sanitize certain HTML tags for security.
How do I escape a Markdown special character?
Prefix the character with a backslash to prevent Markdown interpretation. \* outputs a literal asterisk. \` outputs a backtick. \[ outputs a literal bracket. \_ outputs an underscore. This is important when writing about programming code or mathematics that contains asterisks, underscores, or pipe characters that Markdown would otherwise interpret as formatting.
What Markdown flavor does this editor use?
The editor uses the CommonMark specification (the standardized Markdown spec) as the base, with the GitHub Flavored Markdown (GFM) extension set applied when GFM Mode is enabled. CommonMark precisely defines all edge-cases that original Markdown was ambiguous about. This ensures that the preview renders identically to how your content will appear on GitHub or other GFM-compliant platforms.

How This Tool Works

The Markdown input string is fed to a CommonMark-compliant parser (marked.js or similar) that tokenizes the input into an AST (Abstract Syntax Tree). The AST is traversed by a renderer that converts each node type (heading, paragraph, code fence, list item) into the corresponding HTML element. If GFM mode is on, additional tokenizer rules for tables and task list items are applied. The resulting HTML string is set as the innerHTML of the preview panel, which the browser renders natively.

Technical Stack

CommonMark-compliant parser (marked.js)GFM extension rulesDOMPurify HTML sanitizationBrowser innerHTML renderingClient-side only