Get the folder structure right
The single most common reason a ZIP app opens to a blank screen is structure. The builder looks for index.html at the top level of the ZIP.
my-site.zip
├── index.html ← entry page, at the top level
├── about.html
├── css/style.css
├── js/app.js
└── img/logo.png
If you right-click the folder itself and compress it, many systems create my-site.zip/my-site/index.html — one level too deep. Instead, open the folder, select everything inside it, and compress the selection.
Use relative paths
Inside the app your files are served from a local location, not from your domain. Paths must be relative to the page that uses them:
- ✅
<link href="css/style.css">,<img src="img/logo.png">,<a href="about.html"> - ❌
/css/style.css(root-absolute),C:\Users\...orfile:///...
File names are case-sensitive on Android: Logo.png and logo.png are different files, even if your computer treated them as the same.
Sites built with frameworks
For React, Vue, Svelte or Vite projects, zip the build output (usually dist/ or build/), not the source. Set the base path to relative (for Vite, base: './') and prefer hash-based routing so deep links resolve to index.html.
Keep the ZIP small
The free plan bundles up to 5 MB; Pro allows 18 MB. Compress images (WebP is well supported in Android WebView), remove source maps and unused files, and avoid shipping videos inside the app — stream them instead.
Build the APK
- Install HTML & ZIP to APK Builder.
- Choose ZIP and pick your file.
- Set the app name, icon, theme colour and package name.
- Build, download and install the APK, then test every page in flight mode.
Pre-flight checklist
| Symptom in the app | Likely cause | Fix |
|---|---|---|
| Blank white screen | index.html is inside a sub-folder of the ZIP | Zip the folder's contents, not the folder |
| Page loads without styles | Root-absolute paths (/css/…) | Change to relative paths (css/…) |
| Some images missing | File-name case differs (Photo.JPG vs photo.jpg) | Make names match exactly |
| Works online, breaks offline | Libraries or fonts loaded from a CDN | Bundle them — see offline guide |
| Links to sub-pages 404 | Server-style routes (/about) with no file | Link to about.html or use hash routing |
| Build rejected as too large | Bundle over 5 MB (free) or 18 MB (Pro) | Compress images, remove unused files |
Creating the ZIP on each system
- Windows: open the folder, press Ctrl + A, right-click → Send to → Compressed (zipped) folder.
- macOS: open the folder, press ⌘ + A, right-click → Compress. Finder also adds a hidden
__MACOSXfolder; it is harmless, or remove it withzip -d my-site.zip "__MACOSX/*". - Android: in Files by Google or your file manager, select the files inside the folder → Compress.
- Command line:
cd my-site && zip -r ../my-site.zip .
Make your APK now — free
No Android Studio, no code, no watermark. Pick what you are starting from:
Frequently asked questions
Why does my ZIP app show a blank screen?
Usually index.html is inside an extra folder in the ZIP, or the page uses root-absolute paths like /css/style.css. Put index.html at the top level and use relative paths.
Can I convert a React or Vue app to APK?
Yes. Zip the production build folder (dist or build) with a relative base path and hash routing, then build it like any other website ZIP.
Does a ZIP app need internet?
No. Every file in the ZIP is bundled into the APK. Only resources loaded from external URLs need a connection.