Free tool

Website to Markdown

Paste a link and get the page as Markdown — then keep clicking. Every hyperlink is rewritten to run back through the same converter, so the site you landed on stays Markdown for as long as you keep following links. No signup, no key.

Fetches the page server-side, rewrites its links, and converts it. Click any link in the result to convert that page too.

This entire tool is forty-four lines of backend

No headless browser, no crawler, no conversion service. The page fetches one endpoint, and the endpoint is this — fetch the document, walk its anchors, point each one back at itself, convert what is left to Markdown:

.arguments
   url:string
validators.mandatory:x:@.arguments/*/url
validators.url:x:@.arguments/*/url
http.get:x:@.arguments/*/url
html2lambda:x:-/*/content
strings.split:x:@.arguments/*/url
   .:/
for-each:x:@html2lambda/**/a
   if
      or
         strings.starts-with:x:"@.dp/#/*/\\@href"
            strings.concat
               get-value:x:@strings.split/0
               .://
               get-value:x:@strings.split/1
         strings.starts-with:x:"@.dp/#/*/\\@href"
            .:/
      .lambda
         .url
         if
            strings.starts-with:x:"@.dp/#/*/\\@href"
               .:/
            .lambda
               set-value:x:@.url
                  strings.concat
                     get-value:x:@strings.split/0
                     .:"//"
                     get-value:x:@strings.split/1
                     get-value:x:"@.dp/#/*/\\@href"
         else
            set-value:x:@.url
               get-value:x:"@.dp/#/*/\\@href"
         strings.url-encode:x:@.url
         set-value:x:"@.dp/#/*/\\@href"
            strings.concat
               .:"https://hyperlambda.dev/magic/modules/tools/website2markdown?url="
               get-value:x:@strings.url-encode
lambda2html:x:@html2lambda/*
html2markdown:x:-
   url:x:@.arguments/*/url
response.headers.set
   Content-Type:text/markdown
return-value:x:@html2markdown

The document is parsed into a tree, its anchors are rewritten in place, and the tree is turned back into HTML before the conversion runs — which is why the links in the output are Markdown links to Markdown documents rather than exits back to HTML. Describe an endpoint in a sentence and the Hyperlambda Generator writes and deploys it, after which it is also a tool your own AI agents can call over MCP. Want a single page with its token counts instead? URL to Markdown does that. Run the platform yourself:

curl -fsSL https://hyperlambda.dev/docker-compose.yaml | docker compose -f - up

More free tools

Browsing a site as Markdown is one of ten free tools here, each with the handful of backend lines that powers it printed on the page. See all of them — no signup on any of it.

Questions

What makes this different from a page converter?

A converter hands you one document and the links inside it point back at the HTML web. This one rewrites every hyperlink before converting, so each link in the Markdown you get back is a link to another Markdown document. Follow them and the site stays converted — useful for feeding a model a section of a site rather than a single page, and for reading documentation without the chrome around it.

Does every link get rewritten?

Links to the same site do — both absolute ones and the root-relative kind. Links that leave the site are left exactly as they are, so the conversion stops at the domain boundary rather than quietly proxying the rest of the internet. A site that writes its links relative to the current document, rather than to its root, will convert correctly but hand you links that leave the Markdown view.

Does it run JavaScript on the page?

No. It fetches the server-rendered HTML and converts that. A page that renders entirely client-side gives you its shell rather than its content — the same trade-off every server-side fetch makes.

Can my AI agent call this directly?

Yes. On a Magic cloudlet every endpoint is also an MCP tool, filtered by role, so an agent can walk a site as Markdown the same way this page does — one call per page, following the links it gets back.