Skip to content
Websites & files

How to turn a ZIP or folder website into a link

A real website is more than one file. Here is how to publish a folder of HTML, CSS, JavaScript, images and fonts as a single link — the folder layout that works, the ZIP mistakes that do not, and what happens to paths.

8 min readUpdated October 2026By the HTMLtoLink team
Short answer

Put index.html at the top of a folder with the rest of your files beside it, zip the folder (or drag the folder itself), and upload it on HTMLtoLink. Every file is served at the same path it has in the folder, so css/style.css becomes https://your-site.htmltolink.dev/css/style.css. Sites up to 2 MB and 1,000 files are free; paid plans allow up to 75 MB (ZIP uploads up to 25 MB).

The folder layout that just works

my-site/
├── index.html        ← the page the link opens
├── about.html        ← /about.html (or /about)
├── css/
│   └── style.css
├── js/
│   └── app.js
├── images/
│   ├── logo.svg
│   └── hero.webp
└── fonts/
    └── inter.woff2

Inside index.html, refer to files relative to the HTML file:

<link rel="stylesheet" href="css/style.css">
<img src="images/logo.svg" alt="Logo">
<script src="js/app.js"></script>
<a href="about.html">About</a>

Zipping correctly

  • macOS: right-click the folder → Compress "my-site".
  • Windows: right-click the folder → Send to → Compressed (zipped) folder (or Compress to ZIP file on Windows 11).
  • Linux: cd my-site && zip -r ../my-site.zip .

Zipping the folder itself puts everything one level down (my-site/index.html). That is fine — HTMLtoLink detects a single wrapping folder and strips it. Junk such as __MACOSX/, .DS_Store and Thumbs.db is ignored automatically.

ZIP Site Checker
Open a ZIP or folder and find missing files, wrong case and bad paths
Open the free tool

What happens on upload

  1. The ZIP is unpacked on our side; empty folders are dropped.
  2. If there is no index.html but exactly one HTML file, that file becomes the start page. With several HTML files and no index, you are asked to rename one.
  3. Executables and installers (.exe, .apk, .sh…) are refused.
  4. Each file is served with the right content type, so fonts, SVG, WebAssembly, audio and video work.

Paths: relative, absolute and "pretty" URLs

  • Relative paths (images/logo.svg, ../css/a.css) work everywhere and are the portable choice.
  • Root-absolute paths (/images/logo.svg) also work on HTMLtoLink, because every site is the root of its own subdomain. They break on hosts that put you in a sub-folder, such as GitHub Pages project sites.
  • Clean URLs: a link to /about serves about.html or about/index.html automatically.
  • Case: web servers are normally case-sensitive. HTMLtoLink falls back to a case-insensitive match so Logo.PNG vs logo.png still loads — but fix it anyway if the site may move elsewhere.

Single-page apps (React, Vue, Svelte, Vite)

Upload the build output (dist/ or build/), never the source folder with package.json. Client-side routes such as /dashboard fall back to index.html when no file matches and the site has only one or two HTML pages, so routers work. Add your own 404.html to control what other missing paths show.

Updating the site

Zip the new version and use Update content from My links. The whole site is replaced atomically at the same address — no half-updated state, and the QR code you printed keeps working.

Questions people ask

Can I upload a folder without zipping it?

Yes. On a computer, drag the folder onto the upload area or use "choose a folder". Mobile browsers usually only allow files, so use a ZIP there.

Is there a file size limit?

2 MB per site on Free (25, 50 or 75 MB on paid plans) and 1,000 files, with ZIP uploads up to 2 MB on Free and 25 MB on paid plans. Compress images to WebP and remove unused files if you are over.

Does a PHP or Node.js site work?

No — only static files are served. Export or build your site to static HTML first.

Why is my uploaded site unstyled?

The CSS path in the HTML does not match a file in the ZIP. Run the ZIP site checker; it lists every missing or wrong-case reference.

Read next

Your HTML deserves a real link

Paste code, drop a file, a ZIP or a whole folder — get a live URL with your own address, an optional password and a QR code. Free to start with Google sign-in; paid plans keep links online for good.

Turn HTML into a link