How to convert Markdown to HTML
- Add your MarkdownPaste Markdown or choose one UTF-8 .md or .markdown file.
- Choose the output formatChoose a fragment for an existing CMS page, or a complete HTML page to open on its own.
- Convert and checkSelect Convert to HTML, inspect the generated source and preview, then copy or download. Check the result in its destination too.
HTML fragments, complete pages and preview
Fragments and complete pages
A fragment is body markup for an existing page or CMS. A complete page adds a document wrapper, metadata and styles, so it can open directly in a browser.
Document metadata and styles
The output is a sanitized HTML fragment or complete HTML5 page with UTF-8, viewport, title, language metadata and a built-in stylesheet.
Preview and publishing context
A preview is not a guarantee of the destination's fonts, CSS, email compatibility or permitted tags. A complete download includes a restrictive script-blocking CSP; a fragment needs the destination's own security policy. Sanitization is not a guarantee for every publishing context.
Support and limits
- Input: pasted text or one local .md / .markdown file encoded in UTF-8, up to 1 MiB (1,048,576 bytes). Invalid UTF-8 files are rejected instead of silently replacing characters. Paste is also checked by UTF-8 byte length. No URL fetching, folder import or batch conversion.
- Output limit: Generated HTML is limited to 6 MiB (6,291,456 bytes). These are enforced limits, not tested device-memory ceilings.
- Syntax: headings, paragraphs, emphasis, nested lists, blockquotes, fenced code, links, image references, and GFM tables, tasks and strikethrough. Code is escaped but not syntax-highlighted.
- Boundaries: raw HTML is displayed as literal text. Unsupported URL schemes are removed by the sanitizer. Math delimiters and Mermaid fences do not become equations or diagrams. Footnote extensions and automatic heading IDs are not implemented. Relative links and images are not bundled or rewritten; supply the referenced files yourself.
Test files and results
Tested on:
Three English samples were selected in the browser file picker, converted with Complete HTML page, English language metadata and the default generated title, then downloaded. Each downloaded file was opened in a browser and independently inspected. These samples do not establish accuracy for all Markdown or publishing environments; HTML has no fixed page count.
Sample 1: English structure · Sample 2: English table and tasks · Sample 3: explicit boundaries
| File checked | Actual result and review | Source / output bytes |
|---|---|---|
| 1 · English structure | Heading, emphasis, nested list, quote, link and literal fenced code retained. This checks this English fixture, not every document. | 246 / 1,144 |
| 2 · English GFM table | All 12 rows and three columns exact; two tasks and strikethrough present. This checks this fixture, not every table. | 471 / 1,934 |
| 3 · Boundaries | Raw tags escaped; unsafe URL removed; image remains external file reference; math literal; Mermaid code; footnote unsupported. These unsupported features remain limits, not repaired successes. | 291 / 1,085 |
Actual downloaded outputs: Output 1: structure · Output 2: table · Output 3: boundaries
Earlier mixed-language checks and timings — October 15, 2026
This is the unchanged historical check, not the current English sample set. Its old timings are not results for the October 25 run.
Original three-file check
These are self-created samples for this converter, not a broad accuracy benchmark. An HTML document has no fixed pages: the records below are checked file by file. Browser printing may paginate it differently.
| File checked | Actual result and review | Source / output bytes |
|---|---|---|
| 1 · Structure and Chinese | Chinese heading, H1/H2, bold, italic, nested list, quote and link preserved in the downloaded source. HTML inside the code fence is escaped. | 246 / 1,144 |
| 2 · GFM table | ROW001–ROW012 checked in order, once each: all 12 rows present. Three header cells, two task checkboxes and strikethrough retained. This checks this fixture, not every table. | 519 / 1,982 |
| 3 · Boundaries | Raw div/script tags escaped; unsafe javascript link loses its href. Image remains assets/figure.png, without an image bundle. Math stays text; Mermaid stays code. The footnote is parsed as a reference link, not a footnote: unsupported. | 291 / 1,085 |
Actual downloaded outputs: Output 1: structure · Output 2: table · Output 3: boundaries.
Exact settings and additional boundary checks
Checked on 15 October 2026 in the desktop browser on this Windows machine, with Complete HTML page, English language metadata and the default generated title. Each output below is an actual browser download. Language metadata does not translate the Chinese text.
Source sizes include the source files' CRLF line endings; textarea input normalizes line endings. No conversion correction was applied between these source samples and the published downloads. The unsupported outcomes above remain limits, not repaired successes.
Other checks: a 1,048,577-byte file was rejected at the 1 MiB limit; a deliberately invalid UTF-8 file was rejected with a decoding error. The download action was disabled after rejection.
Sample 1: structure and Chinese · Sample 2: numbered table and tasks · Sample 3: explicit boundaries
Measured conversion time and its scope
On this Windows machine, after the local tool page was loaded, sample 1 took 49.0 ms and sample 2 took 9.0 ms to build HTML and assign the preview. These are individual observed runs, not averages, cold-load times or preview-paint times. They exclude file selection and download. Sample 3 timing was not captured reliably, so no time is reported for it. These localhost measurements describe this machine, not a visitor’s network. Physical-phone timing and peak memory have not been measured.
Local processing and privacy
Conversion runs in this browser using components served from this site. Your Markdown and generated HTML are not uploaded to a conversion service or saved as a draft. No account, model or paid API is used.
The preview blocks image requests and disables links. Downloaded HTML keeps image paths and links; opening it may load those images, and following a link contacts its destination. Separate website delivery and analytics requests are described in our privacy policy; document contents are not sent as analytics events.
Frequently asked questions
Why can images work in my original project but not in the downloaded HTML?
Relative image paths resolve from the HTML file’s new location. Keep the referenced images in matching folders, or update their paths before publishing. This tool does not package images with the HTML.
Page updated: