Write Markdown and see the formatted result live. Split, editor-only and preview-only layouts. Supports GFM tables, fenced code, blockquotes and links.
Markdown is a format where the gap between what you write and what renders is invisible until it bites you: an extra space before a fence turns a code block into a paragraph, a missing blank line before a heading keeps it as raw text, and a pipe-table cell count that does not match the separator row drops the table silently. Markdown Previewer closes that gap in real time, rendering every keystroke without a save, a build, or a page reload.
The layout has three modes. Split puts the Markdown source on the left and the rendered output on the right so changes are legible at a glance. Editor hides the preview for distraction-free writing on a small screen. Preview hides the source and expands the formatted document to full width. All three share the same rendering pass, so switching between them never changes the output.
The lead sample starts with # Incident 2026-03-14 — checkout 503s. In the preview that becomes a large h1 with a bottom border rule. The line **Impact:** ~11% of checkout requests failed for 51 minutes. renders the label in bold. The four numbered timeline items become an ordered list beginning at 1. The line beginning with > The default we never changed was the one that broke us. renders as an orange-left-bordered blockquote. The pipe table with rows | Metric | Before | After | and right-aligned numeric columns (-----: separator) renders as a styled HTML table with a dark header row. The full sample is 65 words and 9 distinct Markdown block types in a single document.
# through ######; h1 and h2 receive a border-bottom rule. Headings must have at least one space after the hash characters.**bold**, *italic*, ***bold italic***, and `inline code`; underscore equivalents also work.:--- left,:---: centre, ---: right). Ragged rows are allowed: extra cells are dropped, missing cells render empty.-, *, +), ordered lists starting at any number, horizontal rules, bare URLs that auto-link, and explicit links in [label](url) syntax.A heading line with no space after the hash characters, such as #Title, is treated as a paragraph rather than a heading. A pipe table where the separator row contains fewer columns than the header row renders with those columns having left alignment by default; the extra header cells are not dropped. Passing a complete URL into the editor renders fine, but only bare http:// or https:// URLs auto-link; a URL without a protocol passes through as plain text. Nested lists are supported to 2 levels; a third indent level is flattened to the second. An unclosed fenced code block captures everything after the opening fence, including what would have been headings, until the end of the document.
Impact: ~11% of checkout requests failed for 51 minutes.
02:14 — error rate crosses the alert threshold02:21 — failover to the standby replica03:05 — pool ceiling raised 100 → 400, redeploy03:07 — error rate back to baselineThe default we never changed was the one that broke us.
| Metric | Before | After |
|---|---|---|
| p99 | 840 ms | 210 ms |
| errors | 11% | 0.02% |