TinyFileLab

Home›Convert›Markdown to HTML

Parsed in the page — your document never leaves it

Convert Markdown to HTML

Paste Markdown, get HTML you can read. Tables, task lists, fenced code and footnoted links all survive the trip, and the preview renders in a sandbox that cannot run scripts.

Markdown in paste it, or drop a .md file

Type or paste on the left. The HTML and the preview both update as you go.

HTML out
Preview rendered in a sandboxed frame — scripts cannot run
Nothing is transmittedThe page does the work locally. No request carries your data anywhere.
No length limitPaste as much as you like — the only ceiling is your own memory.
No account, no ads in the wayOpen the page, use it, close it. Nothing to sign up for.

What this converts

The parser covers CommonMark's block structure — ATX and setext headings, paragraphs, fenced and indented code, blockquotes with nesting, ordered and unordered lists including nested ones, horizontal rules — plus the GitHub Flavored Markdown additions that people actually rely on: pipe tables with alignment, task-list checkboxes, strikethrough with tildes, and autolinks in angle brackets. Inline emphasis handles the full set, including the intra-word rule that stops snake_case_names from turning into italics halfway through.

What it deliberately does not do is reference-style links defined at the bottom of a document, footnotes, or definition lists. Those are less common in the documents people paste into a converter, and pretending to support them badly is worse than saying so plainly.

The HTML it produces

The output is plain semantic HTML with no classes, no wrapper divs and no inline styles beyond the alignment attributes a table needs. That is the useful shape: it drops into an existing stylesheet, a CMS field, or an email template without bringing along a framework's opinions. Code fences keep their language as a class="language-js" on the <code> element, which is the convention every syntax highlighter reads.

The Full HTML document option wraps the result in a doctype, a charset declaration and a viewport meta tag, for when the file needs to open as a standalone page rather than be pasted into one.

Escaping, and the option that turns it off

By default every angle bracket in your Markdown is escaped, so <script> in your source becomes visible text rather than an executing tag. Markdown's specification permits raw HTML to pass through, so the option is there — but it is off by default, and it should stay off for anything you did not write yourself. Converting an untrusted document with pass-through enabled produces HTML carrying whatever was in it.

Two things happen regardless of that setting. Link and image URLs are checked against a scheme allow-list — http, https, mailto, tel, ftp and relative paths pass; javascript: and data: are replaced with #. And the preview panel renders inside an iframe with an empty sandbox attribute, which means no scripts, no forms and no navigation, no matter what the document contains.

Line breaks, the perennial argument

In standard Markdown a single newline inside a paragraph is just whitespace; you need two trailing spaces, or a backslash, to force a <br>. GitHub comment boxes break that rule and treat every newline as a line break, which is why text that looked right in an issue thread collapses into one paragraph everywhere else. The Newline becomes <br> option switches between the two behaviours. If your source came out of a chat box or an issue tracker, turn it on.

It runs here

Documentation, meeting notes, drafts and internal specs are the usual contents of a Markdown file, and none of them belong on a stranger's server for the sake of a formatting conversion. The parser is a few hundred lines of JavaScript running in this page; there is no request, no queue and no size limit beyond your own memory. If you need the opposite direction, the HTML to Markdown converter is the mirror of this one.

Common questions

Does it support GitHub Flavored Markdown?

The parts people use: pipe tables with alignment, task lists, strikethrough, fenced code with language tags, and autolinks. Reference-style links and footnotes are not supported, and the page says so rather than failing quietly.

Why did my line breaks disappear?

Standard Markdown treats a single newline as whitespace. Tick 'Newline becomes
' to get GitHub's comment-box behaviour, or end lines with two spaces in the source.

Is raw HTML in my Markdown preserved?

Only if you tick 'Pass HTML through'. It is off by default so that untrusted documents cannot smuggle tags into the output. URLs are always checked against a scheme allow-list either way.

Can the preview run scripts from my document?

No. It renders in an iframe with an empty sandbox attribute, which blocks scripts, forms, popups and navigation entirely.

What does the code fence language tag do?

It becomes class="language-js" on the element, which is the convention Prism, highlight.js and GitHub all read. Without a highlighter loaded it is inert but harmless.

Is there a size limit?

None imposed here. It runs in your browser, so the practical ceiling is your available memory. A book-length document is fine.

Is my document uploaded?

No. The parser runs in this page and makes no network requests. That is the main reason to use it for anything internal.