Otter Growth
    Advisory
    Notes
    ArticleOct 202612 min read

    Your Google Play listing probably names an iOS-only feature

    People buy on ratings and reviews, and 4.0 stars is the inflection point. The five things I find most often on a listing, each with its source, plus the Play-versus-iOS defect worth going to look for right now.

    Michael Berliner
    Michael Berliner
    Product growth advisor & operator

    Go look at your Google Play listing and check whether it names a feature that only exists on iOS. It happens because Play listings get written by copying the finished iOS listing and changing what obviously needs changing, so ratings, review counts, badges, store-specific UI references and iOS-only feature names all carry across without announcing themselves. Nobody catches it because the writer is on iOS, the reviewer is on iOS, and Android users who hit the mismatch do not file a bug. They just do not install. The fix is a mandatory per-store delta table with fixed rows and a review step that walks back to the source.

    4.0 stars is an inflection point. Below it, apps lose up to half their potential installs.

    Which is the part of ASO nobody wants to hear, because it is not a copy exercise. People buy on ratings and reviews. Everything else on that page argues with them.

    ASO is an organic acquisition channel and it works like one: review volume, plus relentless experimentation on the few surfaces that actually carry weight. Title, subtitle, category, logo.

    The five things I find most often

    1. Title and subtitle are written for people who already know the brand

    They are recognition tools where they should be acquisition tools.

    About 65% of App Store downloads follow a keyword search (AppTweak) and 70% of App Store visitors use search (Apple Search Ads). More than half of top US apps carry keywords in the app name (Appfigures). Apple weights Title above Subtitle above the Keyword Field, so every character in the title is worth more than a character anywhere else.

    One listing spent its entire non-brand title space on the word "Mobile," which adds no keyword value and no cold-audience appeal. Another used 10 of its 30 title characters and put no keyword in the subtitle at all.

    2. The first three screenshots do not show the product or the aha

    This is the primary conversion surface on the page and most listings waste it.

    Roughly 90% of users never scroll past the third screenshot, the average visitor spends about 7 seconds on the product page, and fewer than 2% tap "read more." Well-designed screenshots lift page conversion 20 to 35% (ASOMobile). The working sequence is Value, then Usage, then Trust.

    One listing I read had the same handwritten note as every screenshot. None showed the product and none showed the aha.

    3. The description is thin, and written as a feature list in a store that now reads semantically

    Google Play indexes the full long description and now interprets it through Gemini-powered Guided Search, live since 23 September 2025, where users type goals rather than app names. That shifts the work from keyword density to outcome alignment: lead the short description with the result your app delivers, and map six to eight user jobs with distinct creative per job.

    One description used 600 of 4,000 available characters, with no social proof and no mention of a whole product format. Another was four sentences that named the product and restated the brand.

    4. The keyword field is spent on duplicates and insider vocabulary

    Apple does not weight repetition, so a keyword already in your title is a wasted character in the field.

    Use singular forms, since Apple auto-indexes English plurals though not in every language. Drop the spaces after commas, which saves 10 to 15 characters. And the US store indexes both English (US) and Spanish (Mexico), which effectively gives you 200 characters rather than 100. Stop words appear in under 3.2% of top-ranked titles.

    One keyword set leaned entirely on insider category terminology while the terms buyers actually search were missing.

    5. Nothing is tested, and "What's New" is a dead slot

    57% of top Google Play games A/B tested screenshots at least twice in 2024, against only 34% of apps (SplitMetrics). Subscription apps are badly undertesting. AppTweak recommends refreshing screenshots two to four times a year; Appfigures recommends touching metadata every 30 to 45 days.

    One app shipping roughly monthly was using "What's New" for generic bug-fix copy. That is recurring free merchandising, given away every release, spent on the word "improvements."

    Two things that are not free upside

    Ratings. 4.0 is the inflection point and apps below it lose up to 50% of potential installs. Going from 3 to 4 stars correlates with roughly an 89% increase in install conversion, though that is a single source and directional only. Responding to reviews improves average rating by about 0.7 stars on Google Play, and 70% of users who get a response revise their review. That last pair is the cheapest work on this whole page.

    Preview video. A strong one lifts conversion 20 to 40%. A poor one can hurt it by up to 20%. Only 6% of Google Play users ever tap play, and additional videos beyond the first add nothing. If you cannot make an exceptional one, skip it, which is close to the opposite of what the category will tell you.

    And one specific defect worth going to look for right now

    Go look at your Google Play listing and check whether it names a feature that only exists on iOS.

    I would guess one in three of you finds one.

    Why it happens

    It is not carelessness. It is the production order.

    iOS gets written first, properly, with the real feature names and the actual value proposition worked out. Then Play gets written by copying iOS and changing what obviously needs changing: the character limits, the store name, the screenshot dimensions.

    The word doing the damage in that sentence is "obviously." Everything non-obvious rides along.

    What gets caught and what carries silently when a Play listing is copied from iOS HOW A PLAY LISTING ACTUALLY GETS WRITTEN One branch gets reviewed. The other one is invisible.
    <rect x="30" y="92" width="150" height="64" rx="10" fill="hsl(var(--card))" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <text x="105" y="120" text-anchor="middle" font-size="12.5" font-weight="800" fill="hsl(var(--foreground))">iOS listing</text>
    <text x="105" y="140" text-anchor="middle" font-size="11" fill="hsl(var(--muted-foreground))">written first, properly</text>
    <line x1="180" y1="124" x2="248" y2="124" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <text x="214" y="114" text-anchor="middle" font-size="11" fill="hsl(var(--muted-foreground))">copy</text>
    <rect x="250" y="92" width="150" height="64" rx="10" fill="hsl(var(--card))" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <text x="325" y="120" text-anchor="middle" font-size="12.5" font-weight="800" fill="hsl(var(--foreground))">Play listing</text>
    <text x="325" y="140" text-anchor="middle" font-size="11" fill="hsl(var(--muted-foreground))">edited, then shipped</text>
    
    <line x1="325" y1="156" x2="325" y2="196" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <line x1="150" y1="196" x2="560" y2="196" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <line x1="150" y1="196" x2="150" y2="222" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <line x1="560" y1="196" x2="560" y2="222" stroke="hsl(var(--chart-1))" stroke-width="2"/>
    
    <rect x="30" y="222" width="240" height="130" rx="10" fill="hsl(var(--card))" stroke="hsl(var(--border))" stroke-width="1.5"/>
    <text x="150" y="250" text-anchor="middle" font-size="12.5" font-weight="800" fill="hsl(var(--foreground))">Changed on sight</text>
    <text x="52" y="278" font-size="11.5" fill="hsl(var(--muted-foreground))">Character limits</text>
    <text x="52" y="300" font-size="11.5" fill="hsl(var(--muted-foreground))">Store name and links</text>
    <text x="52" y="322" font-size="11.5" fill="hsl(var(--muted-foreground))">Screenshot dimensions</text>
    
    <rect x="440" y="222" width="250" height="130" rx="10" fill="hsl(var(--card))" stroke="hsl(var(--chart-1))" stroke-width="2"/>
    <text x="565" y="250" text-anchor="middle" font-size="12.5" font-weight="800" fill="hsl(var(--chart-1))">Carried silently</text>
    <text x="462" y="278" font-size="11.5" fill="hsl(var(--muted-foreground))">Ratings and review counts</text>
    <text x="462" y="300" font-size="11.5" fill="hsl(var(--muted-foreground))">Award badges and press lines</text>
    <text x="462" y="322" font-size="11.5" fill="hsl(var(--muted-foreground))">iOS-only feature names</text>
    
    Both branches come out of the same copy step, and only one of them gets checked.

    Ratings and review counts, which are per-store. Award badges and press quotes tied to one platform. References to store-specific interface elements. And the names of features that shipped on one platform and not the other. None of it announces itself as wrong, because all of it is true somewhere.

    Why nobody catches it

    The review is blind by construction.

    The person who writes the listing is on iOS. The person who reviews it is on iOS. And the Android users who hit the mismatch do not file a bug about it, because they have no relationship with you yet and no reason to do you a favour.

    They don't install. That is the entire feedback signal, and it arrives as a conversion rate you will attribute to something else.

    The fix is a table, not more care

    We hit this hard enough building our own ASO process that we changed the process rather than resolving to be more careful, because "be more careful" has never once fixed a systematic error.

    There is now a mandatory per-store delta table with fixed rows, filled in every single time, even when the answer is "no change." Fixed rows are the mechanism. A blank you have to fill is a question you have to answer.

    Row, filled every timeWhat you are checking
    Feature namesEvery named feature exists on this platform, under this name, today.
    Ratings and review countsAny number quoted is this store's number, not the other store's.
    Badges, awards, pressEach claim applies to this platform and is still current.
    Interface referencesNo copy describes UI, gestures, or settings paths that differ on this OS.
    Pricing and plan namesPlan names, trial length, and price display match what this store actually shows.
    Character limitsTitle, subtitle or short description, and long description are inside this store's limits.
    Free tierIf there is a meaningful free tier, it appears in the first 250 characters.
    Keyword targetsThis store's keyword set, not a copy of the other store's.

    Then a review step that walks back to the iOS source rather than re-reading the Play copy. That distinction matters more than it sounds. Re-reading the Play listing checks whether it reads well, and it always does, because it was written by a competent person copying competent work. Walking back to the source checks whether each claim is true here.

    That was the largest single source of errors we found. Invisible until we forced it into a structure.

    Cross-referencing is where quality goes to die

    The general version of this is worth more than the specific one.

    Any time a process says "same as above," you have a silent copy-paste with no verification step attached. It reads as efficient. It behaves like an unchecked assumption that compounds every time the source changes and the copy does not.

    This shows up well outside store listings. Localized copy that inherits a claim that was only ever true in one market. A pricing page that inherits plan names from a deck. Ad creative that inherits a feature callout from a landing page written two releases ago. It is the same failure each time, because the second version gets written by someone reading the first version instead of checking what is actually true.

    The fix is always the same shape. Make the copy step produce a filled-in artifact, and make the review step look at the source instead of the copy.

    Two other things worth checking while you are in there

    Does your description hook open with a greeting? The first 250 characters or so are all most people see before the fold, and a meaningful share of them read nothing else. If those characters are spent on "Welcome to" and a company introduction, you have wasted the only impression you are guaranteed. Open with what the user gets.

    Is a genuinely good free tier going unmentioned? This is more common than you would think. The free tier gets treated as a fact about the pricing page rather than a reason to install, so it never makes it into the two places people actually read: the first lines of the description, and the subtitle or short description. If free access is a real part of your offer, it belongs where the decision happens.

    What the ASO pack actually hands you

    Three fixed documents, backed by a five to seven competitor research pass, and this is the shape rather than a pitch.

    The ASO audit. A two-to-three sentence read, "do these now" grouped by store surface, the numbers that matter, and what we need from you. Appendices carry the risks, the priority improvements, what is working, where the listing is losing conversions, store-specific notes, and figure provenance with caveats.

    The Apple App Store metadata pack, a production reference that runs as long as the content requires.

    The Google Play metadata pack, the same, plus a mandatory Play delta table with fixed rows: feature names, rating, review count, badges, store-specific UI, everything else, filled every run.

    That delta table exists because of the defect described above, which we shipped and then fixed. A "same assets as iOS" cross-reference was silently importing iOS-only feature names, ratings and badges into Play copy, and it caused 5 of 12 criticals across two review passes on a single test run. The table is what stops it happening again.

    Pre-launch is a first-class input, not a fallback. With no live listing you get the metadata packs and the keyword strategy built from the confirmed feature set and the competitor pass, with the current-listing teardown skipped and flagged as net-new. Blank evidence stops the run, and the skill writes only to confirmed features, because inventing a feature in store copy is the one mistake you cannot walk back.

    The takeaway

    ASO is an organic acquisition channel. People buy on ratings and reviews, and the work is review volume plus relentless experimentation on the few surfaces that carry weight.

    Open your Play listing and read it as an Android user who has never seen your iOS app. Check every named feature, every number, and every badge against what actually exists on that platform.

    Then build the delta table so you never have to rely on someone noticing again. Fixed rows, filled every time, reviewed against the source rather than the copy. No exceptions.

    Common questions

    Why do Google Play listings often describe features that only exist on iOS?

    Because of the order they get written in. iOS is usually written first and in full, then the Play listing is produced by copying it and changing what obviously needs to change, such as character limits and store names. Feature names, ratings, badges and interface references are not obviously wrong on inspection, so they carry across. Nobody catches it because the writer and reviewer are typically both on iOS, and Android users who notice simply do not install rather than reporting it.

    How do you keep App Store and Google Play listings in sync?

    With a per-store delta table that has fixed rows and gets filled in every time, including when the answer is "no change." Cover feature names, ratings and review counts, badges and press claims, interface references, pricing and plan names, character limits, free tier mention, and keyword targets. Then review against the original source rather than re-reading the copy, since re-reading only confirms the copy is well written.

    What should the first line of an app store description say?

    What the user gets. The first 250 characters are all most people see before the fold, and many read nothing beyond them, so opening on a greeting or a company introduction spends your only guaranteed impression on something the user did not come for. If you have a meaningful free tier, that belongs in the same space, alongside the subtitle or short description.

    Working on this?

    We help consumer apps and products reach their next phase of growth.

    Growth notes, in your inbox

    New writing on subscription growth and product-led strategy when I have something worth saying. No spam.

    Otter Growth AdvisoryProduct growth for consumer apps and products