How to use
Type Markdown on the left, see rendered HTML on the right — the two panes scroll together so a long document stays aligned. Use the view toggle to switch between split, preview-only (for reviewing the final look), and source-only (for distraction-free writing). The **Cheatsheet** button opens a collapsible reference panel listing the 14 most common GFM constructs (headings, emphasis, lists, task lists, links, images, code, quotes, rules, tables) with their syntax — useful when you forget how to write a task checkbox or fenced code block. Your draft saves to localStorage 300 ms after each keystroke, so closing the tab and reopening this page brings you back to where you left off.
Download your work as Markdown (.md) for committing to a repo, or as a standalone HTML file (.html) with basic styles baked in — handy for sharing a one-off note via email. The "Copy HTML" button copies just the body markup, which is what you want when pasting into another CMS or a blog editor. Parsing uses marked with GFM enabled; the resulting HTML is sanitized with DOMPurify before display, so a paste from an untrusted source cannot execute scripts.
FAQ
Where does autosave store my draft?
In your browser's localStorage, under the key utilrepo:markdown-editor:draft. The data lives only on this device and this browser profile — clearing site data, switching browsers, or using a different machine wipes it. There is no cloud sync.
Will my Markdown render the same on GitHub?
Very close, but not identical. The editor uses marked with GFM extensions on, which covers tables, task lists, strikethrough, and fenced code blocks. GitHub adds extras (emoji shortcodes, autolinking of issue numbers, custom alert blockquotes, repository-aware references) that this preview will not render. For pure structural Markdown the result matches.
Can I paste HTML into the source?
Yes — Markdown permits inline HTML, and the preview renders it. After parsing, the HTML is run through DOMPurify, so script tags, event handlers like onclick, and javascript: links are stripped. Safe-by-default for sharing the rendered HTML with others.
How do I embed an image?
Use . The URL needs to be public — pointing to a hosted image (S3, GitHub raw, your CDN). Local files are not uploaded by this tool; if you need to inline an image as a data URI, encode it with the [Image Resizer](/en/image-resizer/) (export as a small WebP, then base64 the result with the [Base64 tool](/en/base64/)).
Why is the downloaded HTML so small — no syntax highlighting?
The download bundles a minimal stylesheet so the file works standalone without external dependencies. Code blocks keep their language class but are not pre-highlighted. To add highlighting, paste the HTML into a CMS or static site generator that includes a highlighter (Prism, Shiki, highlight.js) at build time.
Related concepts
Markdown started in 2004 as a way to write structured text that stays readable as plain text — a deliberate inversion of HTML's emphasis on machine-friendly markup. John Gruber's original implementation accepted whatever made sense at the time, which produced a flexible but ambiguous spec. CommonMark, started in 2014, formalized the corner cases (what does *foo _bar* baz_ mean exactly?) and is now the underlying grammar most modern parsers follow.
On top of CommonMark sit "flavors" — supersets that add features for specific contexts. GitHub-flavored Markdown (GFM) adds tables, task lists, strikethrough, autolinking, and fenced code blocks with language identifiers; it is the dialect this editor implements. MDX, popular in React projects, lets you embed JSX components directly in the document. Pandoc Markdown adds footnotes, citations, and a host of academic-writing features. They all share the same readable-as-plaintext core; what differs is what shows up in the preview. When portability matters — moving content between platforms — stick to CommonMark and add flavor features only when the destination supports them.