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.serverinside the folder works, then openhttp://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.