Got a folder of HTML, CSS, JS, and assets? Zip it and drop the ZIP — miinideck unpacks it and serves the whole bundle as a live page behind one private link. Internal links, images, and scripts all resolve, so a multi-file site runs the way it should, privately, in seconds.
Drop a .zip bundle here
Unpacked and rendered in your browser. The bundle is not uploaded, stored, or logged.
The rendered bundle will appear here.
Drop a .zip bundle here
Unpacked and rendered in your browser. The bundle is not uploaded, stored, or logged.
Try it now
Drop a file — get a private link in seconds. No sign-up.
Drop an HTML, ZIP, PDF, PNG or JPEG file, or click to choose.
One file, or a ZIP bundle. Max 3 MB.
Up to 3 MB, link self-destructs after 7 days. Sign up free to keep links forever and store more.
| Limit | |
|---|---|
| Unpacked size | 3 MB with no account · 10 MB Free · 25 MB Solo · 50 MB Studio |
| Files the browser can use | Up to 200 per bundle |
| Entries scanned | Up to 2,000 (including skipped ones) |
| Compression ratio | Over 100:1 is refused |
| Password-protected ZIPs | Refused — use a link password instead |
| Source files (.jsx, .tsx, .vue …) | Skipped — upload the build output |
| .pdf inside a ZIP | Skipped — upload a PDF on its own instead |
Zip the folder — the entry HTML plus its CSS, JS, images, fonts, and any other assets — and drop the ZIP in. miinideck unpacks it and serves the entry page with relative paths intact. If your zip tool wrapped everything in one named folder (mysite/index.html, mysite/style.css), that wrapper is stripped automatically, so the relative paths inside your HTML still resolve. That single detail is the most common reason a zipped site goes live with every image broken.
You get one private, unguessable link for the whole bundle. It's no-indexed by default, so it stays off search, and the viewer opens it in any browser with no account.
Add a password or an expiry, and re-upload an updated ZIP whenever the site changes — the link stays the same across versions, so a bookmark you already sent keeps opening the current build.
Drop the ZIP into miinideck. It unpacks the bundle and serves the entry HTML with the rest of the files (CSS, JS, images, fonts) alongside it, so the whole multi-file site runs behind one private link — no manual unzipping, no server to set up.
Yes. miinideck preserves the folder structure and serves relative paths intact, so navigation between pages and references to images, fonts, and scripts all resolve correctly.
An entry HTML file (commonly index.html) plus everything it references. Anything that runs in the browser works; the bundle just can't include a backend server, since miinideck serves static files, not a running server.
A root index.html (or index.htm) always wins. Without one, the shallowest HTML file in the bundle becomes the entry page, and ties are broken alphabetically so the choice is predictable rather than random. If the wrong page opens, the fix is to rename the one you want to index.html and put it at the top of the ZIP.
Because it contained source files a browser cannot run — .jsx, .tsx and friends — which usually means the whole project got zipped instead of the build output. Run your production build and zip just the output folder (normally dist/ or build/): the compiled JS and CSS, no source files and no node_modules. It also helps to make asset paths relative so they survive being served from a sub-path.
A single-threaded export behaves like any other static bundle. A multi-threaded one will not start here, because that needs SharedArrayBuffer, which browsers only hand out on a cross-origin-isolated page — and the viewer does not send the COEP header that isolation requires. Re-export without threads, or use a host that lets you set those headers yourself, such as Vercel or Netlify. We would rather say that plainly than let you find out after the upload.
Yes — the link is unguessable and no-indexed by default. A password is free on every plan, including the free one, and even an upload made with no account at all can take one. On the free plan links run for 7 days, except one always-on link you can keep; Solo and Studio drop the forced expiry and raise the size cap.
No. They get the site running in their browser, not the archive. If what you actually need is to hand someone a .zip to download and unpack, a file-transfer service is the right tool for that — this is for turning the bundle into a page people can open.
The ones a browser uses: HTML, CSS, JavaScript (including .mjs), JSON, SVG, PNG, JPEG, GIF, WebP, AVIF, web fonts (WOFF, WOFF2, TTF, OTF, EOT), plain text, Markdown, icons and source maps. Everything else is left out — including source files that need a build step and PDFs, which are skipped inside a bundle.
The limit goes up with the plan — no account 3 MB, Free 10 MB, Solo 25 MB, Studio 50 MB — and for a ZIP it applies twice: to the file you upload and to everything inside it once unpacked. A compressed 8 MB bundle that unpacks to 14 MB won't fit the free plan, so check the unzipped size of your build folder rather than the size of the .zip. Encrypted (password-protected) ZIPs are refused, because the contents can't be unpacked and served — zip it again without the archive password and use the link password instead.
No card to try, no sign-up to get a link. Sign up free to keep links forever and store more.