websitetomarkdown.ai

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.

1

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.

https://yoursite.com/docs
Convert
max pages: 500 scope: /docs mode: content

same-site crawl · robots.txt respected · polite pacing

2

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.

what goes in
<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>
what comes out
# Getting started

Install the **CLI** first.

```bash
npm install acme
```

| Plan | Price |
| ---- | ----- |
| ...  | ...   |
front-matter on every file
---
title: "Getting started"
description: "Install and configure in five minutes."
sourceUrl: "https://yoursite.com/docs/getting-started"
fetchedAt: "2026-07-29T12:00:00.000Z"
---
3

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.
unzip -l yoursite.com.zip
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 free

25 pages free · no credit card required