You have a website and you want it on people's phones as an app. Search for how to do that and you will run into three terms again and again: PWA, TWA and WebView. They sound similar, they all show web pages, and they are often explained badly.
They are actually quite different, and picking the right one saves you a lot of rework. Here is what each one is, what it can and cannot do, and when it makes sense.
Option 1: a Progressive Web App (PWA)
A PWA is a website that behaves more like an app. It has a web app manifest (a small JSON file with the name, icon and colors) and usually a service worker, a script that can cache files so the site still loads without a connection. When someone visits a PWA in a supporting browser, they can install it to the home screen. It then opens in its own window without the address bar.
What is good: there is no separate app to build. You update your website and every user has the new version immediately. With a service worker you can make it work offline.
What is limited: people have to find your site first and then tap install, which many never do. A plain PWA is not a file you can upload to Google Play, and it is not an APK you can hand to someone. Access to phone features depends on what the browser exposes through web APIs.
Good fit: sites that people already visit often, where installing is a bonus rather than the main goal.
Option 2: a Trusted Web Activity (TWA)
A Trusted Web Activity is a small Android app that opens your PWA fullscreen using the user's browser, such as Chrome. It is built on the Custom Tabs protocol, so the page is rendered by the browser itself rather than by the app.
There are two requirements. First, your site and your app have to be proven to belong to the same owner. That is done with Digital Asset Links: you put a file at /.well-known/assetlinks.json on your domain that lists your app's package name and signing certificate fingerprint. Second, Google's documentation says your site should meet the criteria for adding to the home screen, which in practice means a proper PWA with a manifest. Google's tool for building TWAs is Bubblewrap, a command line tool for Node.js.
If verification fails, or the browser does not support TWAs, Google says it falls back to a Custom Tab with a simple browser toolbar instead of fullscreen. That is the most common surprise people hit.
What is good: you get a real Android app that can go on Google Play, and the content is your live PWA, so web updates show up instantly.
What is limited: you need a working PWA and control of the domain to host the asset links file. The fingerprint in that file has to match the key that signs the app users actually install, and with Play App Signing the copy from Google Play is signed with Google's app signing key, so Google suggests listing the fingerprints of both that key and your upload key. Phone features are still only what the browser offers through web APIs. And the app depends on a supporting browser being installed.
Good fit: teams that already have a solid PWA on their own domain and want it in the Play Store with minimal extra code.
Option 3: a WebView app
A WebView app is a native Android app that shows web content inside its own window using Android's WebView component. The WebView is a browser engine without the browser around it: no address bar, no tabs, just your page. Google's documentation describes it as the choice for displaying your own web content where you want flexibility in the UI.
The big difference from a TWA is control. The app decides what happens on the back button, what the splash screen looks like, whether there are native menus, what to show when the network is down, and which links open inside the app. Android also lets a WebView app connect JavaScript to native code with addJavascriptInterface, so your page can call real phone features that are not available on the web. Google's docs add a warning that matters: only expose that bridge to HTML and JavaScript you wrote yourself.
What is good: works with any website or a folder of HTML files, with no PWA, manifest or asset links file needed. Pages can be bundled inside the app so they open instantly offline. Native features are available through a bridge.
What is limited: the app has its own storage, so a user's login on your website in Chrome does not carry over. If you wrap a live site, you are responsible for keeping the app updated when something native needs to change.
Good fit: HTML apps, games, tools, small business sites, internal company apps and anything that benefits from native extras.
Side by side
Phone features
- PWA: whatever web APIs the browser supports.
- TWA: the same, since the browser renders the page.
- WebView app: web APIs plus anything the app exposes through a JavaScript bridge.
Offline
- PWA and TWA: offline works if your service worker caches what is needed.
- WebView app: bundled pages work offline with no service worker; website apps can show their own offline screen.
Google Play
- PWA: not on its own. You need to package it, usually as a TWA.
- TWA and WebView app: both are normal Android apps and can be published as an AAB.
One Play rule applies to TWAs and WebView apps alike. Google Play's spam policy does not allow apps whose primary purpose is to provide a webview of a website without permission from the website owner. Wrap your own site, or one you have permission for. Play also does not allow apps with very limited functionality, so give people a reason to install the app rather than just a bookmark.
Which one should you choose?
- You just want an install button on your site: PWA.
- You have a mature PWA on your own domain and want it on Play with live web content: TWA.
- You want native features, offline HTML, menus and full control, or you do not have a PWA: WebView app.
How Free HTML to APK does it
Free HTML to APK builds WebView apps. You can start from a website URL, HTML files, a ZIP or a folder, and get a signed APK plus an AAB for Google Play. The website builder at freehtmltoapk.com is free, needs no account and adds no watermark, and the Android app "HTML to APK: Website to App" does the same on your phone.
Your pages can use the built-in FreeApp JavaScript bridge for phone features such as vibration, notifications, the camera, QR and barcode scanning, location and sharing files. A call is as simple as this:
<button onclick="FreeApp.vibrate(30)">Tap</button>
Bundled HTML apps work fully offline, and website apps show a friendly offline page and reconnect when the connection returns. Because it is a WebView app, there is no Digital Asset Links file to set up. If you already have a PWA, its service worker keeps working when the app loads it by URL.
Read more on PWA to APK or website to app, and pick the path that fits your project.