How to convert Markdown to HTML
- Paste your Markdown into the box above, or press Try an example.
- Tick heading ids if you need anchor links to each section.
- The HTML appears immediately below, updating as you type.
- Copy the markup, or download it as an .html file.
- Paste it into a CMS, an email template or a static page.
What is supported
- Headings from h1 to h6, with optional id attributes for anchor links.
- Bold, italic, strikethrough and inline code, correctly nested.
- Links and images, both with optional title attributes.
- Ordered lists, unordered lists and GitHub-style task list checkboxes.
- Fenced code blocks with an optional language class, contents escaped.
- Blockquotes, horizontal rules and pipe tables with a header row.
Why Markdown became the default
Markdown solved a real problem: writing formatted text without leaving the keyboard or looking at a toolbar. An asterisk either side of a word is faster than selecting it and clicking bold, and, crucially. The source is still readable if the formatting is never rendered at all. That property is why it took over documentation, README files, note-taking apps, static site generators and chat.
The catch is that browsers do not understand it. Something has to turn the asterisks into <strong> tags before a page can display them, which is what this converter does.
Where converted HTML gets used
- Pasting documentation into a CMS that accepts HTML but not Markdown.
- Building an email template from notes written in Markdown.
- Publishing a README as a web page.
- Moving content between platforms with different editors.
- Generating the body of a static page without running a site generator.
Raw HTML is escaped, on purpose
Most Markdown processors pass HTML in the source straight through, because the original specification allowed it. That is convenient and it is also how a Markdown field becomes a cross-site scripting hole: a user writes a script tag, the processor passes it through, and the page executes it.
This converter escapes raw HTML instead, so a <script> tag in the source appears as visible text rather than running. The output is safe to paste anywhere without sanitising it first. If you genuinely need HTML mixed into Markdown, add it after conversion where you can see exactly what you are inserting.
Which flavour of Markdown
There is no single Markdown. The original 2004 specification left many cases undefined, CommonMark tightened them up, and GitHub added tables, task lists and strikethrough on top. This converter covers the common ground plus the useful GitHub additions, which is what most documents actually use.
Not supported: footnotes, definition lists, reference-style links, nested lists beyond one level, and inline HTML. If your document relies on those, a full library is the better route, but for the overwhelming majority of README files, notes and articles, everything here is enough.
The HTML it produces
The output is plain semantic markup with no classes, no wrapper divs and no framework assumptions, which makes it straightforward to style with your own CSS. Code blocks carry a language- class when the fence specifies one, matching the convention every syntax highlighter expects.
Tidy the result further with the HTML formatter, or compress it with the HTML minifier. Everything runs in your browser, so unpublished documentation never leaves your machine.
What happens to line breaks
Markdown treats a single line break inside a paragraph as insignificant, joining wrapped lines into flowing text. That surprises people writing addresses, poetry or anything where the lines were meant to stay separate. The output runs them together into one paragraph.
The conventional fixes are to leave a blank line between them, making each its own paragraph, or to use a list if the content is genuinely a list. This converter follows the standard behaviour rather than guessing, because guessing produces documents that render differently here than in every other Markdown processor, which is worse than a predictable rule you can work with.