Cloud build service · HTML → APK/AAB

Ship your web app to Google Play in minutes

Upload your ZIP — HTML, CSS & JS and all — and download a production-ready APK or AAB. No Android Studio, no native code. Works with any framework or game engine.

  • Image No Android Studio
  • Image Signed APK & AAB
  • Image Free tier — no credit card
html2app · new build
📦 Drop your app ZIP here HTML · CSS · JS — any framework or engine
Image Start building free Free tier · no credit card · build in minutes

Supported Technologies & Frameworks

Works with any HTML5 project

HTML5
Vanilla JS
React
Vue
Pixi.js
Angular
Ionic
Onsen UI
Svelte
Three.js
HOW IT WORKS

From HTML to a Real Native App

Three simple steps. Drop in your web project, configure it, and download a store-ready app — no Android Studio, no Xcode, no native code.

01
Image

Upload Your Files

Drop in your ZIP — HTML, CSS, JS and assets. Any framework, any engine.

📦 my-app.zip
Image index.html Image style.css Image game.js Image assets/
02
Image

Configure & Build

Set your app name, icon and orientation, then build. We wrap it in a real native shell.

Unzipping project… Injecting native wrapper… Signing package… Packaging app.aab…
buildrelease · .aab
03
Image

Ship to the Store

Download a signed APK or AAB, ready to publish to Google Play. iOS coming soon.

Installed ✓
Your finished app on a phone
Google Play Apple App Store (coming soon)
FEATURES

Core Features

Everything you need to ship a commercial-grade mobile app.

Image

Appearance Controls

Easily customize orientation, status bar colors, and fullscreen mode. Perfect your app's look with simple configuration options.

Image

Embedded HTML & Offline Ready

Your entire app is embedded in the binary. No network required. Launches instantly, works offline by default.

Image

One-Click Plugins

Access native features like AdMob monetization, vibration feedback, persistent storage, and in-app browser. More plugins coming soon.

Image

Store-Ready Builds

Export signed and unsigned APKs plus Android App Bundles (.aab) — ready to install or publish straight to Google Play.

Image

Type-Safe Bridge API

A clean JavaScript bridge with full TypeScript definitions — autocomplete, inline docs, and compile-time safety out of the box.

Image

Simple, Transparent Pricing

Honest, predictable pricing with a generous free tier. Pay only for what you need, cancel anytime — no lock-in.

Image Less than your daily coffee

A Professional Mobile Presence for the Price of a Coffee

Build unlimited apps and games and ship them straight to the Google Play Store — all for just $5/month (or $36/year). No Android Studio, no surprises.

A polished mobile home screen filled with apps and games built using html2app
Image

Unlimited Apps

Build as many apps as you want — no per-app fees.

Image

Play Store Ready

Signed .aab bundles, ready to publish to Google Play.

Image

Instant Cloud Builds

Upload your ZIP and get a real binary in minutes.

Image

No Lock-In

Cancel anytime. Your code stays 100% yours.

Image

Apps & Games

Phaser, Three.js, Pixi.js, React — anything HTML5.

Image

Store-Grade Output

Production APK & AAB, signed and release-ready.

Image
$5 /month
or $36/year (= $3/month) · free tier available
Start Building Free Image
JS BRIDGE API

Talk to the Device in Plain JavaScript

One clean, type-safe API sits between your web code and the native platform. Pick a capability, hit Run, and watch the bridge fire.

vibration.js
import { Vibration } from '@yandeu/js-bridge/lib/plugins/vibration.js'

// Buzz once (500ms)
Vibration.vibrate()

// Custom pattern: [wait, buzz, wait, buzz]
await Vibration.vibrateWithPattern([0, 500, 100, 500])
9:41
Image Buzzing…
ads.js
import { Ads } from '@yandeu/js-bridge/lib/plugins/ads.js'

// Point at your rewarded ad unit
Ads.rewarded.setAdUnitId('ca-app-pub-XXXX/WWWW')

const loaded = await Ads.rewarded.load()
if (loaded) await Ads.rewarded.show()
9:41
SCORE 1280🪙 120
Game running…
Rewarded Ad Image ✓ Reward earned · +50 🪙
device.js
import { WebView } from '@yandeu/js-bridge'

// Read live device + package details
const device = await WebView.deviceInfo()
const pkg = await WebView.packageInfo()

console.log(device.data.android?.model, pkg.data.version)
9:41
modelPixel 8 osAndroid 14 appIdcom.example.app version1.0.0 (1)
storage.js
import { WebView } from '@yandeu/js-bridge'

// Save data that survives app restarts
await WebView.persistentStorage.setItem('token', 'abc123xyz')

