# How to Download an Entire Website

> Five ways to download a whole website for offline use or migration: browser save, wget, HTTrack, desktop apps and rendering exporters, and what each misses.

Canonical: https://www.nocodeexport.com/en/blog/how-to-download-an-entire-website
Last updated: 2026-10-01

NoCodeExport Team · Export · September 29, 2026 · 6 min read

> **Quick answer**: To download one page, use your browser's Save Page As (Webpage, Complete). To download a whole static site, mirror it with wget or HTTrack. To download a site built with JavaScript (Framer, Webflow, Wix, Squarespace, React), use a tool that renders each page in a real browser before saving it, then test the copy on a local server. Only download sites you own or have permission to copy.

Downloading an entire website means saving every page you need together with its stylesheets, scripts, images and fonts, and rewriting the links between pages so the copy works without the original server. Which tool does that well depends on one question: does the site arrive from the server as finished HTML, or does JavaScript build it in the browser?

To [download a website as a ZIP](https://www.nocodeexport.com/en/website-code-exporter) without installing anything, scan a public URL you own or are authorized to copy, choose the pages, and download the result. The rest of this guide covers every method, including the free command-line ones.

## Choose a method

| Method | Best for | Runs JavaScript | Rewrites links between pages | What it misses |
|---|---|---|---|---|
| Browser Save Page As | One page, quickly | Saves what has rendered | No | Other pages, lazy-loaded media |
| wget mirror | Static sites, blogs, docs | No | Yes | Anything JavaScript builds |
| HTTrack | Static sites on Windows or Linux | No | Yes | Anything JavaScript builds |
| Desktop apps (SiteSucker, Cyotek WebCopy) | Static sites without a terminal | No | Yes | Anything JavaScript builds |
| Rendering exporter | Framer, Webflow, Wix, Squarespace, React sites | Yes | Yes | Server features: databases, accounts, payments |

Every method copies what a visitor can see. None of them can download a database, a CMS back office, user accounts, checkout or anything that runs on the server.

## Method 1: save one page in the browser

1. Open the page in Chrome, Edge, Firefox or Safari and scroll to the bottom so lazy-loaded images load.
2. Press `Ctrl+S` (Windows, Linux) or `Cmd+S` (macOS).
3. Choose **Webpage, Complete** (Safari: **Web Archive** or **Page Source**).

You get one HTML file and a folder of assets. Links to other pages still point at the live site, so this is a snapshot of a single page, not a website.

## Method 2: mirror a static site with wget

wget ships with most Linux distributions and installs on macOS with Homebrew (`brew install wget`). This command downloads a site and makes it browsable offline:

```bash
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://example.com/
```

- `--mirror` follows links recursively and keeps timestamps.
- `--convert-links` rewrites links so the copy works from your disk.
- `--adjust-extension` saves pages with an `.html` extension.
- `--page-requisites` downloads the CSS, images and scripts each page needs.
- `--no-parent` stays inside the folder you started from.

Add `--wait=1` to pause between requests so you do not overload a server, and `-e robots=off` only on a site you own. wget saves the HTML the server sent. If the site builds its content with JavaScript, the pages will look empty or unstyled.

## Method 3: HTTrack

HTTrack is free, has a graphical interface on Windows (WinHTTrack) and runs from the command line on Linux and macOS. Create a project, paste the URL, choose **Download web site(s)** and let it crawl. It handles static sites well and follows the same rule as wget: it never runs JavaScript. On Framer, Webflow and Wix sites that produces blank or unstyled pages; [why HTTrack breaks on no-code sites](https://www.nocodeexport.com/en/blog/httrack-no-code-sites) shows exactly what goes missing.

## Method 4: desktop apps

**SiteSucker** (macOS and iOS) and **Cyotek WebCopy** (Windows) wrap the same idea in a desktop interface: enter a URL, set how deep to follow links, and download. They are convenient on static sites and share the same limit on JavaScript-built pages.

## Method 5: a rendering website exporter

Sites made with Framer, Webflow, Wix, Squarespace or a JavaScript framework are finished in the browser: styles, images, animations and whole sections appear only after scripts run. A rendering exporter opens every page in a real browser, waits for it to finish, scrolls it so lazy content loads, then saves what the browser drew and downloads the files it used.

With NoCodeExport:

1. Paste the published URL of a site you own or may copy and run the scan.
2. Choose the pages to include.
3. Review the files, then download the ZIP of HTML, CSS, JavaScript and assets.

The Free plan exports one page and keeps images and fonts linked to the original site. Paid exports download the assets into the ZIP. Pro covers up to 100 pages per site; a one-time Site Pass covers a single site with up to 50 pages, or 250 pages with Site Pass Plus and 1,000 pages with Site Pass Max. Before you pay, you can see a working preview of the export built from up to 30 of your pages.

## Why a downloaded website looks broken

- **Blank or unstyled pages:** the site builds its layout with JavaScript and the tool only saved the server's HTML. Use a rendering exporter.
- **Missing images:** images load as you scroll (`loading="lazy"`, `data-src`, CSS backgrounds). Scroll before saving, or use a tool that does.
- **Links go back to the live site:** the tool did not rewrite internal links. With wget, add `--convert-links`.
- **Fonts fall back:** the font files are on another domain or licensed only for the original site.
- **Forms, search and logins do nothing:** those need a server. Point forms at a form service, and keep dynamic features on a real backend.

## Test the copy before you rely on it

Opening `index.html` by double-clicking loads it from `file://`, where browsers block many scripts and root-relative links. Serve the folder instead:

```bash
npx serve .
```

or `python3 -m http.server 8000`, then open every page at desktop and mobile widths, click through the navigation and check the browser console for failed requests. [Running an exported site locally](https://www.nocodeexport.com/en/blog/run-exported-site-locally) covers this step in detail.

## Downloading a website you do not own

Being able to see a page does not give you the right to copy it. Download your own site, a client's site with written permission, or content whose license allows it. Designs, text, images, fonts and templates can each carry their own rights. Do not bypass logins, paywalls or other access controls, and respect `robots.txt` and rate limits when you crawl someone else's server.

## Which method should you use?

Use Save Page As for one page, wget or HTTrack for a static site, and a rendering exporter for a site built with Framer, Webflow, Wix, Squarespace or JavaScript. Whatever you use, serve the copy locally and click through it before you cancel the original hosting.

## Related resources

- [Website downloader: save a site as a ZIP](https://www.nocodeexport.com/en/website-code-exporter)
- [How to copy the HTML code from a website](https://www.nocodeexport.com/en/blog/how-do-you-copy-html-code-from-a-website)
- [Why HTTrack breaks on no-code sites](https://www.nocodeexport.com/en/blog/httrack-no-code-sites)
- [Run an exported site locally](https://www.nocodeexport.com/en/blog/run-exported-site-locally)
- [Host a static HTML site for free](https://www.nocodeexport.com/en/blog/top-free-hosting)

## Frequently Asked Questions

### How do I download an entire website for free?

For a static site, use wget (wget --mirror --convert-links --adjust-extension --page-requisites --no-parent followed by the URL) or HTTrack; both are free. For a site built with JavaScript, such as Framer, Webflow or Wix, a free tool that does not render pages will save blank or unstyled copies, so use a rendering exporter.

### Why is my downloaded website blank or unstyled?

The site builds its layout with JavaScript after the page loads, and the tool you used saved only the HTML the server sent. wget, HTTrack and most desktop downloaders never run JavaScript. A rendering exporter opens each page in a real browser first and saves what it drew.

### Can I download a website with its database or CMS?

No. Any website downloader copies what visitors can see: pages, styles, scripts, images and fonts. Databases, CMS back offices, user accounts, search, form processing and checkout run on the server and are never part of the download.

### How do I open a downloaded website offline?

Serve the folder with a local web server instead of double-clicking index.html: run npx serve . or python3 -m http.server 8000 inside the folder and open the address it prints. Files opened from file:// block many scripts and break root-relative links.

### Is it legal to download an entire website?

Downloading your own site, or a site you have permission to copy, is fine. Copying someone else's site does not give you the right to reuse its design, text, images or fonts, and you should never bypass logins, paywalls or other access controls.

## Related

- [Exported Site Shows a Blank Page? Run It Locally the Right Way](https://www.nocodeexport.com/en/blog/run-exported-site-locally): Double-clicking index.html gives a blank page and module errors. Why file:// breaks a modern export, and the one-line fix on macOS, Windows and Linux.
- [Why HTTrack Breaks on Framer, Webflow and Wix Sites](https://www.nocodeexport.com/en/blog/httrack-no-code-sites): HTTrack saves the HTML the server sent, not the page the browser built. On modern no-code sites those differ: here is exactly what goes missing.
- [How to Copy HTML Code From a Website](https://www.nocodeexport.com/en/blog/how-do-you-copy-html-code-from-a-website): Copy raw source, rendered DOM, one element, or a complete page with assets. Includes mobile steps, CSS/fonts/links, and legal limits.
