App Store Optimization (ASO)
ASO vs SEO. App Store and Google Play ranking factors, keyword placement in metadata, screenshots, ratings, reviews, and modern app indexing.
App Store Optimization (ASO) is SEO for closed-garden discovery engines. The Apple App Store and Google Play between them mediate ~90% of app installs, and their ranking signals are not the signals that drive web SEO. If you carry over your blog playbook to app store listings, you will be outranked by apps with worse functionality but better-tuned metadata and screenshot stories.
TL;DR
- Conversion rate to install (CR) is the dominant signal in 2026. Both stores reward listings that convert browsers to installs. Screenshots, the first 3 lines of description (Play) or subtitle + promotional text (App Store) move CR more than keyword placement.
- Keyword fields work differently per store. Apple has a hidden 100-character keywords field per locale; Google Play has none — keywords must live naturally in the short description (80 chars) and long description (4000 chars).
- App Indexing is mostly dead, deep linking is alive. Universal Links (iOS) and App Links (Android) plus a working /.well-known/ setup are how installed-app users get search-routed to in-app content. Web SEO and ASO meet here.
The mental model
ASO is like supermarket shelf optimization. You have a few square inches of packaging to convince a shopper passing the aisle. The ingredient list and reviews matter, but only after the shopper picks up the box. The icon is the front of the box. The title and subtitle are the slogan. The first three screenshots are the back panel. The reviews and ratings are the customer’s word-of-mouth check before they put it in the cart.
The store’s algorithm watches what shoppers do: do they click your tile, do they scroll your screenshots, do they tap install, do they keep the app installed past day 7, day 30. Each step feeds back. The store does not care about your authority or your backlinks. It cares about whether your tile, ranked at position 3, beats the position 4 tile on conversion. If yes, you stay; if no, you swap.
The second mental model: two stores, different rules. Apple’s algorithm leans on title, subtitle, and the hidden keyword field. Google’s leans on description text, install velocity, and engagement signals. A listing tuned for one store rarely wins on the other without rewriting.
Deep dive: the 2026 reality
The two stores in detail, with current 2026 limits.
| Field | Apple App Store | Google Play |
|---|---|---|
| App name / title | 30 chars (high weight) | 30 chars (high weight) |
| Subtitle / short description | 30 chars subtitle (high weight) | 80 chars short description (high weight) |
| Keyword field | 100 chars hidden | None — pull from descriptions |
| Long description | 4000 chars (low weight) | 4000 chars (medium weight) |
| Promotional text | 170 chars (no weight, but visible) | First 3 lines of description |
| Screenshots | Up to 10 per device + localizable | Up to 8 per asset type |
| App preview video | Up to 3, 30s each, autoplay muted | 1, up to 30s, muted |
| Ratings + reviews | Heavy weight | Heavy weight |
| Localization | Per-locale metadata | Per-locale metadata |
Apple’s 2024–2026 algorithm changes. The hidden keywords field still works but has lost weight relative to the title and subtitle. Apple now reads in-app interaction signals (sessions per user, day-7 retention) directly via App Analytics — high-quality apps that retain users compound rankings even with mediocre metadata. Custom Product Pages (CPP, launched late 2021) let you ship up to 35 screenshot variants per app and A/B test with Product Page Optimization (PPO).
Google Play’s 2024–2026 algorithm changes. Play now uses listing engagement velocity (clicks, scroll depth on the listing, screenshot taps) as a top-three signal. Custom Store Listings support per-country, per-device, per-language variants. The deprecation of <meta name="google-play-app"> for Smart App Banner has finalized — Universal/App Links are the only deep-link path supported by Search.
App Indexing. Apple’s Search API and Google’s app: annotations in Search results both remain functional, but they primarily benefit users who already have your app installed. Pre-install discovery happens inside the store, not via web SEO. The exception: branded app queries on Google (“instagram app”) still surface store results and benefit from a strong web presence.
Reviews and ratings. Both stores weight rating average and review velocity. A 4.5+ star average with 1,000+ recent reviews outranks a 4.7-star average with 100. Negative-review momentum (sudden drop in rating) demotes within 48 hours. Tools like AppFollow, Sensor Tower, and data.ai monitor this. Responding to negative reviews within 24 hours measurably reduces churn and improves rating trajectory.
AI-generated screenshots. Both stores updated guidelines in 2025 to require disclosure when gameplay or interface screenshots are AI-rendered. Misleading screenshots are a top-3 reason for delisting in 2026.
Visualizing it
flowchart TD
DEV["App developer<br/>builds + uploads"] --> META["Metadata layer<br/>title, subtitle, kw field,<br/>description, screenshots"]
META --> AS["App Store algorithm<br/>(Apple)"]
META --> GP["Google Play algorithm"]
AS --> ASR["App Store search<br/>+ Featured + Today tab"]
GP --> GPR["Play search<br/>+ Discover + Editors"]
ASR --> CR["Conversion to install<br/>(top signal)"]
GPR --> CR
CR --> R["Retention + reviews<br/>feed back to ranking"]
R --> META
Bad vs. expert
The bad approach
# Apple App Store listing
app_name: "QuickNote - Notes, Ideas, To-do, Reminders, Lists, Journal, Diary"
subtitle: "Best Notes App"
keywords: "notes,note,notepad,quick,quicknote,best,top,fast,easy,simple,app"
promotional_text: "Download QuickNote today!"
screenshots:
- "Generic phone with notes app open"
- "Generic phone with notes app open (different angle)"
- "Generic phone with notes app open (dark mode)"
Title is keyword-stuffed past Apple’s 30-character limit (will be truncated to “QuickNote - Notes, Ideas, To-d”). Subtitle wastes 14 characters on a word (“Best”) that does not match user search intent. Keywords field includes plurals and stems Apple already inflects automatically — wasted characters. Screenshots show the app but tell no story; conversion rate will be 1–2% versus 5–8% for a tuned listing.
The expert approach
# Apple App Store listing
app_name: "Bear - Markdown Notes" # 21 chars, brand + value
subtitle: "Write fast, link your ideas" # 27 chars, what it does
keywords: "markdown,journal,zettelkasten,notebook,writer,outline,todo"
promotional_text: "Now with iCloud sync v2 and per-note encryption."
screenshots:
- "1: Hero shot — 'Markdown that respects your time' headline"
- "2: Wikilinks animation — '[[Connect any thought instantly]]'"
- "3: Tag tree — 'Organize without folders'"
- "4: Encryption — 'Zero-knowledge per-note locks'"
- "5: Themes — 'Dark, sepia, midnight, focus modes'"
# Google Play listing
short_description: "Markdown notes with wikilinks, tags, sync, encryption."
# 56 chars; reads naturally; covers 5 head-tail keywords
long_description: |
Bear is a markdown notes app for writers, students, and researchers
who want speed and structure without folders.
Why writers choose Bear:
- Real markdown, not formatted preview
- Wikilinks: [[connect any note instantly]]
- Tags: write #project/quarterly inline
- iCloud sync, encrypted per-note vaults
- Distraction-free writing modes
Used by 4M writers across 80 countries. 4.7-star average from 180,000
reviews on the Apple App Store.
<!-- /.well-known/apple-app-site-association on the marketing site -->
{
"applinks": {
"apps": [],
"details": [{
"appID": "TEAMID.com.bearapp.bear",
"paths": ["/notes/*", "/share/*"]
}]
}
}
Title is brand + 1 keyword phrase. Subtitle states the value proposition. Keyword field uses unique terms (Apple inflects plurals; “notes” + “note” wastes characters). Screenshots tell a 5-panel story — each panel adds a value prop, and the first panel works as a thumbnail in search. Long description on Play uses natural keyword density and ends with social proof (review counts) which Play’s algorithm reads as engagement signal. Universal Links wired up so that web visitors with the app installed deep-link directly into in-app content.
Do this today
- In App Store Connect → My Apps → [App] → App Information, audit the Name and Subtitle for character efficiency. Trim filler words. Aim for: brand + 1 high-volume keyword in name, value-prop in subtitle.
- In the Keywords field, remove any plurals, stems, or words already in the name/subtitle. Apple ignores duplicates across these fields. Use AppTweak, Sensor Tower, or data.ai to find missed search terms.
- In Google Play Console → Main store listing, rewrite the Short description (80 chars) to include 2–3 head keywords naturally. This is the highest-weight field in Play’s algorithm.
- Set up Custom Product Pages (Apple) and Custom Store Listings (Play) for your top three traffic sources (e.g., paid TikTok creative, Reddit referrals, branded search). A locale-matched listing typically lifts conversion 15–30%.
- Enable Product Page Optimization (PPO) on Apple and Store Listing Experiments on Play. A/B test the first screenshot first — it has the highest conversion lift per change.
- Wire up Universal Links (iOS) and App Links (Android) with a
/.well-known/apple-app-site-associationand/.well-known/assetlinks.jsonon your marketing domain. Validate with Apple’s App Search API Validator and Google’s Asset Links Tester. - In App Store Connect → Sales and Trends and Play Console → Statistics, pull listing CR (impressions to installs). Apps below 4% on Apple or 25% on Play (search-driven traffic) are leaving installs on the table — every percentage point is worth optimizing.
- In AppFollow or Sensor Tower, set alerts on review-rating delta. A 0.2-star drop in 7 days is an emerging issue; respond to negatives within 24 hours and ship a patch within 2 weeks.
- For seasonal or campaign moments, ship localized app preview videos (Apple) and feature graphics (Play). Video raises listing conversion 25–35% on average.
- Track branded app search on Google — type “[your app name] app” and verify the install button surfaces correctly. If not, the structured data on your marketing site is missing or your
MobileApplicationschema is incomplete.
Mark complete
Toggle to remember this module as mastered. Saved to your browser only.
More in this part