// Read it back later
const token = await WebView.persistentStorage.getItem('token')
9:41
persistentStorage
  • theme"dark"
  • level7
  • token"abc123xyz"
Saved ✓
PRICING

Simple, Transparent Pricing

Pay for what you need.

Free

$0 /mo

Forever free

  • Image 4 builds / Day
  • Image 10 MB Size Limit
  • Image 2 Projects
  • Image Unsigned APK (.apk)
  • Image Core Plugins + Vibration
  • Image Watermark Included Info
Start for Free

Developer

$19 /mo

Billed monthly

  • Image 50 Builds / Day
  • Image 200 MB Size Limit
  • Image Unlimited Apps
  • Image All Android Builds
  • Image All Plugins Access
  • Image Watermark Removed
Get Developer

* All prices are exclusive of VAT

Image 70% OFF

Developer Plan: Just $57/year

While we expand our list of plugins, lock in the Developer plan for just $57 for one year (normally $192/year). Apply the coupon code during checkout.

USD Coupon USD57
EUR Coupon EUR57

Apply at checkout on app.html2app.dev/subscriptions for yearly subscriptions.

ABOUT HTML2APP

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Nov 2025

    The Flutter transition

    As demand grew, infrastructure costs climbed. We started transitioning to Flutter to improve performance and reliability. During the transition, the service ran in parallel with a beta sandbox preview.

  6. June 2026

    Sustainable pricing arrives

    The new Flutter platform is live with two tiers: Starter ($5/month) for basic builds, and Developer ($19/month) for a growing plugin ecosystem. Lock in the Developer plan for only $57 for one year while we increase the list of plugins — a 70% discount.

  7. Today

    Building the plugin ecosystem

    We're expanding native capabilities based on what you need most. Your feedback shapes what comes next — from monetization tools to device features. Join us in making HTML5 development on mobile more powerful than ever.

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.

Image

Join the journey

Occasional updates on new plugins, features, and the road ahead. No spam — unsubscribe anytime.

Subscribe to the newsletter
Yannick Deubel
Yannick (@yandeu) Creator of html2app · Software Developer @yandeu on GitHub →
NO LOCK-IN

You Own Your App. For Good.

Most HTML-to-app services quietly hold your signing key and app ID hostage. The day you want to leave, you can't — you'd have to publish a brand-new app and abandon every review, rating, and install you earned. html2app is built the opposite way.

You bring your own signing key and choose your own app ID, so your app's identity is yours from the very first build. Outgrow us? Move to a custom Capacitor, Flutter, or native Kotlin/Java setup and keep shipping updates to the exact same Google Play listing. Your app outlives html2app.

Image One Google Play listing — your reviews, ratings & installs never reset
  1. Image html2app You're here
  2. Capacitor Switch anytime
  3. Flutter Switch anytime
  4. Native Kotlin / Java Switch anytime
Image Your signing key and app ID travel with you — every step of the way
Image

Your Signing Keys

Bring your own keystore. We never hold your app's identity, so you can sign and ship builds yourself — with or without us.

Image

Your App ID

You pick the package name. It's the master key to your store listing — today, and ten years from now.

Image

A Real Exit Path

Move to Capacitor, Flutter, or fully native whenever you like and keep updating the same listing. No new app, no lost reviews, no migration tax.

Image

It Outlives Us

If html2app disappeared tomorrow, your published app keeps running and updating. You rely on us for convenience — never for survival.

You stay because html2app is the easiest way to ship — never because you're trapped.

ROADMAP & TRANSPARENCY

What's Coming Next

No vapourware. Here's exactly what's live today, what we're building right now, and what's further out — so you always know where we're investing.

Image

You buy what exists today

Subscribing gets you the features that are live right now, as they are — stable, working builds today, not promises about tomorrow.

Live now

Shipping today

  • ImageSigned APK & AAB output
  • ImageCloud build service — no Android Studio
  • ImageCore plugins: AdMob, Vibration, Storage, Device Info
  • ImageEmbedded, offline-ready apps
Building now

More native plugins

The native plugin ecosystem is growing fast. On the way:

  • In-App Purchases
  • Game Services
  • Social Sharing
  • Local Notifications
On the horizon

iOS support

  • ImageBuild iOS apps from the same HTML5 project

It needs dedicated Apple hardware and signing, so we're treating it as a serious long-term goal — not an empty promise.

Image

Platform stability is always priority #1. Reliable builds and compatibility with the latest Android and Flutter releases come before any new feature.

About "Coming Soon": these features are in active development, aren't included in your current subscription, and don't come with delivery dates. The mobile ecosystem moves fast — if something breaks upstream, we'll do our best to fix it and always be upfront about what's working and what's not.