Text & wordsFree

Markdown Preview

Free Markdown preview tool. Type or paste Markdown and see a live HTML preview. Headings, lists, code, links, and quotes. Runs in your browser.

Last updated 14 October 2026

This renderer covers the common core of Markdown, and these things are not in it

It is a small hand-written renderer rather than a full CommonMark implementation, so it is worth knowing exactly where the edges are before you trust a preview. Everything in this list was measured against the live tool:

What does work: headings one to six, paragraphs, unordered and ordered lists at a single level, blockquotes, horizontal rules, fenced code blocks, inline code, asterisk bold and italic, and http or https links. For most READMEs and notes that is the whole of what gets used.

Emphasis is applied inside inline code, which it should not be

Measured: `*not italic*` renders as code containing italic text. The inline-code pattern runs first and wraps the content in a code tag, and then the italic pattern runs over the result and finds the asterisks still sitting inside it.

So a code span is not a safe place to put Markdown characters here. If you are documenting Markdown itself, or writing about a shell glob, a multiplication expression or a C pointer, the asterisks will be eaten and the surrounding text italicised. The same applies to double asterisks inside a code span.

A fenced code block, the kind opened and closed with three backticks, does not have this problem: its contents are escaped as a unit and no inline rule runs over them. If what you are writing contains Markdown characters, use a fence rather than a span.

Raw HTML in your Markdown is escaped, never rendered

Real Markdown allows HTML to pass through. This renderer escapes it instead. Measured, with the browser console watched: <img src=x onerror=alert(1)> renders as that visible text and nothing executes.

That is a deliberate trade and it cuts both ways. It means pasting a document from an untrusted source into this preview cannot run anything, which is the right default for a tool on a public page. It also means a README that uses a few HTML tags for a centred logo or a details block will show those tags as text rather than applying them, so the preview will not match what GitHub shows you.

The preview is not what your platform will show, and the differences are not small

Every Markdown renderer is a dialect. CommonMark is the specification that most of them aim at, and GitHub, GitLab and the rest each add extensions on top: tables, strikethrough, task lists and autolinks are GitHub Flavored Markdown rather than core Markdown, and all four are in the list above that this tool does not do.

So treat this as a check on your structure, headings, lists, paragraphs and code blocks, rather than as a proof of final appearance. If a table or a task list matters, preview it where it will be published.

What this tool deliberately does not do

Nothing is uploaded. The rendering happens in your browser and the text never leaves your device, which matters if you are previewing a draft that is not public yet.

Sources

Every behaviour on this page was measured against this tool as it is published, in a browser, on 14 October 2026. Where the page says what the tool does not do, that is a statement about this tool, not about Markdown in general.

Frequently asked questions

Why is my table not rendering?

Tables are not supported. Each row comes out as a paragraph of pipe characters. Tables are a GitHub Flavored Markdown extension rather than core Markdown, and this renderer implements the common core only. Preview a table where it will be published.

Why is there an exclamation mark before my image?

Because images are not supported, and ![alt](url) is close enough to a link that the link rule matches the bracket-and-parenthesis part. You get a plain link with the leftover ! in front of it. Measured on the live tool.

Why does _this_ not go italic?

Only the asterisk forms are recognised: *em* and **strong**. Underscore emphasis renders as literal underscores, along with __strong__. Use asterisks here.

Why did the asterisks inside my code span disappear?

Because the italic rule runs after the inline-code rule and finds the asterisks still inside the code tag. Measured: `*not italic*` comes out italicised. Use a fenced block with three backticks instead, whose contents are escaped as a unit and are left alone by every inline rule.

Why are my indented sub-items not nested?

Lists are single-level. An indented sub-item ends the list and becomes a paragraph, with its leading spaces visible. There is no nesting support, so a multi-level outline will not preview correctly here.

Why is my HTML showing as text?

By design. All input is escaped before any Markdown rule runs, so raw HTML is displayed rather than rendered, and nothing in a pasted document can execute. The cost is that a README using HTML for a centred logo or a collapsible section will not look right here.

Will this look the same on GitHub?

Not necessarily. Headings, paragraphs, single-level lists, blockquotes, rules, fenced code and asterisk emphasis will match. Tables, images, task lists, strikethrough, nested lists and any HTML will not. Use this to check your structure, and preview where you publish for the final appearance.

Is my draft sent anywhere?

No. The rendering happens in your browser and nothing leaves the page. Nothing is saved either, so refreshing loses it.

Related tools