Home/How to download a website
Guide

How to download a website for offline use

Five methods that work, what each one gets wrong, and how to fix the copy when it opens as unstyled black text on white.

The short answer: for one page, a browser extension is fastest and most faithful. For a whole site, use a depth-controlled crawl or wget --mirror. Chrome's built-in Save Page As is the quickest option and the one most likely to hand you a broken copy. Nothing in this list can save content that only exists behind your login.
Available in theChrome Web Store Free · no account · works offline

Method 1: Chrome's Save Page As.

Free, instant, already installed, and increasingly unreliable.

Press Ctrl+S (Cmd+S on a Mac), choose "Webpage, Complete", and Chrome writes an HTML file plus a folder of assets. On a static page from a decade ago this is all you need.

On a current page it tends to lose CSS background images, lazy-loaded pictures below the fold, and webfonts. You will not find out which until you open the copy offline. Worth trying first precisely because it costs ten seconds; do not build an archive on it.

Method 2: a browser extension.

The page is saved from inside the tab that already rendered it.

An extension has an advantage no external tool can match: it sees the page after JavaScript has run, images have resolved and the stylesheet has been applied. That is why saving a web page with one usually produces a copy that looks like the original rather than an approximation of it.

With Site Downloader, one click saves the current tab. Switching to Multi-page turns it into a full site downloader: pick how many internal-link levels to follow and everything lands in a single .zip.

The limits are worth stating plainly. It runs only where your browser runs, it cannot be scripted, and it fetches without your cookies, so nothing behind a login comes down.

Method 3: HTTrack.

The veteran. Still capable, still looks like it shipped on a CD.

HTTrack has mirrored websites since the late nineties and remains free software under the GPL. You point it at a URL, walk a wizard through scan rules and filters, and it recursively pulls the site to a local directory with links rewritten.

What you get for the dated interface is control: include and exclude patterns, bandwidth limits, resumable jobs, mirror updates. What you do not get is a browser. HTTrack fetches raw HTTP, so any page that assembles itself with JavaScript arrives as an empty shell. People searching for an HTTrack alternative are almost always running into exactly that.

Method 4: wget.

One command, endlessly scriptable, completely blind to JavaScript.

On macOS or Linux, the canonical mirror command is:

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

--convert-links rewrites references for local browsing, --page-requisites pulls the CSS and images a page needs, and --no-parent stops it climbing above the directory you named. Add --wait=1 to be polite to the server.

This is the right tool when the job needs to run unattended, on a schedule, on a machine with no screen. It is the wrong tool for a modern single-page app, and it will not respect a session you are logged into unless you go to some length with cookie files.

Method 5: online downloaders.

Paste a link, wait in a queue, get a zip.

Services that download a site for you need nothing installed, which makes them genuinely useful on a locked-down work machine. The price is that a company you have never heard of now has a log entry for every URL you archived, and free tiers ration pages, speed, or both.

They also fetch from their own servers, so anything geo-restricted, rate-limited or browser-gated on the origin site tends to come back wrong.

Which one to use.

SituationUse
One page, needs to look rightBrowser extension
A docs section or blog categoryExtension, Multi-page, depth 1–2
Full mirror you will re-sync laterHTTrack or wget --mirror
Automated, runs on a serverwget --mirror
Locked-down machine, nothing installableOnline downloader
Anything behind a loginNone of the above. Save pages manually while signed in

When the offline copy opens broken.

Unstyled text on a white background

Either the stylesheet never came down, or nobody rewrote its path. Open the HTML in a text editor and look at the <link rel="stylesheet"> tag. If it still points at https://example.com, the tool did not convert it. wget needs --convert-links; a browser extension should have done it for you.

Images missing below the fold

Lazy loading. They were never requested, so they were never saved. Scroll the whole page to the bottom before you download. That forces the browser to load them, and an extension will then pick them up.

The crawl grabbed thousands of pages

Depth was too high, or the site has a calendar, a tag cloud or paginated filters that generate near-infinite URLs. Drop a level and start from a deeper page.

Everything is a login screen

The content requires a session. Tools that fetch without your cookies (most of them, for good privacy reasons) will only ever see the logged-out version.

FAQ

Questions people ask.

What is the easiest way to download a whole website?

A depth-controlled crawl from a browser extension: open the site, switch to Multi-page, pick a link depth, download. No install beyond the extension and no configuration file.

How do I download a website for offline viewing on a laptop?

Save it to a .zip on the laptop, unzip it, and open the top-level HTML file. Everything renders from local files, so the copy works on a plane or anywhere else without a connection.

What is a good HTTrack alternative?

For most people, a browser extension. It handles JavaScript-rendered pages that HTTrack cannot see, and needs no configuration. For scripted mirroring, wget --mirror covers the same ground as HTTrack in one command.

Can I download a website that requires a login?

Not with tools that fetch without your cookies, which is nearly all of them. The workaround is to save each page individually while your browser session is active.

Does downloading a website include its database or backend?

No. You get what the server sends to a browser: HTML, CSS, JavaScript, images. Servers never expose their code or databases to visitors, so neither can be copied this way.

How do I keep an offline copy up to date?

Re-download it. HTTrack has an update mode and wget can be scheduled; with an extension you simply run the job again and keep the newer archive.

Skip the setup.
Download the site.

One click for a page, one number for a whole section.

Available in theChrome Web Store