Quick answer: Publishing to the Apple App Store costs $99 per year for the Apple Developer Program, recurring for as long as your app stays listed. Publishing to Google Play costs a $25 one-time registration fee. Everything else is optional in theory and unavoidable in practice: a domain ($10/yr, needed for the mandatory support and privacy policy URLs), a landing page ($19/yr), and an icon. A realistic first-year total for both stores is roughly $150–$200, with a Mac being the one genuinely large cost if you are shipping to iOS and do not own one.
| Line item | Cost | Required? |
|---|---|---|
| Apple Developer Program | $99/year, recurring | Yes, for iOS |
| Google Play Console | $25 one-time | Yes, for Android |
| Domain | ~$10/year | Effectively yes — support & privacy URLs |
| One-page site | ~$19/year | Effectively yes |
| App icon (1024×1024) | $0–$40 | Yes, some version of it |
| Mac for iOS builds | $0 or $600+ | Yes, for iOS |
Search this question and you get two numbers: $99 and $25. Both are correct, and both leave out the costs that actually surprise people — the ones that are not store fees at all, but that block your submission just as hard.
The two fees everyone quotes
Apple Developer Program — $99 per year. Recurring. It covers as many apps as you like on the account, and it is required to submit to the App Store at all. The recurring part matters: this is not a launch cost, it is a subscription for as long as your app is listed. Let it lapse and your apps come off sale.
Google Play Console — $25, one time. Per developer account, not per app. No renewal. Android is roughly a quarter of the price in year one and free thereafter.
Over five years with an app on both stores: $520. Of which $495 is Apple.
The costs that are not fees but are still mandatory
A domain — around $10 a year. Apple will not review your app without a working support URL, and both stores require a privacy policy URL. Those are live web pages. On top of that, your package ID uses reverse-domain notation — com.yourdomain.yourapp — and it is permanent once published, so deriving it from a domain you do not own is a mistake you cannot undo. No store lists a domain as a requirement; every store makes one necessary.
Check the domain for your app name →
A page to put at that domain — around $19 a year. One page with your app description, a support section and a /privacy page clears three blocking listing fields. If you do not want to build it, Carrd does it without code for about the price of the domain.
An app icon — $0 to $40. A 1024×1024 icon is mandatory. If you have design skills, free. If you do not, a logo generator is the cheap, fast route: TurboLogo lets you generate and edit for free and only charges when you download the files, so an unusable result costs nothing but time. A freelance designer is the other end of the range and starts in the hundreds.
A Mac — $0 or $600 and up. Building and submitting an iOS app requires macOS tooling. If you already own a Mac, this is free. If you do not, it is by far the biggest number on this page, and it is the reason a lot of first launches ship Android first.
Realistic first-year totals
| Scenario | First-year cost |
|---|---|
| Android only, own icon, DIY page | ~$35 |
| Android only, generated icon and site builder | ~$75 |
| Both stores, own Mac, generated icon and site builder | ~$175 |
| Both stores, no Mac | ~$775+ |
The number people expect to see is $99. The number they actually pay, doing both stores properly, is closer to $175 — and every dollar above the store fees is something the store requires without charging for it.
What is not on this list
Marketing, servers, and anything your app depends on at runtime. If your app calls a paid API or needs a backend, that is a real monthly cost and it is entirely specific to what you built. This page is the cost of publishing, which is a fixed and surprisingly knowable number — unlike the cost of running.
Spend the cheap money first
Of everything above, the domain is the smallest cost and the one that unblocks the most: the support URL, the privacy policy URL, and a package ID you can permanently stand behind. It is also the one that has to be settled before you build anything else, because it is downstream of the name.
Check your app name and its domain →
The Ship an App path puts all eight launch steps in order, from naming through submission.