Drop a .zip of a static site. It unpacks and renders here, in your browser — nothing is uploaded.
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.
Drop a .zip containing a static site — an index.html plus whatever CSS, JavaScript, images and fonts it loads. The bundle is unpacked in this tab, every asset is wired back to the page that references it, and the result renders as a working site rather than a list of filenames.
That wiring is the part that usually goes wrong elsewhere. A stylesheet's url(...) is relative to the stylesheet, not to the page, so a tool that only rewrites the HTML gives you an unstyled document and the impression your bundle is broken. Both layers are resolved here, which is why fonts and background images survive.
The panel also shows which file was chosen as the entry point and everything else the bundle contains. If a site renders blank, that list is usually the answer — the entry sits one directory deeper than expected, or the build output was never included.
The unpacking rules are the same ones miinideck's real upload runs, not a separate implementation. Same entry-point choice, same handling of a bundle wrapped in one top-level folder, same rejection of paths that try to escape it. So this is a genuine rehearsal: if it renders here, it will render at a link.
Nothing is transmitted. The file is read locally, unpacked in memory, and the assets are handed to the frame as in-page references that stop existing when you close the tab. There is no link at the end of this — that is a separate step you take on purpose.
Drop the .zip here. It unpacks in your browser and renders with its assets resolved, so you see the working site without it existing at any address. That ordering matters more than it sounds: the common alternative is to publish it somewhere to find out whether it works, which means the broken version was live, however briefly, and on a public host it may also have been indexed.
Almost always because the CSS was found but the things the CSS references were not. A stylesheet's url(...) resolves relative to the stylesheet's own folder rather than to the page, so a viewer that rewrites only the HTML leaves every font and background image pointing nowhere. Both layers get resolved here. If it still renders unstyled, check the file list in the panel — the stylesheet itself may not be in the bundle.
No, and it's worth knowing which you want. An extractor shows you the contents — a file tree you can browse and download from. This renders the site those files add up to. If your question is "what's in this archive", an extractor answers it; if your question is "what does this look like", nothing but a render will.
No. The file is read by your browser, unpacked in memory, and rendered from in-page references. Nothing is sent to miinideck, written to storage, or logged, and closing the tab leaves nothing behind. That also means there is no link yet — getting one is a separate step you choose to take.
Yes. Scripts inside the bundle run, and libraries loaded over HTTPS from a CDN load normally, so interactive pages behave as they will for a visitor. The frame is sandboxed so the bundle can't reach the rest of this site, but that isolation doesn't change how the bundle itself behaves.
Because a project folder and a built site are different things. Source files like .jsx or .tsx are instructions for a build step, not something a browser can run, so there is nothing to render until that step has happened. Run your build and zip its output folder — usually dist/ or build/ — which contains the index.html and the compiled assets.
That's handled. Zipping a folder normally produces mysite/index.html rather than index.html at the root, which would break every relative path if taken literally. A single shared top-level folder is stripped, so the bundle resolves the way it would once hosted.
Yes — it's named in the panel beside the render, with the rest of the bundle listed under it. That is the fastest diagnosis when a site comes up blank or shows the wrong page: you can see immediately whether the file you expected was the one picked.
Viewing and sharing are deliberately separate here. When you want a link, miinideck hosts the same bundle at an unguessable URL that stays out of search by default. Without an account the link lasts 7 days and has no password; sign in (free) to add a password or set your own expiry. That step involves a real upload, so it only happens when you ask for it.