BrainCoder
Tool info

Markdown to HTML

688 characters in · 124 words · 1,066 characters of HTML out (1.0 KB) · 4 headings

HTML

<h1>Release notes — Markdown to HTML</h1>
<p>Paste <strong>Markdown</strong>, get clean HTML. <code>CommonMark</code> and GitHub extensions, sanitized, and converted in this tab.</p>
<h2>Highlights</h2>
<ul>
<li>Headings, lists, tables, quotes, links and images with alt text</li>
<li>Fenced code blocks with a language hint</li>
<li><del>Strikethrough</del> and task lists</li>
<li>Inline HTML such as <mark>markup</mark> is kept —  is not</li>
</ul>
<h2>Checklist</h2>
<ul>
<li><input checked="" disabled="" type="checkbox"> Paste Markdown</li>
<li><input checked="" disabled="" type="checkbox"> Copy the HTML</li>
<li><input disabled="" type="checkbox"> Ship it</li>
</ul>
<table>
<thead>
<tr>
<th>Output</th>
<th>Where it goes</th>
</tr>
</thead>
<tbody><tr>
<td>Clipboard</td>
<td>your editor</td>
</tr>
<tr>
<td>An .html file</td>
<td>your disk</td>
</tr>
</tbody></table>
<h2>Code</h2>
<pre><code class="language-js">const { html } = convert("# Hello");</code></pre>
<blockquote>
<p>Nothing is uploaded — the conversion happens in this tab.</p>
</blockquote>

Saved as markdown.html

What the output really is: raw HTML you write in your Markdown is kept as HTML, then the whole result is sanitized:<script>, event handlers (onclick and friends), unsafe URLs (javascript:), iframes, styles, embedded SVG and form controls are removed, and tags outside the allowlist are unwrapped. An <a> that loses an unsafe URL keeps its text but loses the href. HTML comments are dropped. The Copy button, the Preview and the download all show the same sanitized string.

Converted in this tab — the Markdown, the generated HTML and any file you open are read locally and never uploaded. The download is a standalone page: a doctype, a charset tag and one inline stylesheet around your HTML, with no scripts.