How it works
From live site to Markdown ZIP
Three steps, one pass, no setup. Here is exactly what happens between pasting a URL and unzipping your site.
Paste your URL
Point us at any public page — a homepage, a docs root, a blog. We crawl from there, staying on the same site (www and non-www count as one site) and discovering pages by following links, breadth-first.
Options exist but stay out of the way: cap the number of pages, scope the crawl to a path like /docs, and choose between clean content extraction or full-page conversion. The defaults just work.
same-site crawl · robots.txt respected · polite pacing
We crawl and convert every page
Pages stream into a live file tree as they convert — you watch the site take shape instead of staring at a progress bar. Conversion is fidelity-first:
- GFM tables — with bold, links, and inline code preserved inside cells
- Fenced code blocks, with the language detected and tagged
- Headings, lists, and quotes keep their hierarchy
- Every link and image rewritten to an absolute URL
- Lazy-loaded images resolved to their real source
- Nav, header, footer, and cookie-banner chrome stripped in content mode
- Or switch to full mode to keep the entire page, exact structure and all
- YAML front-matter on every file: title, description, source URL, fetch time
One bad page never kills a crawl: a 403 or a timeout is recorded against that page and the crawler moves on.
<h1>Getting started</h1>
<p>Install the <b>CLI</b> first.</p>
<pre><code class="language-bash">
npm install acme
</code></pre>
<table>
<tr><th>Plan</th><th>Price</th></tr>
...
</table> # Getting started
Install the **CLI** first.
```bash
npm install acme
```
| Plan | Price |
| ---- | ----- |
| ... | ... | ---
title: "Getting started"
description: "Install and configure in five minutes."
sourceUrl: "https://yoursite.com/docs/getting-started"
fetchedAt: "2026-07-29T12:00:00.000Z"
--- Download the ZIP
When the crawl finishes (or whenever you stop it), you get one archive. Inside:
- *.md Your pages as Markdown files, mirroring the site’s folder structure — a usable docs tree from the first second.
- llms.txt An auto-generated index of the site per the llms.txt convention — title, summary, and a curated link list with descriptions.
- llms-full.txt The full concatenated content of every page in one file — paste-ready LLM context.
- _README.md Crawl metadata: source site, date, page count, options used — so future-you knows where this tree came from.
yoursite.com.zip
├── index.md
├── docs/
│ ├── index.md
│ ├── getting-started.md
│ └── api/
│ └── auth.md
├── llms.txt
├── llms-full.txt
└── _README.md URL → file mapping
Where each URL ends up
The rule of thumb: the path becomes the file path. A URL that has pages beneath it becomes a folder with an index.md.
| URL on the site | File in the ZIP |
|---|---|
| / | index.md |
| /docs (when pages exist under it) | docs/index.md |
| /docs/getting-started | docs/getting-started.md |
- · Query strings are hashed into the filename so variants stay unique.
- · Characters that are unsafe on disk are sanitized; name collisions are deduped.
- · www and non-www are treated as the same site.
See it on your own site
The demo converts one page free with no signup — or sign in and get the whole tree.
Start free25 pages free · no credit card required