# Host a static site from a ZIP file

To host a static site from a ZIP, zip the built output of your site and drop the archive here and it is extracted and live at an HTTPS address in seconds. Most ZIP uploads that fail do so for one of three reasons, and all three are listed further down this page.

## What should be inside the ZIP?

The finished output of your site and nothing else: an index.html at the top level, plus every CSS, JavaScript, image and font file it references, in the folders it expects them in. If you unzip your archive and immediately see index.html, it is shaped correctly.

The distinction that causes the most trouble is source versus output. A project folder contains src, package.json, a config file and often node_modules. None of that is a website; it is the recipe. The website is what appears in dist, build, out, _site or public after you run the build command. Zip the contents of that folder. The deploy guides name the command and the output folder for 23 frameworks so you do not have to guess which one your tool uses.

The second distinction is what you selected before compressing. Right-clicking a folder and choosing "compress" produces an archive with that folder inside it, so the site ends up one level deep. Droply unwraps a single wrapping folder automatically, but an archive with several folders and no index.html at any obvious root cannot be guessed at, and the published site will tell you that rather than serving a file listing.

## How it works

1. **Zip the built output.** Select the CONTENTS of your build folder, index.html and everything beside it, and compress those. Do not zip the project folder that contains src and node_modules.
2. **Drop the archive.** The ZIP is extracted with its folder structure intact, so every relative path to a stylesheet, script, image or font resolves as it did locally.
3. **Share the address.** The extracted site is live over HTTPS. Upload a new archive whenever the build changes and the address stays exactly where it was.

## What you get

### The three things that go wrong, and what to do

Almost every failed ZIP upload in this category is one of these. None of them is a hosting problem, which is why a host that only says "upload failed" is not much help.

- No index.html at the root. The archive has files but no entry page, so there is nothing for the address to open. Rename your main page to index.html.
- The source project instead of the build. If node_modules or src is in there, you zipped the recipe. Run the build and zip its output folder.
- An extra wrapping folder. Compressing a folder puts it inside the archive; select its contents instead. A single wrapper is unwrapped for you, but two levels are not.

### Structure is preserved exactly

Extraction keeps your folder layout, so the site behaves the same way it does when you open it locally. Nothing is rewritten, minified or reorganised.

- Relative paths such as ./assets/app.css and ../images/logo.svg resolve as written.
- Nested routes work: /about/index.html is served at /about.
- Absolute paths that begin with a drive letter or file:// point at your machine and will not resolve for a visitor.

### The archive is checked, not just extracted

A ZIP is the easiest way to publish something you did not mean to, because you never look at all of it. Extraction is sandboxed and the result is read before you find out from someone else.

- Warns about a .env, a .git directory, a private key or an API key in a bundled script.
- Executables and installers are refused rather than served.
- Runs on every plan including free. See how the check works.

### Rebuild, re-zip, republish

The address is tied to the site, not to the archive, so the second upload lands where the first one did.

- Up to 15 publishes a day on the free plan.
- Each archive becomes its own version; from Pro you can return to any of them.
- The switch is atomic, so a visitor never sees a half-extracted site.

## What the free plan includes

A ZIP upload costs nothing on the free plan, and the plan does not expire or need a card.

- 1 live site on a real free plan, not a trial of a paid one, and no card to start.
- Up to 25 MB per upload and 25 MB of storage across the account.
- 5,000 visits and 5 GB of traffic a month.
- HTTPS with a real certificate, issued and renewed for you.
- Up to 15 publishes a day, so you can iterate without asking permission.
- The deploy-time security check, which reads what you published and warns about a stray .env file, a .git folder, a private key or an API key left in your JavaScript.
- A small Droply badge in the corner of the page. Removing it starts on Starter.
- Free sites are served noindex, so search engines do not list them. Search visibility starts on Starter.
- ZIP extraction is sandboxed, and executables and installers are refused rather than served.

## Compared with Netlify Drop

Netlify Drop is the closest thing to this workflow at a large host, and it is a genuinely good on-ramp to Netlify. The rows below are where the two differ for someone who just wants the ZIP online.

