Next.js TypeScript React TailwindCSS License: MIT
Download entire websites with their exact directory hierarchy preserved and all assets rewritten to 100% offline relative paths.
No broken styles. No missing fonts. Zero remaining live-domain requests. Instant local browsing via file:///.
Key Features β’ Why SiteClonePro? β’ How It Works β’ Quick Start β’ Crawl Depth Controls β’ Tech Stack
Most website copiers (like legacy wget, HTTrack, or basic scraper scripts) produce broken offline copies because modern web apps use dynamic CSS url() fonts, CDNs, srcset, lazy-loaded images, and JavaScript loaders that freeze offline. SiteClonePro was built from the ground up to solve all of these problems.
| Feature | Legacy Copiers (wget, HTTrack) |
Basic Browser Extensions | β‘ SiteClonePro |
|---|---|---|---|
| Directory Preservation | Cluttered / Mangled | Flat / Single folder | Exact Mirror of Original Paths |
| Recursive CSS & Font Scraping | Often misses @font-face / @import |
Misses fonts & SVGs | Recursive Deep Extraction |
| Offline Relative Rewriting | Hardcoded or broken | Often stays absolute | Mathematically Computed ../ Levels |
| CDN & External Asset Archiving | Leaves live CDN links | Blocks external calls | Mirrored under external/<domain>/... |
| Zero Lingering Remote Links | β (leaves many live URLs) | β | 100% Zero Live Links Remaining |
| Missing Image Protection | Ugly broken image boxes | Broken icons | Automated Clean Fallback Placeholders |
| Preloader Spinner Freeze | Stuck on spinner forever | Often fails | Auto-Dismiss Offline Script Injected |
| Speed & Concurrency | Slow single-thread | Browser tab heavy | High-speed 14x Concurrent Engine |
SiteClonePro analyzes the original server's URL pathnames and mirrors them directly on your disk:
https://example.com/assets/css/main.cssβassets/css/main.csshttps://example.com/assets/img/logo/brand.pngβassets/img/logo/brand.pnghttps://example.com/assets/fonts/font.woff2βassets/fonts/font.woff2https://example.com/products/item-42βproducts/item-42/index.html
Every single reference in every HTML and CSS file is converted to point to its corresponding local file based on directory depth:
- In
index.html:assets/css/main.css - In
products/index.html:../assets/css/main.css - In
products/category/item/index.html:../../../assets/css/main.css - In
assets/css/main.css:../fonts/font.woff2
- CSS Dependencies: Automatically scans
@import url(...),@font-face { src: url(...) },background-image: url(...), and cursor/mask URLs recursively. - HTML Tags: Extracts
link[href],script[src],img[src],picture,source[srcset],video[src/poster],audio[src], and SVG<use xlink:href>. - Lazy Load Attributes: Automatically discovers
data-src,data-lazy-src,data-original,data-bg, anddata-srcset.
- Broken Image Protection: If a remote server returns
404 Not Foundfor an asset, SiteClonePro provides a transparent placeholder buffer so your offline pages never show broken image icons. - Offline Preloader Bypass: Modern sites often freeze on loading spinners offline because analytics or tracking scripts are blocked. SiteClonePro injects a micro-script that auto-dismisses preloaders once the DOM is ready.
- Automatically checks
/sitemap.xmland/sitemap_index.xmlto discover all pages immediately. - Crawls internal pages concurrently, filtering out external domains, auth routes, and anchor fragments.
- An in-memory cache saves discovered assets after scanning. Clicking Download ZIP reuses the scan results instantlyβno redundant crawling!
βββββββββββββββββββ
β Input Site URL β β Validate & emulate modern browser headers
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Sitemap & Crawl β β Concurrently crawl internal pages & build link graph
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Deep CSS & Font β β Recursively parse stylesheets for fonts, icons & bg images
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Concurrent Down β β Download all assets in parallel (14x concurrency + retries)
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Relative Rewriteβ β Convert all URLs to local relative paths (zero remote links)
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β ZIP Generation β β Stream compressed offline-ready ZIP archive
βββββββββββββββββββ
- Node.js (v18.18 or higher recommended)
npm,pnpm, oryarn
git clone https://github.com/lobdp/WebMirror.git
cd WebMirrornpm install
npm run dev
Visit http://localhost:3000 in your browser.
npm run build npm run start
Select the crawl depth that matches your needs:
| Option | Depth / Page Cap | Best Used For |
|---|---|---|
| π Full Site (All Pages - Unlimited) | Up to 5,000 pages | Complete archives of blogs, portfolios & e-commerce sites |
| Single Page Only (Instant) | 1 Page | Landing pages, single-page promotional sites |
| Standard Site | Up to 20 pages | Small corporate websites, basic portfolios |
| Large Site | Up to 50 pages | Company sites with service catalogues |
| Deep Crawl | Up to 150 pages | Content-heavy publications and news sites |
| Very Large Site | Up to 500 pages | Product stores and documentation hubs |
| Massive Archive | Up to 1,500 pages | Complete library or documentation repositories |
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- UI & Styling: Vanilla CSS Design System with TailwindCSS v4
- HTML Engine: Cheerio
- Archiving Engine: JSZip
When you unzip the downloaded archive, your website will be ready to open locally:
my-site-offline-site/
βββ index.html <-- Main homepage (double-click to open!)
βββ about/
β βββ index.html <-- Clean relative subpage
βββ products/
β βββ index.html
β βββ item-1/
β βββ index.html
βββ assets/
β βββ css/
β β βββ bootstrap.min.css
β β βββ main.css
β βββ js/
β β βββ jquery.min.js
β β βββ main.js
β βββ img/
β β βββ logo/
β β βββ banner.jpg
β βββ fonts/
β βββ font.woff2
βββ external/ <-- External CDN libraries mirrored locally
β βββ code.jquery.com/
βββ DOWNLOAD-REPORT.txt <-- Complete audit report of all mirrored assets
βββ README.txt <-- Offline instructions
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
This project is licensed under the MIT License - see the LICENSE file for details.