95% of App Store revenue comes from just 1% of apps. The difference? Effective monetization strategy. Top apps use multiple revenue streams and optimize relentlessly. Apps with optimized monetization earn 5-10x more per user. This guide reveals strategies used by top-grossing apps to generate millions in revenue.
Monetization Models Overview
Model Comparison
Paid App:
Revenue: $0.99 - $9.99 upfront
Pros:
✓ Immediate revenue
✓ Simple model
✓ No ongoing costs
✓ Premium positioning
Cons:
✗ High download barrier
✗ Limited to one-time payment
✗ Lower download volume
✗ Hard to justify >$5
Best for: Utility apps, professional tools
Examples: Things 3 ($9.99), Procreate ($12.99)
In-App Purchases (IAP):
Revenue: $0.99 - $99.99 per purchase
Pros:
✓ Free to download
✓ Try before buy
✓ Multiple purchase opportunities
✓ Unlimited revenue potential
Cons:
✗ Conversion rate typically 2-5%
✗ Can feel exploitative
✗ Requires ongoing content
Best for: Games, content apps
Examples: Clash of Clans, Candy Crush
Subscriptions:
Revenue: $4.99 - $29.99/month recurring
Pros:
✓ Predictable recurring revenue
✓ Higher LTV (6x vs paid apps)
✓ Lower barrier than high upfront cost
✓ Continuous value delivery
Cons:
✗ Requires ongoing value
✗ Churn management critical
✗ User commitment needed
Best for: Content, productivity, health
Examples: Spotify, Netflix, Calm
Advertising:
Revenue: $0.01 - $0.10 per user/month
Pros:
✓ Completely free for users
✓ Scales with usage
✓ Multiple ad types
Cons:
✗ Low revenue per user
✗ Degrades user experience
✗ Requires massive scale
Best for: Social, content, utility apps
Examples: Instagram, TikTok, Weather apps
Freemium (Free + Premium):
Revenue: Mixed model
Pros:
✓ Large user base
✓ Multiple revenue streams
✓ Flexibility
✓ Best of multiple models
Cons:
✗ Complex to balance
✗ Risk of cannibalizing revenue
Best for: Most app categories
Examples: Spotify, Evernote, Headspace
Hybrid Models:
Revenue: Ads + IAP + Subscriptions
Pros:
✓ Maximize revenue per user
✓ Multiple conversion paths
✓ Appeal to different user types
Cons:
✗ Most complex to implement
✗ Can confuse users
Best for: Established apps with large user base
Examples: YouTube, LinkedIn
Revenue Per User Comparison
Average revenue per user (ARPU) by model:
Paid app:
- ARPU: $2.99 (one-time)
- LTV: $2.99
- Conversion: High download barrier
Freemium + IAP:
- ARPU: $0.05 - $0.15/month
- Conversion: 2-5% of users pay
- LTV: $3-20
- Power users: $50-500
Subscriptions:
- ARPU: $0.50 - $2.00/month
- Conversion: 5-10% trial-to-paid
- LTV: $50-200
- Churn: 5-10% monthly
Ads only:
- ARPU: $0.01 - $0.10/month
- Requires: 100K+ DAU for viability
- LTV: $1-10
- Scales with usage
Freemium + Subscriptions:
- ARPU: $0.30 - $1.50/month
- Best balance
- LTV: $30-150
- Growing model
Example calculation:
App with 100K MAU:
Ads only:
$0.05 ARPU × 100K = $5,000/month
Subscriptions (5% conversion, $9.99/month):
5,000 subscribers × $9.99 = $49,950/month
Hybrid (Ads + Subscriptions):
- 95K free users × $0.05 = $4,750
- 5K subscribers × $9.99 = $49,950
- Total: $54,700/month
Winner: Hybrid model!
In-App Purchases (IAP)
IAP Types
Consumables:
- Used once, can repurchase
- Examples: Coins, lives, boosts
- Best for: Games
Non-consumables:
- One-time purchase, permanent
- Examples: Remove ads, pro features
- Best for: Utilities, productivity
Auto-renewable subscriptions:
- Recurring billing
- Examples: Premium access, content
- Best for: Content, services
Non-renewing subscriptions:
- Fixed duration, manual renewal
- Examples: Season pass
- Best for: Seasonal content
Pricing Strategy
Price tiers (based on 2025 market data):
Micro-transactions ($0.99 - $2.99):
- Impulse purchases
- High volume, low friction
- Examples: Extra lives, small coin packs
- Conversion: 5-10% of users
Mid-tier ($4.99 - $9.99):
- Good value perception
- Sweet spot for many apps
- Examples: Remove ads, feature packs
- Conversion: 2-5% of users
Premium ($14.99 - $29.99):
- Power users and professionals
- Comprehensive features
- Examples: Pro upgrade, large bundles
- Conversion: 0.5-2% of users
Whale tier ($49.99 - $99.99):
- Serious users only
- Exclusive features/content
- Examples: Lifetime access, massive packs
- Conversion: 0.1-0.5% of users
Pricing psychology:
Anchor pricing:
- Show higher price first
- Makes other prices seem reasonable
- Example: $99.99, $49.99, $9.99
Decoy pricing:
- Middle option most attractive
- Decoy makes target look good
- Example:
* Basic: $4.99 (limited)
* Premium: $9.99 (best value!) ← Target
* Pro: $19.99 (overkill for most)
Bundle discount:
- Save 20-30% when bundled
- Increases average transaction
- Example:
* 100 coins: $0.99
* 550 coins: $4.99 (save 10%)
* 1200 coins: $9.99 (save 20%) ← Popular
Time-limited offers:
- Creates urgency
- "50% off - Today only!"
- Increases conversion 20-40%
First-time buyer discount:
- Lower barrier to first purchase
- "Special offer: 50% off first purchase"
- Converts 30-50% more users
Purchase Optimization
Store Placement
When to show IAP:
❌ Bad timing:
- Immediately on app launch
- During critical tasks
- After errors/frustration
- Too frequently
✅ Good timing:
- Natural stopping points
- After value demonstrated
- When user needs feature
- After positive experience
- When user hits limit
Examples:
Photo editor:
- Show "Pro" after 5th edit
- User sees value, wants more
- "Unlock 50+ more filters"
Game:
- Show coins when running low
- User in flow, wants to continue
- "Get 100 coins to keep playing"
Productivity app:
- Show premium after free trial expires
- User already invested
- "Upgrade to save unlimited notes"
Design best practices:
Clear value proposition:
✓ "Remove ads forever - $2.99"
✓ "Unlock all features - $9.99"
✓ "Pro: 10x faster processing"
✗ "Premium version available"
✗ "Upgrade now"
✗ Vague benefits
Visual hierarchy:
- Most popular: Highlighted, larger
- Recommended: Badge/tag
- Other options: Smaller, less prominent
Trust signals:
- "Over 1M happy users"
- "★★★★★ 4.9 rating"
- "30-day money back guarantee"
- "Cancel anytime"
Restore purchases:
- Always visible
- "Already purchased? Restore"
- Handle gracefully
A/B Testing
Test these elements:
Pricing:
Control: $9.99/month
Variant A: $7.99/month
Variant B: $12.99/month
Measure: Revenue per user
IAP screen design:
Control: List layout
Variant A: Card layout
Variant B: Comparison table
Measure: Conversion rate
Copy:
Control: "Remove Ads"
Variant A: "Enjoy Ad-Free Experience"
Variant B: "Upgrade to Premium"
Measure: Click → Purchase
Timing:
Control: Show after 5 uses
Variant A: Show after 10 uses
Variant B: Show after 3 uses
Measure: Conversion & retention
Discount:
Control: No discount
Variant A: "Save 20%"
Variant B: "50% off - Today only"
Measure: Revenue & urgency response
Example test results:
Test: Pricing for Pro upgrade
Control: $9.99 (1000 users)
- 50 purchases = 5% conversion
- Revenue: $499.50
Variant A: $7.99 (1000 users)
- 70 purchases = 7% conversion
- Revenue: $559.30 (+12%)
Variant B: $12.99 (1000 users)
- 35 purchases = 3.5% conversion
- Revenue: $454.65 (-9%)
Winner: $7.99 (Variant A)
Insight: Users price-sensitive, lower price = more revenue
Advertising
Ad Types
Banner ads:
Format: Small strip (320x50)
Placement: Top or bottom of screen
eCPM: $0.10 - $1.00
User experience: Least intrusive
Revenue: Lowest per impression
Best for: High-frequency apps
Example: Weather, news apps
Interstitial ads:
Format: Full-screen between content
Timing: Natural breaks
eCPM: $2.00 - $10.00
User experience: Medium intrusion
Revenue: Medium-high
Best for: Games, content apps
Example: Between levels, articles
Rewarded video ads:
Format: 15-30 second video
Incentive: User gets reward (coins, lives)
eCPM: $10.00 - $20.00
User experience: Opt-in (user choice)
Revenue: Highest per impression
Engagement: Best
Best for: Games, productivity
Example: "Watch ad for 50 coins"
Native ads:
Format: Matches app design
Placement: In content feed
eCPM: $1.00 - $5.00
User experience: Least disruptive
Revenue: Medium
Best for: Social, news, content
Example: Sponsored posts in feed
Offer wall:
Format: List of offers/installs
Incentive: Large rewards
eCPM: $5.00 - $50.00
User experience: Opt-in
Revenue: Very high (but rare use)
Best for: Games
Example: "Install app for 500 coins"
Ad Networks
Top ad networks (2025):
Google AdMob:
✓ Largest inventory
✓ Easy integration
✓ Good fill rates (95%+)
✓ Mediation platform
✗ Lower eCPMs than some
Best for: Most apps
Meta Audience Network:
✓ High eCPMs
✓ Good targeting
✓ Large advertiser base
✗ Requires Facebook SDK
Best for: Apps with young users
Unity Ads:
✓ Excellent for games
✓ High-quality video ads
✓ Good eCPMs
✗ Games only
Best for: Mobile games
AppLovin:
✓ High eCPMs
✓ Good fill rates
✓ Advanced targeting
Best for: Games, utilities
IronSource:
✓ Great mediation
✓ High eCPMs
✓ A/B testing tools
Best for: Games
AdMob Mediation:
Use multiple networks:
- AdMob (primary)
- Meta (secondary)
- Unity (games)
- AppLovin (backup)
Waterfall optimization:
1. Highest eCPM network first
2. If no fill, try next network
3. Continue until ad served
4. Maximize revenue per impression
Ad Implementation
iOS (AdMob)
// Install
pod 'Google-Mobile-Ads-SDK'
// Setup
import GoogleMobileAds
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GADMobileAds.sharedInstance().start()
return true
}
}
// Banner ad
import GoogleMobileAds
class ViewController: UIViewController {
var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
bannerView = GADBannerView(adSize: GADAdSizeBanner)
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.load(GADRequest())
// Add to view
view.addSubview(bannerView)
// Position at bottom
}
}
// Interstitial ad
class InterstitialManager: NSObject, GADFullScreenContentDelegate {
private var interstitial: GADInterstitialAd?
func loadAd() {
GADInterstitialAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
request: GADRequest()
) { [weak self] ad, error in
if let error = error {
print("Failed to load: \(error)")
return
}
self?.interstitial = ad
self?.interstitial?.fullScreenContentDelegate = self
}
}
func showAd(from viewController: UIViewController) {
if let ad = interstitial {
ad.present(fromRootViewController: viewController)
} else {
print("Ad not ready")
loadAd() // Load for next time
}
}
// Delegate methods
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
loadAd() // Load next ad
}
}
// Rewarded ad
class RewardedAdManager: NSObject, GADFullScreenContentDelegate {
private var rewardedAd: GADRewardedAd?
func loadAd() {
GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313",
request: GADRequest()
) { [weak self] ad, error in
if let error = error {
print("Failed to load: \(error)")
return
}
self?.rewardedAd = ad
self?.rewardedAd?.fullScreenContentDelegate = self
}
}
func showAd(from viewController: UIViewController, completion: @escaping (Bool) -> Void) {
guard let ad = rewardedAd else {
completion(false)
return
}
ad.present(fromRootViewController: viewController) {
let reward = ad.adReward
print("Reward: \(reward.amount) \(reward.type)")
completion(true)
}
}
}
// Usage
func onWatchAdButtonTapped() {
rewardedAdManager.showAd(from: self) { success in
if success {
// Grant reward
self.giveUserCoins(50)
}
}
}
Android (AdMob)
// Add dependency
dependencies {
implementation 'com.google.android.gms:play-services-ads:22.6.0'
}
// Initialize
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
MobileAds.initialize(this)
}
}
// Banner ad
class MainActivity : AppCompatActivity() {
private lateinit var adView: AdView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
adView = AdView(this)
adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
adView.setAdSize(AdSize.BANNER)
// Add to layout
val adContainer = findViewById(R.id.ad_container)
adContainer.addView(adView)
// Load ad
adView.loadAd(AdRequest.Builder().build())
}
override fun onDestroy() {
adView.destroy()
super.onDestroy()
}
}
// Interstitial ad
class InterstitialManager(private val context: Context) {
private var interstitialAd: InterstitialAd? = null
fun loadAd() {
InterstitialAd.load(
context,
"ca-app-pub-3940256099942544/1033173712",
AdRequest.Builder().build(),
object : InterstitialAdLoadCallback() {
override fun onAdLoaded(ad: InterstitialAd) {
interstitialAd = ad
}
override fun onAdFailedToLoad(error: LoadAdError) {
interstitialAd = null
}
}
)
}
fun showAd(activity: Activity) {
interstitialAd?.let { ad ->
ad.fullScreenContentCallback = object : FullScreenContentCallback() {
override fun onAdDismissedFullScreenContent() {
loadAd() // Load next
}
}
ad.show(activity)
} ?: run {
loadAd() // Load for next time
}
}
}
// Rewarded ad
class RewardedAdManager(private val context: Context) {
private var rewardedAd: RewardedAd? = null
fun loadAd() {
RewardedAd.load(
context,
"ca-app-pub-3940256099942544/5224354917",
AdRequest.Builder().build(),
object : RewardedAdLoadCallback() {
override fun onAdLoaded(ad: RewardedAd) {
rewardedAd = ad
}
}
)
}
fun showAd(activity: Activity, onRewarded: (Int) -> Unit) {
rewardedAd?.let { ad ->
ad.show(activity) { reward ->
onRewarded(reward.amount)
}
}
}
}
// Usage
button.setOnClickListener {
rewardedAdManager.showAd(this) { amount ->
// Grant reward
giveUserCoins(amount)
}
}
Ad Optimization
Best practices:
Frequency capping:
- Interstitials: Max 1 per 3-5 minutes
- Banner refresh: Every 60 seconds
- Rewarded: Unlimited (user choice)
Placement:
✓ Natural breaks (between levels, articles)
✓ After user actions (complete task)
✓ Clear transitions
✗ During gameplay
✗ In the middle of content
✗ During critical moments
Ad quality:
- Block low-quality ads
- Set category restrictions
- Review ad content regularly
- User feedback on ads
Balance:
Free users see ads, premium users don't:
- "Remove ads" IAP: $2.99-4.99
- Most popular monetization combo
- 80% users tolerate ads if free
- 5-10% convert to paid
Revenue optimization:
- Use mediation (multiple networks)
- A/B test ad placements
- Monitor eCPMs by network
- Optimize waterfall
- Track revenue per user
Hybrid Monetization
Combining Models
Best hybrid combinations:
Freemium + Ads + Remove Ads IAP:
Structure:
- Free version: Ads shown
- IAP ($2.99): Remove ads permanently
- Conversion: 5-10% pay to remove ads
Example: Weather apps, utilities
Revenue:
- 90% users: $0.05/month from ads
- 10% users: $2.99 one-time
- ARPU: $0.045 + $0.299 = $0.344/month
Freemium + Subscriptions + Ads:
Structure:
- Free tier: Limited features + ads
- Premium ($9.99/month): All features, no ads
- Conversion: 5% to premium
Example: Spotify, YouTube
Revenue:
- 95% users: $0.05/month from ads
- 5% users: $9.99/month subscription
- ARPU: $0.0475 + $0.4995 = $0.547/month
Free + IAP + Subscriptions:
Structure:
- Free: Basic features
- IAP: One-time feature unlocks ($4.99-19.99)
- Subscription: Premium features + content ($9.99/month)
Example: Productivity apps
Revenue:
- 3% buy IAP: $0.15/month average
- 5% subscribe: $0.50/month average
- ARPU: $0.65/month
Game model (F2P):
Structure:
- Free to play
- Consumable IAP: Coins, lives ($0.99-99.99)
- Subscriptions: Battle pass ($9.99/month)
- Rewarded ads: Optional for bonuses
Example: Mobile games
Revenue:
- 2% whales: 50% of revenue
- 5% dolphins: 30% of revenue
- 93% minnows: 20% of revenue (mostly ads)
- ARPU: $0.80-2.00/month
Implementation tips:
✓ Clear value proposition for each tier
✓ Free tier useful but limited
✓ Paid tier obvious upgrade
✓ Don't overwhelm with options
✓ Test pricing extensively
Conclusion
The most successful apps don't rely on a single monetization method—they strategically combine multiple revenue streams while maintaining excellent user experience. Whether you choose subscriptions, ads, IAP, or a hybrid model, the key is continuous optimization, A/B testing, and deep understanding of your users' willingness to pay. Start simple, measure everything, and iterate based on data.
Monetized apps need professional support infrastructure. Our support URL generator creates optimized support pages that meet app store requirements and help maintain user satisfaction—critical for long-term revenue success.