PageCloner

Scan any site.
Get the blueprint.

PageCloner crawls a target from your own browser, renders a live preview of every page, fingerprints the stack, collapses the crawl into the handful of templates you'd actually build, measures what the browser actually paints, audits it, and packages a working offline mirror you can open locally.

https://

Press / to focus · Esc aborts a running scan

Try:

How it works

  1. You give it a URL. PageCloner reads robots.txt and sitemap.xml first, then walks the site breadth-first within limits you control — page count, depth, concurrency and a per-request timeout. Nothing is uploaded; the crawl happens in your tab.
  2. It reads what the server sent. Every stylesheet, script, image, font, embed and favicon goes into an inventory — including assets that only ever appear inside a downloaded stylesheet, which is where web fonts usually hide. Around 150 signatures fingerprint the stack.
  3. It renders the pages back. Each page is re-rendered in a sandboxed frame so you can see it, and template representatives are measured with getComputedStyle to recover the real type scale, spacing scale and contrast ratios — measured, not parsed.
  4. It hands you the build kit. An offline mirror with every URL rewritten to a local path, plus design tokens, a Tailwind theme, a critical stylesheet, a copy deck, a wget script and the full report as JSON.

Questions people actually ask

Is it legal to clone a website?

Downloading a public page is generally fine. Republishing someone else's markup, copy, imagery or fonts usually is not — that content is copyrighted, and web font licences are frequently locked to a single domain. PageCloner is built for archiving, migrating a site you control, auditing performance and accessibility, competitive research, and using an extracted design system as a reference while you build your own thing. Putting up a copy of someone else's site is not one of those, and no tool changes that.

Does it work on React, Next.js, Vue and other JavaScript apps?

It analyses them, but it does not execute them. PageCloner reads what the server sends, so a fully client-rendered app looks like an empty shell — in the analysis and in the previews alike. That is deliberate: the difficulty score reports it loudly, because "the content is not in the HTML" is the single most useful thing to know before you try to clone a site. Server-rendered and static sites come through complete.

Why does it need a proxy, and can I avoid one?

A browser cannot read another origin's HTML unless that origin sends CORS headers, so requests fall through a ladder of public proxies. Those rate-limit hard. You can avoid them entirely by pointing Settings at your own endpoint — the README has a twenty-line Cloudflare Worker that does it, and it makes every scan faster and more reliable.

What do I actually get to download?

A ZIP containing the crawled pages with every src, href, srcset and CSS url() rewritten to a local relative path, the downloaded assets, tokens.css and tokens.measured.css, critical.css, a Tailwind theme, templates.md, copy-deck.md, a wget/httrack script, the asset inventory as CSV, and the full report as JSON. Unzip it and open index.html from disk.

How is this different from HTTrack or wget?

Those download bytes, which PageCloner also does. What they do not do is tell you what the site is built with, which pages share a layout, what the design system is, how much of the CSS is dead weight, or whether the thing is worth attempting before you spend an afternoon on it. PageCloner treats "what am I actually in for" as the question, and the mirror as the by-product.

Is anything sent to a server?

The scan runs in your browser and the report never leaves it. The one exception is unavoidable and worth stating plainly: when the target does not send CORS headers, the URL you are scanning is sent to whichever public proxy the request falls through to. Configure your own proxy endpoint in Settings and even that stops.

How many pages can it crawl?

The default is 24 pages at depth 2, and the ceiling in Settings is 120. That is a browser tab's practical limit, not an arbitrary one. For deeper crawls, the generated clone.sh hands you a rate-limited wget command, and the planned desktop build lifts the limit properly.

What does it cost?

Nothing, and there is no account. There is no server to pay for, which is exactly why the in-browser mode can stay free and complete rather than crippled. A Cloud mode is sketched for the things a tab genuinely cannot do — but it does not exist yet, and the app says so rather than collecting emails for it.