How to Use This Tool
Markdown is the plain-text format behind READMEs, static site posts, chat messages and most documentation written in the last decade. This page converts it to HTML as you type, shows the rendered result beside the source, and lets you copy either.
How the conversion works
Markdown is parsed in two passes. The first looks at each line and decides what kind of block it starts: a heading if it begins with hashes, a list item if it begins with a dash or a number, a quote for a chevron, a fenced code block for three backticks, a table for a row of pipes. The second pass runs inside each block's text and handles the inline syntax — bold, italic, links, inline code.
The order explains a behaviour that confuses people: text inside backticks is protected before the inline
pass runs, which is why `**not bold**` stays literal. It also explains why a heading needs a
blank line before it in strict parsers — without one, the line is still part of the preceding
paragraph block.
Raw HTML is escaped by default
Markdown permits raw HTML, and most converters pass it straight through. That is fine for your own
documents and dangerous for anything else — a <script> tag in Markdown pasted from
elsewhere becomes a script tag in your page.
This tool escapes HTML unless you explicitly tick the box, and warns you when the input contains tags that were escaped. If you are building anything that renders Markdown submitted by other people, sanitise the output; converting Markdown is not itself a security boundary.
What is supported
Headings, paragraphs, bold, italic, strikethrough, inline code, fenced code blocks, links, images, unordered and ordered lists, nested lists, task lists, blockquotes, horizontal rules and pipe tables.
What is not: footnotes, definition lists, reference-style links, HTML entities inside code, and the more obscure corners of CommonMark such as lazy continuation lines. The parser is written into this page rather than loaded from a CDN, which keeps it fast and dependency-free at the cost of that coverage. If something you write does not render, that list is the first place to look.
Everything stays local
The conversion runs in your browser. Nothing is uploaded, which matters if what you are pasting is an unreleased changelog, an internal runbook or a draft under embargo.
