Professional HTML to Mobile App
Converter.
Instant online builder for APK and AAB (Android). Upload your ZIP, configure your native features, and get a compiled app in minutes. The easiest way to turn your web projects (HTML, CSS, JS) into production-ready mobile apps.
Supported Technologies & Frameworks
Works with any HTML5 project
HTML to Mobile App in 3 Simple Steps
Our streamlined process gets any web-based app or game into the hands of millions โ no Android Studio required.
Upload Your Files
Upload your build folder and we'll handle the native wrapper magic for you.
Configure & Build
Works with any HTML, CSS, and JS app. Simply configure your native features and trigger a build.
Get Your App
Get your compiled app binary ready for installation or publishing to app stores.
Core Features
Everything you need to ship a commercial-grade mobile app.
Appearance Controls
Easily customize orientation, status bar colors, and fullscreen mode. Perfect your app's look with simple configuration options.
Embedded HTML & Offline Ready
Your entire app is embedded in the binary. No network required. Launches instantly, works offline by default.
One-Click Plugins
Access native features like AdMob monetization, vibration feedback, persistent storage, and in-app browser. More plugins coming soon.
Store-Ready Builds
Export signed and unsigned APKs plus Android App Bundles (.aab) โ ready to install or publish straight to Google Play.
Type-Safe Bridge API
A clean JavaScript bridge with full TypeScript definitions โ autocomplete, inline docs, and compile-time safety out of the box.
Simple, Transparent Pricing
Honest, predictable pricing with a generous free tier. Pay only for what you need, cancel anytime โ no lock-in.
Simple JavaScript Bridge API
Access native features with our clean, type-safe API. No complex native code required.
AdMob
import { Ads } from '@yandeu/js-bridge/lib/plugins/ads.js' // Set ad unit IDs Ads.rewarded.setAdUnitId('ca-app-pub-XXXX/WWWW') // Load and show rewarded ad const loaded = await Ads.rewarded.load() if (loaded) { const result = await Ads.rewarded.show() }
Vibration
import { Vibration } from '@yandeu/js-bridge/lib/plugins/vibration.js' // Simple vibration (500ms) Vibration.vibrate() // Pattern: [wait, vibrate, wait, vibrate, ...] await Vibration.vibrateWithPattern( [0, 500, 100, 500] )
Device & Package Info
import { WebView } from '@yandeu/js-bridge' // Get device info const device = await WebView.deviceInfo() console.log(device.data.android?.model) // Get package info const pkg = await WebView.packageInfo() console.log(pkg.data.version)
Persistent Storage
import { WebView } from '@yandeu/js-bridge' // Save data await WebView.persistentStorage .setItem('token', 'abc123xyz') // Retrieve data const token = await WebView.persistentStorage .getItem('token')
Full TypeScript Support
Our bridge API includes complete TypeScript definitions for type-safe development. Get autocomplete, type checking, and inline documentation in your IDE.
Simple, Transparent Pricing
Early access pricing during Public Beta.
Free
Forever free
-
3 Builds / Day
-
10 MB Size Limit
-
Signed & Unsigned APK (.apk)
-
Core Plugins + Vibration
-
Watermark Included
Starter
Billed $36.00 yearly
-
10 Builds / Day
-
20 MB Size Limit
-
Signed & Unsigned APK (.apk)
-
Android Release (.aab)
-
Core Plugins + Vibration
-
Watermark Removed
Developer
Billed monthly
-
30 Builds / Day
-
100 MB Size Limit
-
All Android Builds
-
All Plugins Access
-
Watermark Removed
* All prices are exclusive of VAT
Developer Plan: Just $57/year
While we expand our list of plugin, lock in the Developer plan for just $57 per year (normally $192/year). Apply the coupon code during checkout.
USD57
EUR57
Apply at checkout on app.html2app.dev/subscriptions for yearly subscriptions.
The Story Behind
html2app
html2app started as a love letter to a tool I lost โ and a mission to make shipping HTML5 games to mobile feel effortless again. Here's how it came to be.
-
2016
The spark
I started learning JavaScript, following countless Phaser.js tutorials and building little games for fun. Along the way I discovered Intel XDK, PhoneGap Build, and Cocoon.io โ services for wrapping HTML5 games into native apps.
-
The magic
Cocoon.io just worked
Cocoon.io was my favorite. ZIP your game, tweak a few settings, hit build โ and suddenly your creation was running on your phone. No Xcode. No Android Studio. Just pure, effortless game development.
-
2019
The magic disappears
When Ludei shut down the service, it felt like losing a good friend. Shipping an HTML5 game now meant wrestling with Capacitor configs, hunting for compatible plugins, and โ for iOS โ buying a Mac.
-
2022
Bringing it back
I built html2app to bring that feeling back โ a tribute to the golden era when building with Phaser and shipping to mobile felt genuinely fun. From May 2022 through 2025 it was completely free, built on Capacitor.
-
2025
A new foundation
As demand grew, the platform evolved to Flutter and infrastructure costs grew with it. Basic features now start at $3/month to keep builds fast and reliable for everyone.
-
Today
The Developer experience
The Developer Plan ($19/month) isn't an upgrade to the old platform โ it's a different experience, with a full plugin ecosystem and advanced capabilities the old service never had. During beta you can lock in Developer for just $57/year โ a 70% discount.
If you share those nostalgic feelings about the Phaser + Cocoon.io days, welcome home. Let's make shipping HTML5 games to mobile fun again.
html2app is still in beta, and there's much more to come. I'd love for you to join me on this journey as we work together to make building and publishing HTML5 games (and apps!) pleasant again.
You Own Your App
Most HTML-to-APK services keep the keys to your app โ literally. They control the signing credentials and app ID, so the day you want to switch tools, you're stuck. html2app works the other way around.
You bring your own signing keys and app ID, so your app's identity is yours from day one. Outgrow html2app? Move to a custom Capacitor setup โ or any toolchain โ and keep updating the same Play Store listing. Your web code comes with you; native plugins differ between tools, but your ownership never does.
Same signing key, same app ID โ publish updates to the same Play Store listing, no matter which tool you use.
Your Signing Keys
Bring your own keystore. We never hold your app's identity hostage, so you're always free to sign and ship builds yourself.
Your App ID
You choose the application ID. Your package name belongs to you โ the key to updating your app on the store, now and years from now.
A Real Exit Path
Move to a custom Capacitor setup anytime and keep updating the same Play Store listing. No new app, no lost reviews, no lock-in.