Host a ZIP file as a live site.
Drop a .zip of your site or build folder and it goes live at its own link on nudgehost.site, served from the root so everything loads the way you built it.
Key points
- Upload a ZIP of a static site or SPA build and it serves at its own subdomain, like your-name.nudgehost.site.
- Stylesheets, scripts, images, and fonts load from the root exactly as the build references them.
- Client-side routing works; a direct visit to a route serves your index.html and the router takes over.
- A ZIP without an index.html shares as a one-click download instead, so a bundle of PDFs or photos still travels as one link.
A finished site is rarely one file. There's an index page, a stylesheet, a folder of images, a few scripts, and all of it has to travel together with its relative paths intact. Zipping the folder solves the travel (a refresher on how file compression works explains why the archive is smaller than the folder), and NudgeHost takes the archive the rest of the way. Drop the .zip and the contents are unpacked and served as a live site at its own nudgehost.site subdomain. Your project gets its own address, not a path on someone else's page.
Serving at the root of that subdomain is what makes exported builds work untouched. A bundle that references /assets/index-Ab12Cd34.js finds the file where it expects it, and a client-side router that owns its URLs keeps working because a direct visit to any route serves your index.html. This is the same pipeline behind the page to deploy a React build as a link, and it covers Vue, Svelte, and plain hand-written multi-page sites equally.
Served sites have two limits. An archive can hold up to 200 files, and the unpacked size counts against the file ceiling on your plan, 25MB on the free tier. The entry point is the shallowest index.html in the archive, and a single wrapper folder like dist or my-app is stripped automatically, so zipping the folder rather than its contents is fine. macOS junk like __MACOSX and .DS_Store is filtered on unpack and never reaches the served site. Password-protected archives are the one thing to avoid, since the unpacker cannot read them; leave the archive open and put a password on the link itself instead.
An archive with an index.html serves as a site; any other ZIP shares as a one-click download at its own link, which covers a bundle of PDFs, a folder of photos, or a project handoff without any ceremony, bounded only by the normal per-file cap. If you're sharing a single page rather than a project, it's quicker to publish an HTML page directly or put a Claude output online from a paste. Once the link is live, you can swap the file without changing the URL, so a client who bookmarked it always sees the newest version. Ten active links are free with no signup, and the Pro plan lifts the size ceiling when a production bundle runs heavy.
Drop a file here and get a shareable link in seconds.
Try it freeFrequently asked questions
Does NudgeHost unpack the ZIP?
Yes. The archive is unpacked and served as a live site at its own nudgehost.site subdomain, with your index.html as the entry point.
Will client-side routes work?
Yes. A direct visit to a route that isn't a file in the archive serves your index.html, so React Router, Vue Router, and friends handle it from there. Missing assets still return a real 404.
What if my ZIP has no index.html?
It uploads and shares as a plain downloadable file. The recipient gets a clean page with a download button and the archive arrives intact. Add an index.html when you want the contents served as a site; it can sit at the root or inside the single folder you zipped.
What about encrypted ZIPs?
The unpacker can't read password-protected archives, so they're declined at upload. Leave the archive itself open and put a password on the NudgeHost link instead.
Get file-sharing tips that actually help.
One email a month. No spam, no fluff.
Related tools
Other things you can do on NudgeHost.
Ready to share your file?
Free forever, no credit card needed. The whole thing takes a few seconds.
Get started free