Free HTML to APK
← All articles Monetization · Guides

How to make money from an HTML app: ads, rewarded ads and in-app purchases

Earn from an app made from HTML or a website: AdMob banners and full-screen ads, rewarded ads, and Google Play in-app purchases such as a Pro unlock, coins or a subscription. What to choose, how to set it up and the Play rules to know.

6 November 2026 · 4 min read

An app made from HTML can earn money just like any other Android app. With Free HTML to APK you can add Google AdMob ads, rewarded ads and, new this month, Google Play in-app purchases, all from the builder and a few lines of JavaScript. This guide helps you choose the right model and set it up without upsetting users or Google Play.

Pick a model that fits your app

ModelWorks best forWatch out for
Banner adsContent apps people open often: news, recipes, toolsSmall earnings per view; keep them away from buttons
Full-screen adsNatural breaks: between levels, after finishing a taskToo many feel spammy and break Play rules
Rewarded adsGames and apps with a bonus to give: extra lives, coins, a free unlockAlways give what you promised
One-time purchaseA Pro version, a level pack, removing adsMust deliver real extra value
Consumable purchaseCoins, gems, hintsShow prices clearly
SubscriptionOngoing value: new content, cloud features, a serviceExplain what renews and how to cancel

Many successful small apps combine two: free with ads, plus a one-time Remove ads purchase for people who want a clean app.

Ads with AdMob

Create an AdMob account, add your app and create ad units. In the builder's ads step, paste your AdMob app ID and the units, choose banner position and how often full-screen ads may appear, and turn on Google's consent form, which the app shows in regions where it is required. Use test ads while you build, then switch to your real units before release.

Want the page to decide when an ad appears, for example after level 3? The FreeApp.ads bridge gives your JavaScript control:

// show a rewarded ad and give the bonus only if it was watched
try {
  await FreeApp.ads.showRewarded();
  addCoins(50);
} catch (e) {
  // closed early or no ad available: no reward
}

Optional mediation adds more ad networks that compete for each slot, which can raise earnings once you have steady traffic. All ad earnings go to your own AdMob account. We never add our ads to your app.

In-app purchases with Google Play Billing

For one-time products and subscriptions, Google Play handles the payment, the price in each country and refunds. You set it up in two places.

1. In Play Console

  1. Set up a payments profile (merchant account) if you have not already.
  2. Upload a build that has purchases turned on, to a testing track. Play only lets you create products once it has seen a build with billing.
  3. Under Monetize with Play → Products, create one-time products (for example pro_unlock or coins_100) or subscriptions with a base plan.
  4. Add yourself and your testers as license testers so you can buy without being charged.

2. In the builder

In the Purchases step, list your product IDs, mark which ones are consumable (coins) and which one removes ads. Then use FreeApp.billing in your page:

const billing = window.FreeApp && FreeApp.billing;

// unlock at startup (works offline)
if (billing && billing.isOwned('pro_unlock')) unlockPro();

// show the real local price
const [pro] = await billing.products(['pro_unlock']);
priceLabel.textContent = pro.price;

// buy
buyButton.onclick = async () => {
  try { await billing.buy('pro_unlock'); unlockPro(); }
  catch (e) { /* cancelled or failed */ }
};

Add a Restore purchases button that calls billing.restore(), so people who reinstall get their purchases back. The full list of calls is in the in-app purchases reference, and the templates include ready-made examples: a Pro unlock, a coin shop, a subscription, Remove ads and level packs.

The Google Play rules that matter

  • Digital goods must use Google Play Billing. Coins, unlocks and subscriptions sold inside the app go through Play, not a PayPal or card form on your page. Physical goods and real-world services (food delivery, a haircut booking) are the exception and can use your own checkout.
  • No surprise ads. No full-screen ad when the app opens, no ads that look like buttons, and no ads while the user is in the middle of a task.
  • Declare ads in Play Console. Under App content, answer Yes to "Contains ads", and complete the Data safety form honestly. AdMob collects data such as the advertising ID.
  • Clear subscriptions. Show the price, the billing period and what the user gets before they subscribe, and link to Play's subscription screen so they can cancel.
  • Children's apps have stricter ad rules. Mark ads as made for children in the builder if your audience includes kids.

Earning money means you are a trader

One more thing that is new this season: Google now asks every developer to declare whether they are a trader under EU and UK consumer law, and ads or purchases are exactly the kind of activity that makes you one. Do it before 1 February 2027. Our trader status guide walks you through it.

Start small

Launch with one banner and one rewarded ad, or one Pro unlock. Watch your AdMob and Play Console reports for a few weeks, then add more. An app people enjoy using earns more over time than an app crowded with ads on day one.

Ready to build? Open the HTML to APK converter, or start from an Earn template.

Try it yourself. Free HTML to APK turns your HTML into a signed Android app right on your phone. Free, no account, no watermark.