- **Anonymous drop.** Droply: Not offered. Publishing requires an account, so every hosted file has an owner. Netlify Drop: Yes, and the URL is protected with a temporary password until you claim it.
- **Is the link yours straight away?.** Droply: Yes. Publishing needs an account, so there is nothing to claim afterwards. Netlify Drop: No. An anonymous drop creates a temporary project you have one hour to claim.
- **Single HTML file.** Droply: Accepted on its own. Netlify Drop: The quickstart documents a project folder, a zip or a pre-built output folder; a loose HTML file is not listed.
- **Size guidance.** Droply: 25 MB per upload on free; substantially higher on paid tiers. Netlify Drop: Deploys under 50 MB work best, and individual files over 10 MB may cause the deploy to get stuck. Larger projects are told to use the CLI.
- **Builds your project for you.** Droply: No. You build locally and upload the output. Netlify Drop: Yes, it can build a dropped project.
- **Redeploy to the same address.** Droply: Yes, up to 15 times a day on free. Netlify Drop: Yes. Dragging an updated folder publishes it as the latest production version of the same project.
- **PDF and document hosting.** Droply: First class, with in-browser viewers and 96 accepted file types. Netlify Drop: Not a product feature.
- **Security check on deploy.** Droply: Every publish, every plan. Netlify Drop: Not part of Drop.

Netlify Drop details come from Netlify's own documentation, checked 8 September 2026: the Netlify Drop quickstart (drag-and-drop shapes, the temporary password on an unsigned-in drop, the 50 MB and 10 MB size guidance, redeploying to the same project), the create-deploys page (\"a temporary project with a live URL that you can claim within one hour\"), the password-protection page and the manage-deploys page. Product features can change.

## When Droply is the wrong choice

A ZIP upload is a publishing step, not a build system. If you want the host to do more than extract and serve, you want a different host.

- You want the platform to run npm install and npm run build for you. That does not happen here: bring the built output.
- Your archive is a source project you cannot build locally. Nothing here will turn it into a site, and the deploy guides are the fastest way to get it built.
- You need a database, a login system, or code that runs on the server. Droply serves files; it does not execute your application.
- You want a build to run on every push to a repository. Droply has no Git integration and no CI: you build locally and upload the result.
- You are running WordPress or another PHP application. A static export of it can be hosted here, but the application itself cannot.

## Frequently asked questions

### What should be inside the ZIP?

The built output: an index.html at the top level plus every CSS, JavaScript, image and font file it references, in their original folders. If unzipping the archive shows index.html straight away, it is correct.

### Can I upload a React, Vite or Astro project as a ZIP?

Upload the build output, not the project. Run the build on your machine and zip the contents of the folder it produces, which is usually dist, build or out. The deploy guides name it per framework.

### Why does my ZIP upload say there is no entry page?

Because there is no index.html at the root of what was extracted. Rename your main page to index.html, or re-zip so that it sits at the top level rather than inside another folder.

### Do I zip the folder or its contents?

The contents. Compressing a folder puts that folder inside the archive and pushes your site one level down. A single wrapping folder is unwrapped automatically, but it is cleaner to select the files themselves.

### Are relative asset paths preserved?

Yes. The archive is extracted with its structure intact, so ./assets/app.css and ../images/logo.svg resolve exactly as they do locally. Absolute paths pointing at your own machine will not.

### How large can the ZIP be?

The free plan accepts up to 25 MB per upload with 25 MB of storage overall; paid tiers raise both substantially. The pricing page lists every limit.

### Is the ZIP extracted safely?

Extraction is sandboxed, executables and installers are refused, and the extracted result is scanned. If something in the archive should not be public, such as an .env file or a private key, you are told after the site goes live.

### Can I replace the ZIP later?

Yes. Upload a new archive and it becomes the live version at the same address. Each upload is kept as its own version, and from Pro you can switch back to any earlier one.

### What if my ZIP contains several sites?

It will be published as one site with those folders as subpaths, which is rarely what people want. Zip and publish each site separately so each gets its own address and its own version history.

## Related

- [Static Website Hosting](https://droply.host/static-website-hosting)
- [HTML Hosting](https://droply.host/html-hosting)
- [Client Website Preview](https://droply.host/client-website-preview)