Markdown Viewer
Write markdown, watch it render
GitHub-flavoured markdown with tables, task lists and code fences, previewed as you type, with an HTML export.
Markdown Viewer
Runs in your browser · nothing uploadedRelease notes
2.4.0 — August 2026
- Local-only PDF merge
- Batch EXIF stripping
Nothing is uploaded, ever.
| Tool | Status |
|---|---|
| Merge | Shipped |
| Split | Planned |
npm run build01 — How to use Markdown Viewer
02 — Getting good results
03 — Questions
No. Parsing and rendering both happen in this browser tab. Nothing is transmitted or stored, so drafts, internal documentation and release notes stay local.
No, deliberately. GitHub-flavoured markdown permits inline HTML, but rendering arbitrary markup from pasted text means rendering whatever script comes with it. Every character from your source is escaped, and the only markup in the output is markup this tool generated — so a pasted document cannot execute anything.
Headings, paragraphs, bold, italic, strikethrough, inline code, fenced and indented code blocks, ordered and unordered lists, task lists, blockquotes, horizontal rules, links, images and tables with alignment.
Link targets are restricted to http, https, mailto, tel and relative URLs. A javascript: URL in a link is a standard way to smuggle code into rendered markdown, so those are left as plain text.
04 — More about Markdown Viewer
Why this renderer escapes HTML
Most markdown specifications, including GitHub-flavoured markdown, allow raw HTML to pass through untouched — a genuinely useful feature when you control the document. In a tool that renders whatever a visitor pastes, it is a cross-site-scripting hole with a friendly name: a document containing a script tag or an image with an onerror handler would execute in the page that rendered it. The usual remedy is to render everything and then run the result through a sanitiser, which works but depends on the sanitiser knowing every bypass. This renderer takes the stricter route of escaping every character from the source up front, so the only markup that can reach the output is markup it generated itself. The cost is that inline HTML shows as text rather than rendering; the benefit is that there is no class of pasted document that can do anything unexpected.
Markdown flavours and why output differs between tools
There is no single markdown standard. The original 2004 implementation left many cases undefined, and the gaps were filled differently by everyone who came after — which is why the same file can render three ways in three tools. CommonMark exists to pin down the ambiguous cases precisely, and GitHub-flavoured markdown builds on it with tables, task lists, strikethrough and autolinking. When a document looks right in one editor and wrong in another, the difference is almost always one of these undefined corners: how many spaces indent a nested list, whether underscores inside a word mark emphasis, or whether a line break inside a paragraph is preserved. This tool follows GitHub's conventions, which is what most people writing markdown today are actually targeting.
61 more tools
where this came from.
Same shell, same shortcuts, same promise: nothing leaves your browser.