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.
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 phrasing | CTAs | Companies |
|---|---|---|
| try for $0.00 | 10 | 5 |
| 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 | 1 |
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
| Stat | Computed from |
|---|---|
| 219 of 1,886 primary CTAs contain a price/period (11.6%), 57 of 222 companies | statpack 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/1 | statpack price_in_button_examples |
| 1,727 of 4,406 CTAs role-unknown (39%) | statpack role_distribution |
Sources & citations
- [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] 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.