Do Top Apps Put the Price Inside the Paywall Button?

Across 1,886 primary paywall CTAs from ~800 tracked apps, only 11.6% (219) put a price or billing period inside the button, used by 57 of 222 companies [1]. Price-in-button is a minority pattern — the large majority of apps keep the number on the plan cards and keep the button verbal ('Continue', 'Start Free Trial'). The most common price phrasing is actually a $0.00 trial framing, not a full price.

Only 11.6% of primary paywall CTAs (219 of 1,886) put a price in the button, across 57 of 222 companies — Lazyweb Research, July 2026.

Lazyweb Research · n=1886 · Published 2026-07-07

paywallpricingmonetizationcheckoutux-patterns

The finding

Just 219 of 1,886 primary CTAs (11.6%) contain a currency symbol or billing period ('$', '/mo', '/year', 'per month', etc.), and they come from 57 of the 222 companies with a labeled primary CTA [1]. Nearly nine in ten primary buttons stay verbal and leave the price to the plan cards above. Price-in-button is a deliberate, minority choice — not the default.

What the price buttons actually say

Price-in-button phrasingCTAsCompanies
try for $0.00105
unlock $3.3 per month71
continue $9.9951
try premium for $051
subscribe for $3.99/year51
lifetime $9.9941

The single most common price phrasing is 'try for $0.00' (10 CTAs, 5 companies) — a $0.00 trial framing, i.e. the price shown is the free-trial cost, not the subscription price [2]. Most other price buttons are single-company anecdotes; read the company column.

How to apply it

Because only 11.6% of apps do it, a bare price in the button will look distinctive — which can help (transparency, no surprise at checkout) or hurt (commitment anxiety before the user has read the value prop). The most-copied pattern isn't a scary price at all; it's the '$0.00' trial framing that reassures rather than charges [2]. If you test price-in-button, the corpus suggests the winning angle is emphasizing 'free/$0' up front, not the recurring number.

Caveats

Matching is a regex for currency symbols and billing periods on lowercased text, so it catches '$0.00' and '/mo' but not spelled-out prices without symbols. Denominator is 1,886 primary CTAs; 39% of the 4,406 corpus is role-unknown and excluded [3]. Sub-rank examples ('unlock $3.3 per month', etc.) are mostly single-company and should be read as anecdotes, not norms.

The numbers

StatComputed from
219 of 1,886 primary CTAs contain a price/period (11.6%), 57 of 222 companiesstatpack price_in_button_primary
top price-in-button phrasing: try for $0.00 (10 CTAs, 5 cos); unlock $3.3 per month 7/1; continue $9.99 5/1; try premium for $0 5/1; subscribe for $3.99/year 5/1; lifetime $9.99 4/1statpack price_in_button_examples
1,727 of 4,406 CTAs role-unknown (39%)statpack role_distribution
Methodology. Universe: 1,886 role-labeled primary paywall CTAs from ~800 tracked mobile apps, July 2026. Price-in-button matched by regex for currency symbols, /mo|/week|/year, or 'per month/week/year'. Caveat: spelled-out prices without symbols are missed; 39% of CTAs are role-unknown.

Sources & citations

  1. [1] Lazyweb Research analysis of 1,886 primary paywall CTAs (from ~800 tracked mobile apps), July 2026. Regex match for currency symbols and billing periods on lower(cta_text).
  2. [2] Lazyweb Research analysis of 219 price-in-button primary CTAs (from ~800 tracked mobile apps), July 2026. Grouped exact price phrasings with CTA and distinct-company counts.

Source: Lazyweb Research — proprietary analysis of real, in-market app screens. Cite as Lazyweb Research, 2026-07-07.

Related questions

Explore the underlying screens, flows, and A/B tests inside Lazyweb. More research