Markdown to HTML
Type or paste Markdown on the left to see a live preview, then switch to HTML code to copy or download the result. Headings, emphasis, links, images, lists, task lists, tables, quotes and fenced code are supported. Raw HTML in the input is shown as text, so the output is safe to paste. Nothing is uploaded.
Updated
How to use Markdown to HTML
- 1Type or paste Markdown, or load a .md file.
- 2Check the rendered preview on the right.
- 3Switch to HTML code to see the markup, and tick the full-page option if you need a standalone file.
- 4Copy the HTML or download it.
How it works
The converter covers the everyday syntax of CommonMark plus the GitHub-flavoured additions most people expect: # headings and underlined headings, paragraphs and line breaks, **bold**, *italic*, ~~strikethrough~~, `code`, fenced and indented code blocks, block quotes, nested bullet and numbered lists, - [ ] task lists, | tables | with alignment, horizontal rules, links, images and bare web addresses.
Every piece of text is HTML-escaped, and HTML typed into the Markdown is shown as text rather than passed through. Link and image addresses are kept only for http, https, mailto and tel, or relative paths; anything else, such as a javascript: link, becomes #. That is why the preview is safe to render, and why the HTML is safe to paste into a page.
Fenced code keeps its language as a class such as language-js, which syntax highlighters such as Prism and highlight.js pick up. Table alignment is written as an inline text-align style.
Markdown has many dialects. Rare constructs — reference-style links, footnotes, definition lists, HTML blocks — are not converted. Check the preview if your source uses them.
Everything runs in this page. Nothing you paste is transmitted, logged or stored, which is what makes it safe to drop a production payload in here while you are debugging.
Tips and common mistakes
- Leave a blank line between paragraphs, lists and headings — Markdown needs it to start a new block.
- End a line with two spaces or a backslash to force a line break inside a paragraph.
- Indent nested list items by two or more spaces under the parent item's text.
- Use fenced code blocks with a language name, such as ```js, for code samples.