Glossary
Markdown for LLMs
The same page, a fraction of the tokens, with its headings intact.
By Roger Campos · Last updated: September 2026
TL;DR
Markdown for LLMs is the practice of converting a web page's HTML into Markdown before giving it to a language model. Markdown keeps the structure a model uses — headings, lists, links, tables — and drops the markup, scripts and styling that cost tokens and carry no meaning.
Free plan, no credit card. 1,000 credits a month.
How it works
Why Markdown
A web page's HTML is mostly not content: attributes, class names, inline scripts, SVG paths, tracking pixels. Sent to a model it spends the context window on noise. Plain text goes too far the other way — it loses which line was a heading and which words were a link. Markdown is the middle: # for headings, - for lists, [text](url) for links, pipes for tables. Models read it fluently and it keeps the boundaries that chunking relies on.
In practice
Not all conversions are equal
Converting HTML tag by tag is easy. Deciding what the content is is not: navigation, cookie banners, related-post lists and hidden menus are all in the DOM. Two numbers describe a conversion — how much of the text a visitor sees it keeps (coverage), and how much of its output is text the visitor never saw (leak). Measured on 33 pages:
| Strategy | Coverage of visible text | Output the visitor never saw |
|---|---|---|
| URLpipe /markdown (deterministic DOM walk) | 87.2% | 11.0% |
| Readability (what Jina Reader runs) | 88.2% | 21.3% |
| Selector blocklist (Firecrawl's approach) | 85.8% | 17.0% |
| A language model doing the conversion | 79.0% | 22.0% |
The model-based conversion was also the slowest and the only one with a per-page cost: about $0.0025 and 39 seconds a page, against $0 and around 20 ms for the DOM walk.
URLpipe
Markdown from URLpipe
/markdown renders the page in real Chrome, then walks the rendered DOM to Markdown — no model involved, so the same page always produces the same output and links come back absolute. It costs 1 credit. Add page_options.block_cookie_banners and remove_selectors to take out what you know you don't want.
curl -X POST https://urlpipe.dev/markdown \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/blog/launch", "sync": true, "page_options": {"block_cookie_banners": true}}'Its limit, stated plainly: the conversion reads the DOM, not the stylesheets, so text a page hides with CSS alone can leak into the output. The HTML to Markdown for LLMs guide goes further.
Try it
Markdown for LLMs, on a page you choose
Related terms
FAQ
Frequently asked questions
Is Markdown better than HTML for LLMs?
Should an LLM convert HTML to Markdown?
Why is there navigation text in my Markdown?
See it on your own pages.
Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.