ToolsForWeb

Markdown Preview

Write Markdown and watch the rendered result update as you type, with a tab to view and copy the generated HTML. Rendering happens entirely in your browser; links and images are restricted to http(s), mailto and #fragment URLs, and javascript: or data: URLs are stripped.

Loading tool…

About this tool

Write Markdown and watch the rendered result update as you type, side by side or stacked, with a tab that shows and copies the generated HTML. Rendering follows the CommonMark core with GFM-style extensions — tables, strikethrough, task lists — via the marked library. Raw HTML in your input is escaped to visible text rather than executed, and links and images are restricted to http(s), mailto and #fragment targets; anything else becomes a dead # link.

When to use it

Drafting README or documentation snippets and checking they render as expected.
Verifying that a table or code block holds up before posting it on a Markdown-rendered surface.
Generating clean HTML from Markdown for a site or email template.
Checking pasted content for surprises like raw script tags.

Questions

Why does my HTML show up as text?

By design. Raw HTML in the input is escaped so <script>, <iframe> and inline event handlers can never run — what you see is the literal markup. Markdown syntax (links, images, emphasis) still produces real tags.

Which Markdown flavor does it follow?

GFM-style as implemented by marked: pipe tables, fenced code blocks, strikethrough and task lists on top of the CommonMark core. Note that a single newline stays inside the same paragraph; end a line with two spaces or a blank line to force a break.

Why did my javascript: link become '#'?

Link and image targets are restricted to http(s), mailto and page fragments. Unsafe schemes are replaced with # so the element survives but cannot navigate. This matters when you paste untrusted Markdown: the preview never executes what it renders.

How do I convert Markdown to HTML?

Write or paste your Markdown on the left, then open the HTML tab — it shows exactly what the renderer produced, and Copy HTML puts it on your clipboard for a blog, email template or CMS. The output is a fragment: heading, paragraph and list tags, with no <html> or <body> wrapper, so it drops into any page that already has its own structure.

Why is my table not rendering?

GFM tables need three things in order: a header row of pipes, a separator line of dashes, and a blank line before the table starts. The minimal shape is | Col | Col | on the first row and | --- | --- | directly under it. The usual culprit is the missing blank line above — without it the table folds into the preceding paragraph. To show a literal pipe inside a cell, escape it as \|.

Does it support task lists and strikethrough?

Yes — those are the GFM extensions on top of the CommonMark core: - [ ] task lists (rendered as checkboxes, disabled — they are output, not controls), ~~text~~ for strikethrough, and pipe tables. One spec detail that trips people over: a single newline stays inside the same paragraph, so end a line with two spaces or a blank line when you actually want a break.

Is the generated HTML safe to reuse?

It is produced defensively in two layers: raw HTML in your input is escaped to visible text instead of emitted, and every link or image URL the renderer does generate is constrained to http(s), mailto and page fragments — unsafe schemes become #. The HTML tab therefore only ever contains tags the Markdown syntax itself generated, which makes the output safer to paste elsewhere than arbitrary pasted markup would be.

Related tools