Irmu
Free tool

Markdown to HTML converter

Paste Markdown on the left, get clean HTML on the right — with a live rendered preview. Free, no signup, and your text never leaves your browser.

Markdown input
HTML output
0 words in · 0 characters out · 0 linesConverted locally in your browser — nothing is uploaded.
Code examples

Do the same thing in your own pipeline

The tool above uses Marked and DOMPurify. Here is the equivalent conversion with the standard library in each language.

# pip install markdown bleach

import markdown
import bleach

text = """
# Shipping a crawler

Retry transient failures with **jitter**.

- Cap concurrency
- Log status codes
"""

html = markdown.markdown(text, extensions=["tables", "fenced_code", "toc"])
safe_html = bleach.clean(html, tags=bleach.sanitizer.ALLOWED_TAGS | {"h1", "h2", "p", "pre", "code"})
print(safe_html)
How it works

What the converter does to your Markdown

  • CommonMark plus GitHub Flavored rules: tables, strikethrough, task lists and autolinks.
  • The generated HTML is passed through DOMPurify, so scripts, event handlers and javascript: URLs are removed.
  • Optional heading ids let you deep-link to sections and build a table of contents.
  • Optional line-break mode turns single newlines into <br>, matching chat-style Markdown.
  • Toggle the full-document wrapper to get a complete page with doctype, charset and viewport.
With Irmu

When you need the content first

Irmu fetches and renders the page for you. Take the Markdown it returns and render it back to HTML wherever you publish it.

markdown_to_html.py
# 1. Fetch the page with Irmu and ask for Markdown
# 2. Render that Markdown back to HTML wherever you need it

import os, requests, markdown

resp = requests.get(
    "https://app.irmu.com/api/crawl",
    headers={"Authorization": f"Bearer {os.environ['IRMU_API_KEY']}"},
    params={"url": "https://example.com/article", "format": "markdown"},
    timeout=60,
)
resp.raise_for_status()

html = markdown.markdown(resp.text, extensions=["tables", "fenced_code"])
print(html[:500])
FAQ

Questions about this tool

Turn any URL into clean data

Fetch, render and extract with one API. 1,000 free credits every month, no card required.