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

      
[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.

▸ isolated network · rate-limited · no storage
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 PHP
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
max_bytesquery or JSON bodycap downloaded bytes (min 1024, service max) — stops early, saves bandwidth
max_charsquery or JSON bodycap markdown output length (min 256, up to the service cap)
max_htmlquery or JSON bodycap HTML fed to the converter (min 1024, up to the service cap)

Error codes

HTTPCODEWHEN
400invalidmalformed URL, missing url, bad JSON body
403blockedblocked host, port or 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 / busytoo many requests, or server at capacity
502unreachable / tls / reset / upstreamupstream refused, bad certificate, reset, other failure
504timeoutupstream did not respond in time

Quick facts

  • ▸No API key. Open endpoint, rate-limited per IP (60/min).
  • ▸CORS enabled — call it straight from the browser.
  • ▸Hard caps on body size, output length, redirects and time keep responses fast.
  • ▸JSON and text bodies are returned verbatim as markdown.
  • ▸gzip / deflate responses are decoded automatically.
[SYS/04]

Privacy first

A public service with a simple rule: your requests leave no trace.

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