Changelog · September 16, 2026
/markdown converts without a language model
Same input, same output, every time — and nothing invented.
By Roger Campos · Last updated: September 2026
TL;DR
/markdown is now a deterministic walk of the rendered DOM instead of a language model. Measured on 33 real pages, it keeps 87.2% of the page's visible text with 11.0% of its output being text the visitor never saw, in about 20 ms; the model it replaced managed 79.0% and 22.0%, at 39 seconds a page.
Free plan, no credit card. 1,000 credits a month.
The same page now converts to the same Markdown every time. Headings, lists, links, fenced code with its language, GFM tables and label/value tables are written down from the page's own structure; the chrome around the content — navigation, the site header and footer, forms — is left out.
In the benchmark a blind judge preferred the DOM walk on 24 of 33 pages, against 3. On one long technical article the model had spent 143 seconds returning its input HTML unchanged — no headings, no code fences — and the request was recorded as a success. A conversion that reads the structure can't do that.
What it does not do: it reads no CSS, so text a stylesheet hides can reach the output and counts toward that 11.0%.
Request
Example
curl -X POST https://urlpipe.dev/markdown \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "sync": true}'FAQ
Frequently asked questions
No. It is a deterministic conversion of the rendered DOM. Only /summarize, /keywords, and /extract call a model.
Yes, as long as the page itself hasn't changed.
Yes. The conversion reads no CSS, so text hidden by a stylesheet can leak. page_options.remove_selectors takes out elements you know you don't want.
Try it on the free plan.
Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.