Free tool

Folder to ZIP Packager

Choose the folder that holds your site and get back a ZIP that converts first time: index.html at the root, the wrapper folder stripped, .DS_Store, node_modules and .git left out, and a preview of exactly what went in.

Pack a folder

Files are read and zipped on your device with JSZip. Nothing is uploaded.

Choose your website folder the one that contains index.html — or drop the folder here

Why a dedicated packager?

Every operating system can make a ZIP, and every one of them makes it slightly wrong for an app build. Windows and macOS both compress the folder you click, so the archive contains my-site/index.html instead of index.html — the single most common reason a ZIP to APK conversion opens to a blank screen. macOS adds a __MACOSX folder of resource forks and a .DS_Store in every directory. Framework projects drag node_modules and .git along if you zip the project root by mistake, turning a 300 KB site into a 200 MB archive.

This tool does the opposite of all that. Pick the folder, and it walks the tree, drops the wrapper so index.html lands at the root, leaves out the junk, and writes a clean, deflated ZIP — on your device, with nothing uploaded.

Which folder to choose

The one that directly contains index.html. For a hand-written site that is the site folder itself. For a framework project it is the build output — dist/ for Vite and Vue, build/ for Create React App, out/ for a static Next.js export, public/ for Hugo, _site/ for Jekyll. Never the project root: the source files are not what the app runs, and the build output already has everything it needs.

If you choose a folder that holds a single sub-folder which in turn holds the site, "Strip the wrapper folder" removes the extra level automatically. It stops as soon as an index.html is at the root, so a site with its own folders is left intact.

What gets excluded, and why

ExcludedReason
.DS_Store, Thumbs.db, desktop.ini, __MACOSX/Operating-system metadata. Harmless in the app but pure weight.
node_modules/, .git/, .svn/Development dependencies and history. Never needed at runtime; often larger than everything else combined.
*.mapSource maps. Only useful in devtools, and they can be several times the size of the code they describe.
Hidden dot-files (.env, .gitignore, .htaccess)Configuration for servers and tools, and occasionally secrets. Untick "Skip hidden files" if your site genuinely needs one — .well-known/ is the usual exception.

After the ZIP

Run it through the ZIP to APK Checker if you want a second opinion on paths and scripts, then upload it to the builder. The size shown here as "unpacked" is the number the upload limit is measured against — 5 MB free, 18 MB Pro — and the APK Size Estimator shows what the finished app will weigh.

Frequently asked questions

Are my files uploaded?

No. The folder is read by your browser and the ZIP is written in memory on your device. The download comes from your own browser, not from a server.

Why does the folder picker say it will upload files?

That is the browser's standard wording for the folder-selection dialog. It grants the page read access to the files; nothing is transferred anywhere. You can verify in the Network tab of devtools — there are no requests.

Can I drop a folder instead of choosing it?

Yes, in Chrome, Edge and Safari. Drag the folder from your file manager onto the drop zone. Firefox supports dropping files but not whole folders, so use the picker there.

Does it work for a React or Vite build?

Yes — choose the dist or build folder, not the project root. Make sure the build used a relative base path (base: './' in Vite, homepage: '.' in CRA) or the app will look for its assets at the wrong place.

The result says no index.html at the root. Why?

Either the folder you chose does not contain an index.html directly (it may be inside a sub-folder that also contains other files, so the wrapper is not stripped), or your entry page has another name such as home.html. Rename it to index.html, or choose the folder that contains it.

Read next

Related tools

Ready to turn your ZIP into an APK?

Upload the ZIP of your HTML project, pick a name and an icon, and download a signed Android APK. Free, in the browser, no Android Studio.

Convert ZIP to APK