ZIP to APK,
without the guesswork.
Upload a ZIP of your website and get a signed Android app that runs offline. Your files are served inside the app from a real https origin — so modern builds, ES modules and fetch() just work — and when something does not, the docs say exactly why.
no watermarkno Android Studioworks offline
What does a website ZIP become?
An ordinary Android app whose screen is your website. Every file in the ZIP is copied, unchanged, into the APK's assets/web/ folder; around it sit a manifest with your package name and version, launcher icons generated from your image, a small native shell and a signature.
Nothing is rewritten or minified on the way in — the page the app shows is byte-for-byte the page you zipped. That is why the preview in the builder is trustworthy, and why a bug is always findable in your own files.
index.html about.html css/ style.css js/ app.js img/ logo.webp data/ menu.json
AndroidManifest.xml
classes.dex
res/mipmap-*/ic_launcher
assets/
app_settings.json
web/
index.html
about.html
css/ js/ img/ data/
META-INF/ + v2 signature block
Four stages from upload to icon
About five minutes, most of it waiting for the cloud build. Nothing to install on your computer.
-
01
Normalise
In your browserThe ZIP is opened in the page: macOS litter dropped, a single wrapper folder stripped, the start page chosen, the size checked. You see it running in a phone preview.
-
02
Package
In the cloudYour files go into the app's assets/web/ folder unchanged. Name, icon, colours, splash, tabs and permissions are written into the app's configuration.
-
03
Sign
In the cloudThe APK is signed with the v1 and v2 signature schemes — a shared key on free, your own on Pro, which also gets an AAB for Google Play.
-
04
Serve
On the phoneAt launch, Android's WebView loads https://appassets.androidplatform.net/web/index.html — answered from inside the APK, with no network at all.
Why does modern web code just work?
Because the app does not open your files as file://. It serves them from https://appassets.androidplatform.net/web/ — a hostname Android reserves for exactly this, answered from inside the APK. To your code it is an https website: module scripts load, fetch() reads your JSON, storage persists.
Two web-server habits do not carry over — paths that start with /, and routers that expect the server to answer every URL with index.html. Both have one-line fixes, and the build configurator writes them for your framework.
| ✓ES modules, dynamic import() | Served from a real https origin |
| ✓fetch() of bundled JSON / files | Relative to the page |
| ✓localStorage, IndexedDB | Kept across updates |
| ✓WebAssembly, Canvas, WebGL | .wasm served as application/wasm |
| ✓Audio & video | Bundled or streamed |
| ◐Camera, mic, location | Permissions step (Pro) |
| ✕Root-relative /paths | Use relative paths |
| ✕History-mode routing | Use hash routing |
| ✕Service workers | Not needed — files are local |
| ✕Web Share, Notification API | Copy link · native push (Pro) |
If it builds to static files, it converts
Each links to the doc with its settings.
Documentation, not just a button
Fifteen pages, every one checked against the app's actual runtime. Each opens with a TL;DR.
Quickstart
Prepare the folder, zip it correctly, run three pre-flight checks, build and install — the whole loop on one page.
6 min read docs / getting startedHow it works
The upload, the cloud build and the WebView runtime that serves your files from a real https origin.
8 min read docs / preparing your sitePaths reference
How every kind of URL resolves inside the app — and why a leading slash is the most common blank-screen bug.
7 min read docs / preparing your siteSPA routing
Why history-mode routes show a blank or 404 screen in the app, and the router settings that fix it.
7 min read docs / runtime behaviourAPIs, CORS & sign-in
Allow the app's origin in CORS, prefer tokens over cookies, and pick sign-in methods Google allows in a WebView.
8 min read docs / referenceTroubleshooting
Symptom → cause → fix tables for the builder, the build and the app on the phone.
8 min readTen tools for the ZIP and the APK
They run in your browser. Nothing you drop on them is uploaded.
ZIP Size Treemap
See what fills your ZIP as a treemap, by file and by type, against the upload limits
Filename Case Checker
Find links that only work on Windows and macOS — wrong letter case, missing files, root paths
CDN Localizer
Download the CDN scripts, stylesheets and Google Fonts a page loads into the ZIP, so it runs offline
Framework Build Configurator
The exact base path, router and build settings for Vite, CRA, Angular, Next.js, Nuxt, SvelteKit, Flutter web and more
ZIP Junk Cleaner
Strip __MACOSX, .git, node_modules, source maps and secrets like .env before you build
APK Inspector
Open any APK: package name, version, SDK levels, permissions, signing schemes and certificate SHA-1/SHA-256
Free to build. Pro to publish.
| Free | Pro · $5/mo | |
|---|---|---|
| Signed APK, no watermark | ✓ | ✓ |
| Zipped site size | 5 MB | 18 MB |
| AAB for Google Play | — | ✓ |
| Your own signing key | — | ✓ |
| Camera, mic, location, file uploads | — | ✓ |
| Splash, onboarding, native tabs, push | — | ✓ |
| Docs and tools | ✓ | ✓ |
ZIP to APK — common questions
What is a ZIP to APK converter?
A ZIP to APK converter takes a ZIP archive of a website — HTML, CSS, JavaScript, images and fonts — and packages it into an Android application package (APK). The files are bundled inside the app and shown in Android's WebView, so the result installs like any app and runs without a connection.
How do I convert a ZIP file to an APK?
Zip the contents of the folder that contains index.html, upload the ZIP to the builder, enter an app name, icon and package name, and start the build. A few minutes later you download a signed APK and install it on your phone. The quickstart walks through it.
Is ZIPtoAPK free?
Yes. The free plan builds signed APKs of sites up to 5 MB zipped, with no watermark and no expiry. Pro ($5/month, billed by Google Play) adds AAB output for Google Play, your own signing key, 18 MB bundles and native features.
Will my React, Vue or Angular build work?
Yes, with two settings: a relative base path so assets are not requested from the root, and hash-based routing. Module scripts work unchanged because the app serves files from a real https origin. The framework build configurator gives the exact config.
Does the app work offline?
Everything inside the ZIP works offline. Anything your pages load from other servers — CDN libraries, Google Fonts, API data — needs a connection unless you bundle it; the CDN localizer does that automatically.
Why does my APK show a blank screen?
Most often a script linked with a path that starts with /, which points outside the folder the app serves your files from, or a history-mode router that finds no route. Relative paths and hash routing fix both.
Can I publish the app on Google Play?
Yes, with Pro: Google Play requires the AAB format and a signing key you keep for every update, and Pro provides both.
Can I build an iPhone app?
No. ZIPtoAPK builds Android apps only.
Unzip it on a phone today
Upload the ZIP, name the app, pick an icon — and download a signed APK a few minutes later. Free builds, no watermark, no Android Studio.
site.zip → app-release.apk