Text & wordsFree
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
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:
 becomes a plain link with a ! in front of it, because the link pattern matches and the image marker does not._em_ and __strong__ render as literal underscores. Only the asterisk forms, *em* and **strong**, are recognised.~~gone~~ renders literally.- [ ] todo becomes a list item whose text starts with [ ].mailto: link and a relative link such as [rel](/about) are both left as literal text.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.
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.
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.
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.
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.
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.
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.
Because images are not supported, and  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.
Only the asterisk forms are recognised: *em* and **strong**. Underscore emphasis renders as literal underscores, along with __strong__. Use asterisks here.
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.
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.
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.
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.
No. The rendering happens in your browser and nothing leaves the page. Nothing is saved either, so refreshing loses it.