Start here

HTML to APK: the complete guide

What actually happens when an HTML file becomes an Android app, the three inputs a converter accepts, what works offline and what does not, what it costs, and the checklist from a file on your desktop to an APK installed on a phone.

12 min read Updated September 2026

Converting HTML to an APK means packaging your HTML, CSS and JavaScript inside a native Android app whose one screen is a WebView — Android's built-in Chromium engine — pointed at those files. The files are copied into the app's assets folder, so the app works with no server and no connection; the shell adds an icon, a name, a splash screen and a signature, and the result is an .apk file that installs on any Android phone. With an online converter the whole process is: upload the file or ZIP, set a name and an icon, build, download. It takes a few minutes, needs no Android Studio, and on this site is free.

This guide is the long version — what is really happening, where the edges are, and the decisions worth making before you press build.

What an HTML app is, technically

Every Android phone ships a system component called WebView: the rendering engine from Chrome without Chrome's own interface. An HTML app is a normal Android application whose main activity holds one WebView, and whose assets/ folder holds your files. When the app starts, the WebView loads index.html from that folder the way a browser would load it from a server — except there is no server, no network and no address bar.

Around the WebView the app adds what a browser tab cannot give you:

Because the engine is Chromium, the rule of thumb is: anything that works in Chrome on Android works in the app — with one large exception. Your page is now loaded from local storage rather than an https:// origin, and a browser treats local files more strictly. That exception is the subject of the JavaScript fixes guide and of the Offline Readiness Checker; the short list is CDN links, module scripts, fetch() of local files and paths that start with /.

The three inputs

Single HTML fileZIP of a folderLive URL
What the app loadsOne document, bundledindex.html plus everything next to it, bundledYour site, from your server
Works offlineYesYesNo — shows an offline screen
Updating contentRebuildRebuildPublish on the web; app updates itself
Paths to get wrongNoneSome — must be relativeNone
Right forCalculators, quizzes, single-page tools, small gamesMulti-page sites, exported static sites, games with assets, documentationAnything with a database, accounts or frequent changes
Size limit5 MB free · 18 MB Pro5 MB free · 18 MB ProNone

This site is named after the first two. If your content is finished and should work on a plane, bundle it. If it changes daily or lives in a database, it belongs on a server and the app should load it from there — the folder guide covers the middle case, a static site that wants to be an offline app.

What you need before you start

  1. An index.html that opens correctly in Chrome from your own disk (double-click it). If it works from file:// it will very likely work in the app; if it needs a local server to run, read the fixes guide first.
  2. A viewport meta tag so the page lays out at phone width. Missing it is the most common cause of "everything is tiny".
    Single-File App StarterA phone-ready index.html scaffold with the right viewport, colours and layout Open the tool
  3. A square icon, 512×512 or larger, on a solid background.
    Square Icon PadderTurn a wide logo or a tight crop into a padded 512×512 launcher icon Open the tool
  4. A name of about twelve characters or fewer, so it does not truncate under the icon.
  5. The right to publish it. Your own work, or a client's with permission. Converting a site you do not own is a takedown waiting to happen.

Step by step: file to installed app

1. Prepare the file or folder

Single file: make sure every image, style and script is either inline or embedded (the merger and the data-URI tool do this). Folder: index.html at the root, every path relative, no CDN links, then ZIP the contents of the folder — not the folder itself. Run the result through the Offline Readiness Checker.

2. Upload it in the builder

Drop the file or ZIP. The builder unpacks it, finds index.html, checks the size against your tier and shows the page in a phone frame so you can see it before anything is built.

3. Name, icon, colour, package

App name, the square icon (every launcher size is generated), a theme colour for the status bar and splash, and a package name such as com.yourname.appname. The package name is permanent — it identifies the app forever, so choose it once and carefully.

4. Permissions and extras

Switch on camera, microphone or location only if your page uses them. On Pro, add a splash screen, onboarding slides, native bottom tabs and push notifications.

5. Build and download

A real Android project is generated around your files, compiled with Gradle and signed on the build servers. A few minutes later the APK is ready to download. Open it on an Android phone, allow installation from this source when asked, and it is on the home screen.

What it costs

Building a signed, installable APK is free here — no watermark, no expiry, no card. The paid tier exists for Google Play (which requires an AAB and, for updates, your own signing key) and for the native extras. The free versus paid guide compares this with what other converters call "free". If you would rather own the whole toolchain, the online versus Android Studio guide lays out the alternatives honestly.

Google Play, in brief

Play accepts HTML apps. It requires an App Bundle rather than an APK, a privacy policy URL, a Data safety declaration and — for apps that wrap a website — something a bookmark could not do, its minimum functionality rule. An offline HTML app clears that rule by definition: its content ships inside it. The Play checklist walks every item; the privacy policy generator and Data safety helper produce the two documents.

What an HTML app cannot do

Run in the background, use Bluetooth or NFC, draw a home-screen widget, or animate a long list as smoothly as a native one. It cannot register a service worker or load ES modules from the bundle. For a calculator, a quiz, a catalogue, a guide, a portfolio, a course, a form or a game — which is nearly everything people convert — none of that matters. For a fitness tracker that counts steps while the screen is off, you want a native app, and it is better to know that now.

Questions people ask

Is HTML to APK conversion really free?

Yes. The free tier builds signed, installable APKs with no watermark, no expiry and no card. Pro exists for Google Play (AAB output and your own signing key) and for native extras such as tabs, push and onboarding.

Does the app work without an internet connection?

A bundled HTML file or ZIP does — the files are inside the APK. A live-URL app needs a connection and shows an offline screen without one.

Do I need Android Studio or Java installed?

No. The Android project is generated and compiled in the cloud. Your computer needs a browser and the file you want to convert.

Will my JavaScript work inside the APK?

If it works in Chrome from a local file, yes. CDN scripts need a connection, module scripts and fetch() of local files are blocked, and paths starting with / point at the wrong place. Each has a simple fix.

Can I publish the APK on Google Play?

Yes, as an App Bundle (Pro). You also need a privacy policy URL and a Data safety declaration; both can be generated on this site.

Read next

Your HTML, installed on a phone today

Upload the file or ZIP, pick a name and an icon, and download a signed Android APK in minutes. Free to start — no Android Studio, no code changes, no card.

Convert HTML to APK — free