SYSTEM ONLINE · URL→MARKDOWN CONVERTER

Feed the web
to your models.

One HTTP request. Clean, structured Markdown back. web‑fetch fetches any public page and strips it down to what machines actually need — no scripts, no noise, no CSS soup.

web-fetch — terminal LIVE
$ curl -s 'https://web-fetch.xuss.us/fetch?url=https://example.com'
[SYS/01]

Why AI needs this

01

Markdown is the LLM format

Models are trained to read Markdown fluently. Give them the same document as clean headings, lists and links — not 2,000 lines of tangled HTML.

▸ headings · lists · tables · links preserved
02

Cut token cost by 60–90%

HTML carries a huge overhead of tags, scripts and inline CSS that models pay for token-by-token. Conversion removes the dead weight before it ever reaches the API.

▸ fewer tokens = faster calls, lower bills
03

Ground your RAG pipelines

Clean content means accurate retrieval. No hidden text, no ad injections, no scripts — just the real article, chunked and embedded the way you want it.

▸ scripts / styles / iframes stripped
04

Built for agents, not browsers

Your agent asks for a URL, gets an answer it can actually use: title, final URL, status, and structured content — in one deterministic JSON envelope.

▸ { title, final_url, status, markdown }
05

Safe to expose publicly

SSRF-hardened so it survives being open to the internet: every resolved IP, port, redirect and scheme is validated before a single byte is fetched.

▸ no private / loopback / metadata access
06

One line from any stack

Plain HTTP, JSON in and out. Works from Python, Node, curl, n8n, Make, Zapier — or straight from a prompt-tool like a glorified curl.

▸ no SDK · no auth key · no setup
[SYS/02]

Live demo

This box is calling the real API, right now. Paste any public http(s) URL and watch the web become Markdown.

// GET /fetch?url=<url> ·  try it with any public page — or an RSS feed, a JSON API, a robots.txt…

RESPONSE VIEW JSON
// output will appear here…
[SYS/03]

API documentation

Requests

curl Node.js Python
GET /fetch web-fetch.xuss.us
$ curl -s 'https://web-fetch.xuss.us/fetch?url=https://example.com'

{
  "ok": true,
  "url": "https://example.com",
  "final_url": "https://example.com/",
  "status": 200,
  "content_type": "text/html",
  "mode": "html",
  "title": "Example Domain",
  "redirects": [],
  "truncated": false,
  "markdown": "# Example Domain\\n\\nThis domain is for use in illustrative examples…"
}

Response fields

FIELDTYPEMEANING
okbooltrue on success, false on error
urlstringthe URL you submitted
final_urlstringURL after redirects (useful for citations)
statusintHTTP status of the fetched page
content_typestringMIME type actually returned
modestringhtml (converted) or text (plain/JSON)
titlestring|nullpage <title>, when present
redirectsint[]status codes of each redirect hop
truncatedbooltrue if content hit a size cap
markdownstringthe converted content

Parameters

PARAMWHERENOTES
url requiredquery or JSON bodyhttp/https only, max 4096 chars
rawqueryraw=1 returns the markdown body directly (text/markdown)
Accept: text/markdownheadersame as raw=1

Error codes

HTTPCODEWHEN
400invalidmalformed URL, missing url, bad JSON body
403blockedprivate/loopback IP, disallowed port, credentials in URL
404dnshostname does not resolve
413too-largerequest body over 16 KB
415unsupportedcontent type can’t become markdown (images, PDFs…)
422redirecttoo many redirects / bad redirect location
429rate-limited / busyover 60 req/min per IP, or server at capacity
502unreachable / tls / reset / upstreamupstream refused, bad certificate, reset, other failure
504timeoutupstream did not respond in 25 s

Quick facts

  • No API key. Open endpoint, rate-limited per IP (60/min).
  • CORS enabled — call it straight from the browser.
  • Limits: 10 MB body, 4 MB HTML, 2 MB markdown, 5 redirects.
  • JSON and text bodies are returned verbatim as markdown.
  • gzip / deflate responses are decoded automatically.
[SYS/04]

Hardened by default

Anyone can call this API, so it is built like an SSRF honeypot turned inside out. Every hop in the fetch path is validated — before any connection is made.

Point your agents here.

Add “fetch the URL as markdown” to your AI workflow — RAG, summarization, research, chat-with-web. It costs one request and makes every downstream call cheaper and sharper.

https://web-fetch.xuss.us/fetch?url=https://your-page.com