Markdown Previewer Developer Tool
Write Markdown and see a live-rendered HTML preview side by side.
Switching between an editor and a separate preview tab just to check whether a heading or a list rendered the way you expected is a small but constant friction when writing Markdown for a README or a pull request description. This free Markdown previewer is a developer tool that renders your input to HTML live as you type, entirely in your browser.
Markdown
Preview
Runs entirely in your browser — no data is sent anywhere.
A subset, not full CommonMark
Markdown itself was never one strict specification — CommonMark, GitHub Flavored Markdown, and the dozens of other dialects all agree on the basics and disagree on the edge cases. This tool implements a hand-written parser covering the everyday subset: headers (# through ######), bold (**text**), italic (*text*), inline code (`code`), fenced code blocks (triple backticks), links ([text](url)), ordered and unordered lists, and blockquotes (>). It does not attempt tables, nested lists, footnotes, or the full range of CommonMark's escaping and edge-case rules — for anything beyond a README or a PR description, treat this as a quick sanity check rather than a byte-for-byte match for GitHub's renderer.
Why the input is escaped before parsing
Markdown renderers that build HTML directly from raw user input are a classic XSS vector — pasting <script>alert(1)</script> into a naive previewer runs it. This tool escapes every angle bracket and ampersand in your input before any Markdown transform runs, so the only HTML tags that ever reach the preview are the ones this tool itself generates for headers, lists, and so on. If you need to encode or decode HTML entities directly, the HTML entity encoder does exactly that in isolation.
Common uses
README files, pull request and issue descriptions, changelog entries, and Slack or GitHub comment drafts are the usual reasons to want a quick Markdown preview without committing anything or opening a separate app. If you're comparing two drafts of the same document — before and after an edit, or two contributors' versions — the diff checker will show exactly which lines changed, which this previewer intentionally doesn't attempt.
What "live" means here
The preview re-parses and re-renders on every keystroke, with no debounce delay, since the hand-written parser is small and fast enough that it doesn't need one for realistic document sizes. Nothing is sent to a server at any point — parsing, rendering, and the copy-HTML button all run against the DOM already in your browser tab.