Skip to content

Convert website to app

Press build.
Get .apk, .ipa and .exe back.

No Xcode. No Android Studio. No Mac. Paste a URL and get a signed Android app back — website wraps land in 2 to 5 minutes. Flutter source compiles on the SDK it was written for; Windows .exe included, and iOS builds on real Apple silicon — an unsigned .ipa you re-sign with your own certificate.

Free instant preview — no build needed, no credit card.Read the 5-minute quickstart
  • One free build
  • Bring your own signing keys
  • Builds run in isolated containers
Forno, our demo storefront, rendered inside the app WebView shell
Pinned toolchains
Node 20Gradle 8.7Xcode 16NDK 26Android SDK 34Capacitor 6Electron 30

From a real build log

We built Google's archived Flutter app. Unmodified.

flutter/gallery hasn't been touched since 2023 and won't build on today's toolchain. Ours read the repo, matched the era, and returned a signed APK — without changing a line.

success
  1. $ build https://github.com/flutter/gallery.git
  2. Cloning flutter/gallery — archived by Google in 2023
  3. [c2n] Toolchain: Flutter 3.19.6 · Dart 3.3.4 — android/ applies the
  4. Flutter Gradle plugin imperatively, so we matched the 2023 era
  5. Resolving dependencies — pubspec.lock honored, 2023 pins kept
  6. Running Gradle task 'assembleRelease'…
  7. ✓ Built app-release.apk (117.6MB) in 7m 23s
  8. Verified APK signature — certificate 862ea5cd…
  9. SUCCESS — signed APK, zero changes to the repo

Public repo, our log, nothing simulated. Read how the era matching works

How it works

From URL to signed binary in three steps.

01

Point us at the source

A website URL, a Git repo, or a Shopify store. We detect the framework and pin the toolchain for you.

→ source: https://shop.example.com
→ detected: web bundle (PWA)
→ targets: Android · Windows

02

Pick your platforms

Toggle your platforms, upload signing keys once, and save it as a project for one-click rebuilds.

→ queued: android · windows
→ queue position: 1 / running
→ ETA: ~5 min

03

Take the binary

Download the signed file or upload it straight to Play Console. Webhook fires on every status change.

→ shopify-storefront.apk · 18.4 MB
→ sha256: 4f8c2a1b9e8d…
→ webhook delivered

Proof, not promises

Real repositories, built here.

Two of these are public GitHub repos — paste them into the wizard and reproduce every number yourself.

flutter/gallery

Archived Google showcase · Flutter source

  • 117.6MB signed APK
  • Flutter 3.19.6, auto-selected
  • 2026-07-07

Legacy imperative Gradle apply and a 2023 lockfile. The version matrix routed it to its own era; the repo built unchanged.

How it went

skydoves/pokedex

Native Kotlin · Compose · Hilt · multi-module

  • 8.25MB signed APK
  • 6m 08s
  • Git pipeline

A modern native Android codebase, cloned from GitHub and built with its own Gradle wrapper. No configuration on our side.

The repository

A text-only news site

Website wrap · Android

  • 27.5MB signed APK
  • built in 251s
  • push-ready

Pasted a public news URL into the wizard, pressed build. The APK ships a real WebView shell with the native bridge, not an iframe.

Try it with your URL

A 2024-era Flutter app

intl ^0.19 + flutter_localizations

  • 17MB AAB + APK
  • 284s
  • Flutter 3.24.5, auto-selected

This dependency pin used to die with “version solving failed”. Era selection resolves it natively — the pubspec is not rewritten.

The version matrix

What we actually run

The boring parts, done well.

Pinned build environment

Pinned toolchains · isolated containers

We pin Node 20, Gradle 8.7, Xcode 16, and rebuild the container fresh for every job — so the toolchain that builds your app this month is the same one that builds it next year. No drift, no “works on my machine.”

Encrypted certificate vault

AES-256-GCM at rest

iOS .p12, Apple provisioning profiles, and Android keystores are encrypted at rest and decrypted only inside the build sandbox at runtime.

Real-time log stream

Server-Sent Events · auto-reconnect

Watch Gradle and Xcode output as it happens. Cancel a runaway build with one keystroke — credits for cancelled and failed builds are refunded automatically.

Store-ready output

.apk · .aab · .ipa · .exe

Universal APK and AAB for Play Console, EXE for Windows, and unsigned IPA built on Apple silicon — re-sign it with your own certificate. Android outputs are signed with managed or customer keys.

Paths to a native app

Four ways to ship the same APK.

Every path has trade-offs. Here's where ours starts and stops.

The Mac path

Buy a Mac, install Xcode, learn signing. Maximum control, day-one cost.

Mac required
Yes
Setup time
2–4 hours
.ipa output
Yes
.apk output
Separately

The framework path

Capacitor, Cordova, React Native. Full power once you absorb a new SDK.

Mac required
Yes (iOS)
Setup time
1–3 hours
.ipa output
Yes
.apk output
Yes

The PWA path

Install button on Chrome. Free, fast, no App Store distribution.

Mac required
No
Setup time
Minutes
.ipa output
No
.apk output
No

Code2Native

Press build. Get the signed binary. Skip the rest.

Mac required
No
Setup time
Minutes
.ipa output
Yes
.apk output
Yes

Pricing

Pay for builds, not seats.

Three tiers, no contract. Move up when you need Windows or a white-label console. Stay forever on Free if one build is enough.

See full pricing & credits

Free

$0

Try Code2Native with a single build credit.

  • 1 build credit
  • Android app builds
  • iOS Web Clip
  • Native device APIs bridge
  • Push notifications ready (OneSignal)
Start Free

Pro

Most Popular
$99/ month

For teams shipping Android + iOS.

  • 30 build credits / month
  • Android + iOS (IPA) builds
  • iOS certificate upload & signing
  • No watermark
  • Priority build queue
Get Pro

Agency

$199/ month

For agencies and multi-project teams.

  • 100 build credits / month
  • Android + iOS + Windows
  • Enterprise iOS signing + OTA install
  • White-label branding & custom domain
  • No watermark
Get Agency

Start here

Your first build is free.

No credit card. Paste the URL you searched with and see it as an app in the next few minutes — the signed binary is yours either way.

Or read the 5-minute quickstart first.