Live Markdown editor with split preview, word count, and raw HTML export
Preview will appear here…
The Markdown Visualizer is a split-pane editor that renders your Markdown to HTML in real time. Left pane is raw text; right pane is the rendered output, updating on every keystroke. The parser is a zero-dependency micro-implementation written in ~100 lines of TypeScript — no network requests, no markdown-it, no remark, no dependencies at all.
It’s aimed at developers and writers who work in plain Markdown and want to verify their formatting quickly — without spinning up a local dev server, installing a VS Code extension, or opening GitHub’s preview tab. The shareable URL feature lets you share a draft document as a single link with no backend involved.
.md file.The parser is a line-by-line and inline-pass regex transformer, not a proper AST parser. It processes the input in two stages:
Block-level pass — each line is matched against block patterns in priority order: fenced code blocks, headings (# through ######), blockquotes, ordered and unordered lists, horizontal rules, and pipe tables. Matching lines are wrapped in the appropriate HTML element.
Inline pass — within each text block, a series of regex substitutions handles bold-italic, bold, italic, strikethrough, inline code, images, and links. The order matters: bold-italic (***) must be matched before bold (**) to avoid greedy match errors.
The shareable URL uses btoa(encodeURIComponent(markdown)) to produce a URL-safe base64 string stored in the hash. On load, decodeURIComponent(atob(hash)) restores it. This is purely client-side — nothing hits a server.
Seeing rendered Markdown during authoring catches problems that are invisible in raw text. The most common: forgetting to close a code fence (everything after it renders as code), pipe table column misalignment (the table silently breaks), and link syntax mistakes ([text](url vs [text](url)).
The GFM vs CommonMark distinction matters more than most people realize. GitHub Flavored Markdown (GFM) supports pipe tables, strikethrough, and task lists — CommonMark does not. Many documentation platforms (Docusaurus, MkDocs, Hugo) use a specific Markdown dialect, and a table that renders perfectly in GitHub will break in CommonMark-strict mode if you have unescaped pipes in cells. This tool implements GFM-style tables so you can verify table syntax before committing.
For documentation pipelines and static site generators, this is also useful for one-off conversion checks: paste a chunk of docs, verify it looks right, copy the HTML for a CMS field, or confirm heading hierarchy before publishing.
|---|---|) with at least one dash per cell. Missing separators silently render the table as plain text.<div> tags won’t break the preview output.# through ######[label](url) and ```lang ``` (language class preserved for downstream highlighters)>---> blocks are not merged.For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.