Clean, agent-ready Markdown from any website.

distill is a local-first CLI and MCP server that turns a URL or raw HTML into Markdown an LLM agent can actually use — boilerplate stripped, structure preserved, links resolved. Fast, private, deterministic.

npx -y -p distill-md distill-mcp

Try it

runs the real distill core, in your browser

Paste HTML below and distill converts it to Markdown — the actual Rust engine compiled to WebAssembly, running fully client-side. No server, nothing leaves the page.

Note: distill normally takes a URL and scrapes it to Markdown (distill <url>). A browser can't fetch other sites directly (CORS), so this demo runs the HTML → Markdown step. For real URL scraping, use the CLI or MCP server below.
Output appears here…

Local & private

No cloud, no per-page cost. Nothing leaves your machine.

Deterministic

Byte-identical Markdown for the same input, every run.

Structure-preserving

Real tables, fenced code with language, nested lists, blockquotes.

Metadata & links

Title, author, date in YAML frontmatter; links resolved to absolute URLs.

Install

Published as distill-md; the installed command is still distill.

Agents · MCP server (no install)

npx -y -p distill-md distill-mcp

macOS / Linux

curl -LsSf https://github.com/gokulnair2001/distill/releases/latest/download/distill-md-installer.sh | sh

Rust

cargo install distill-md

Prebuilt binaries for macOS, Linux, and Windows on every GitHub Release.

Usage

# From a URL
distill https://en.wikipedia.org/wiki/Markdown

# From a local file, or stdin
distill page.html
curl -s https://example.com | distill -

# Multiple inputs → one file each
distill https://a.com https://b.com -o out/

Use with an agent

Run distill as an MCP server and any local agent (Claude Code, etc.) can call it as a tool — distill_url, distill_urls, distill_html. SSRF-guarded by default.

claude mcp add distill -- npx -y -p distill-md distill-mcp