Skip to content
helpyself

Markdown to HTML

Runs in your browser — your text is not sent anywhere to use this tool.

Save this tool

Keep Markdown to HTML handy

Bookmark it

Turn Markdown into clean HTML, with a preview you can trust.

  1. Paste or type your Markdown
  2. Convert, then switch between the HTML and the preview
  3. Copy the HTML, or download it as a file

Raw HTML stays escaped unless you allow it. The preview never runs scripts either way.

About this tool

Markdown is what documentation, README files and notes are written in, and HTML is what a browser needs, so this is the step between writing something and publishing it. The conversion covers the parts people use: headings, lists including nested and task lists, fenced code blocks with a language class, blockquotes, tables with column alignment, images, links, bold, italic and strikethrough. Two decisions here are about safety rather than formatting. Raw HTML embedded in the Markdown is escaped rather than passed through, because Markdown files are often ones you were given rather than ones you wrote, and a strict converter would happily emit whatever script tag was inside. You can switch that off deliberately. Link addresses are checked against a list of permitted schemes instead of a list of banned ones, so an address using anything unfamiliar is shown as plain text rather than becoming a live link. The preview is rendered in a sandboxed frame with scripts disabled, so looking at the result is safe even when the input was not. Everything runs in your browser.

Frequently asked questions

Why is my HTML showing as text instead of rendering?

Because raw HTML is escaped unless you ask for it. Markdown allows HTML inside it, which also means a document from someone else can carry a script tag. Switch on the raw HTML option if the file is yours and you want it passed through.

Is the preview safe if I turn raw HTML on?

Yes. The preview is rendered inside a sandboxed frame with scripts disabled, so nothing in the document can run or reach the page around it. That is true whether or not you allow raw HTML through into the output.

Why did one of my links come out as plain text?

Its address used a scheme that is not on the permitted list. Only http, https, mailto, tel, ftp and relative links become clickable, which blocks the old trick of hiding script in a link address. The text is left visible rather than deleted so you can see what happened.

Does it support tables and task lists?

Yes, both in the GitHub style. A table needs the row of dashes under the header, and colons in that row set the column alignment. Task lists are written as a list item followed by empty or crossed square brackets and render as disabled checkboxes.

Can I get ids on the headings for a table of contents?

Yes, switch on heading ids. Each heading gets an id derived from its text, and repeated headings are numbered so no two collide. That is what lets a contents list link to each section.

Help improve this tool

Found a bug, want a change, or need a tool we don't have?

/markdown-to-html

↑↓ to move · Enter to open · Esc to close