Converting

Turning a ZIP of your website into an APK

A single HTML file rarely goes wrong. A ZIP of a real site can — through folder depth, the entry page, case-sensitive names and the file:// origin. Here is how to zip so it converts first time.

7 min read Updated September 2026

Quick answer: put index.html at the top level of the ZIP with your CSS, JavaScript, images and fonts alongside it, use relative paths and lowercase filenames, keep external assets inside the archive, and avoid <script type="module">. The whole ZIP is unpacked into the app and served from the device, so the result works offline.

The shape of a good ZIP

mysite.zip
├── index.html        ← must be here, at the root
├── about.html
├── css/style.css
├── js/main.js
├── img/logo.png
└── fonts/body.woff2

The most common mistake is compressing the folder instead of what is inside it, which nests everything under mysite/. Some converters flatten a single wrapper folder; do not depend on it. Open the folder, select its contents, and compress those.

Mac users: the Finder adds a __MACOSX/ folder of metadata to archives. It is harmless and is normally dropped, but it is not part of your site.

The entry page rule

The app opens one page first and needs to know which. index.html at the root is the convention every converter understands. If your first page is home.html or main.html, rename it — or make sure you set the entry page explicitly. With no entry page found, the app launches to nothing.

Paths inside an app

A web server resolves /css/style.css from the site root. An app has no server and no root; pages come from a directory on the phone. So:

How you wrote itInside the app
css/style.cssFine — relative to the page
./img/logo.pngFine
../shared/lib.jsFine, if that folder is in the ZIP
/css/style.cssUnreliable — nothing to be root-relative to
C:\Users\me\site\style.cssNever
https://cdn.example.com/lib.jsWorks online, missing offline

Case matters on the phone

macOS and Windows usually ignore case in filenames; Android does not. <img src="Photo.JPG"> finds photo.jpg on your laptop and finds nothing on the device. It is the classic "it worked before I built it" bug. Lowercase every filename and it cannot happen.

What file:// takes away

Bundled pages are opened from a file:// origin, which browsers deliberately restrict. Three things stop working quietly:

The escape hatch is to serve bundled files from a tiny HTTP server inside the app so the origin becomes http://localhost. A converter that does this makes modern build output work; if yours does not, bundle everything into a single classic script.

HTML ValidatorCheck HTML for problems that break inside an app Open the tool
The HTML validator flagging module scripts, absolute paths and mixed content in a page
Run your entry page through the validator before you zip — most ZIP problems are visible in the HTML.

Leave these out

Everything in the archive ends up inside the app, and everything inside an app can be extracted by anyone who has it. So exclude:

The APK size calculator listing the largest files in a project by type
The largest-files list is the quickest way to spot something that should not have been zipped.
APK Size CalculatorEstimate your app's size before you build Open the tool

Pre-flight checklist

Questions people ask

What goes in the ZIP?

The contents of your site folder — not the folder itself — with index.html at the top level. Select the files inside the folder and compress that selection.

Why are images missing in the app?

Usually a path that is root-relative or absolute, or a case mismatch: Android's filesystem is case-sensitive, so Logo.PNG is not logo.png even though your laptop treats them the same.

Can I check the ZIP before converting?

Yes. Unzip it and open index.html straight from the filesystem. That reproduces the file:// origin the app uses, so missing assets and blocked modules show up there first.

How big can the ZIP be?

This converter accepts up to 5 MB of content on the free tier and 18 MB on Pro. Beyond any limit, keep the finished app small: install rates fall as size rises, and bundled video is nearly always a mistake.

Should node_modules be in the ZIP?

No. Ship only the built output your pages reference. Build-time dependencies are never needed on the device and would add hundreds of megabytes.

Read next

Ready to turn your site into an app?

Upload an HTML file or a ZIP, set your icon and name, and download a signed Android app. No Android Studio, no command line.

Open the builder