Skip to content
Utilboxes

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.

Runs entirely in your browser

Updated

How to use Markdown to HTML

  1. 1Type or paste Markdown, or load a .md file.
  2. 2Check the rendered preview on the right.
  3. 3Switch to HTML code to see the markup, and tick the full-page option if you need a standalone file.
  4. 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.

Frequently asked questions

Why is my HTML tag shown as text?
Raw HTML in the Markdown is escaped on purpose, so the output cannot carry scripts or broken markup. Write the content in Markdown instead, or add the HTML after converting.
Does it support GitHub tables and task lists?
Yes. Pipe tables with a --- separator row (and : for alignment) become HTML tables, and - [ ] and - [x] become checkboxes.
Can I get a complete HTML file?
Tick “Wrap in a complete HTML page” to add the doctype, head and a title taken from the first heading, then download.
Will code blocks be highlighted?
Code blocks are output with a language-… class, which a syntax highlighter on your page can colour. The converter itself adds no colours.
Is my document uploaded?
No. The conversion runs in your browser, so drafts and internal notes stay on your device.
Why does an underscore in a word not make italics?
Underscores inside words, as in snake_case_names, are left alone, following GitHub's rules. Use *asterisks* for emphasis inside words.