All articles

October 2, 2026 · 4 min read

Why your downloaded website is blank (or broken) offline, and how to fix it

Missing styles, empty pages, images that never load: the five usual reasons a copied website breaks when you open it from your Mac, with a fix for each.

O
Oxid Apps Team · Oxid Apps

You copied a website to your Mac, double-clicked index.html, and got something that looks nothing like the original: no styling, a blank page, broken images, or links that open the live site instead of your copy. There are only a handful of reasons this happens, and each one has a fix.

1. The page is built by JavaScript

Symptom: the page is blank, or only the header and footer show.

Sites made with React, Next.js, Vue and most site builders build the page in your browser. The HTML the server sends is close to empty, and a downloader that saves only that HTML saves the emptiness.

Fix: the copy has to come from a real browser. Use a tool that renders pages before saving them. See how to download a JavaScript website on a Mac for the options.

2. The page is opened from a file, not a server

Symptom: the copy looks right for a split second and then breaks, or it works when you upload it somewhere but not on your Mac.

When you open a file directly, the address starts with file://, and browsers treat that very strictly. Modern JavaScript modules and data requests are blocked from file:// pages for security reasons, so a script that would have worked from a web server fails silently.

Fixes:

  • Serve the folder from a local web server instead of double-clicking. If you have Python installed, python3 -m http.server inside the folder works, then open http://localhost:8000.
  • Or open the copy with a tool that serves it for you. Oxid SiteMirror's Live Mirror does this: it serves the copy from your Mac to your own browser, so the site's scripts can run as they would online.

3. Links point at the root of your disk

Symptom: styles and images are missing, though the files are in the folder.

Many sites link to their files with addresses like /assets/site.css. Online that means "from the top of this site"; opened from a file it means "from the top of your disk", where nothing is. A good downloader rewrites every link to a relative path (../assets/site.css). If yours didn't, the copy can't find its own files.

Fix: use a downloader that rewrites links, or serve the folder from a local server (as above), where / means the top of the copy again.

4. Images load only when you scroll

Symptom: grey boxes or blurry placeholders where photos should be.

Lazy-loading puts the real image address in an attribute like data-src, and a script swaps it in as you scroll. If the downloader didn't look at those attributes, or the script doesn't run offline, the real image was never saved or never shown.

Fix: choose a tool that captures lazy-loaded images, or one that scrolls each page in a browser during the capture. SiteMirror does both: it reads the common lazy-loading attributes and, when it renders a page, scrolls through it so the images load.

5. The page leaves your copy for the live site

Symptom: you open the copy and end up on the real website (or a "you're offline" error).

Some pages send you to their own full address, for example a framework falling back to a full reload of its canonical URL. A plain folder can't stop that.

Fix: a viewer that keeps navigation inside the copy. SiteMirror's Live Mirror catches a page trying to navigate to the original site and keeps it in the mirror. (We added this after finding nextjs.org doing exactly that in testing.)

The short version

If you only copy traditional sites, a downloader that rewrites links is enough. If you copy modern sites, you need two things: a capture made in a real browser, and a way to open it that behaves like a web server. Oxid SiteMirror does both in one Mac app, though not every site comes out complete. Plain-HTTP captures up to 500 pages are free; JavaScript rendering is part of the $19 licence.

Keep reading

More from the Oxid team.