Should the price go inside the paywall button or above it?
- By Ali Abouelatta
- n = 1,886
- Published
- Updated
- 3 min read
- paywall · pricing · monetization · checkout · ux-patterns · design
Short answer
Most apps keep price out of the button: only 11.6% of 1,886 primary CTAs embed a price, while a further 8.2% show the price in the copy above the button, and roughly 80% show no price in the extracted CTA-adjacent copy at all source[1]source[2]number[3]. The dominant pattern is a soft CTA verb with the price living in the surrounding line — not on the button itself.
Only 11.6% of 1,886 primary paywall CTAs embed a price; 8.2% show it just above the button — July 2026.
2×2
How 630 paywalls combine offer framing × price-in-button
Most paywalls (70%) are direct with no price in the button; putting a price in the button is the exception in every quadrant. Source: Lazyweb Research, 630 paywalls.
← Direct (no trial)Trial-led →
- top-left: Trial-led · no price
- 108 (17%)
- top-right: Trial-led + price
- 20 (3%)
- bottom-left: Direct · no price
- 443 (70%)
- bottom-right: Direct + price
- 59 (9%)
← No price in buttonPrice in button →
Bar chart · Share
Share — The finding: the button rarely carries the price
One block is about 2.9%
- Inside the button text
- 11.6% [1]
- Above the button (adjacent copy)
- 8.2% [2]
- No price in extracted CTA-adjacent copy
- 80.2% [3]
The finding: the button rarely carries the price
So among CTAs where a price is visible near the button, price-above-the-button (8.2%) and price-in-button (11.6%) are the same order of magnitude, but both are minorities — the norm is a button with no price on it and often no price in the immediately adjacent copy either source[1]source[2]number[3].
What each pattern looks like
Price in the button is a direct, transactional style — the number is the commitment:
- Zeus — "$50.99/year" number[4]
- iam — "Only $49/year" number[4]
- Elevate — "Unlock for $3.3 per month" number[4]
Price above the button pairs a soft verb with the offer detail in the line above — e.g. PictureThis's "Continue" under "Try 7 days free, then $39.99/year" number[5]. This is the more common shape overall given that 'Continue' (21.2%) and 'Start' (16.9%) lead the primary-CTA verbs number[6].
How to apply this
Default to keeping the price out of the button and placing it in a clear line above — that matches the majority pattern and pairs naturally with the dominant soft verbs ('Continue', 'Start') number[3]number[6]. Put the price in the button when you want a maximally transparent, transactional feel (common in price-forward categories like Graphics & Design) — it's a legitimate ~12% pattern, not a mistake source[1]. Whichever you choose, if there's a trial, the price should still appear somewhere adjacent as a trial-then-price line so the renewal terms are clear. Treat in-button vs above-button as an A/B test, since both are established.
Caveats
'No price visible' (80.2%) means no price in the extracted CTA-adjacent copy only — prices on plan cards or elsewhere on the screen aren't captured, so this is 'price outside the button/CTA area,' not 'no price on the paywall' number[3]number[7]. Price detection uses a currency-symbol/decimal + period-unit regex; primary-role CTAs only (39% unknown-role excluded) number[8]. Whole-percent rounding applies.
Real in-market screens
Screens from real, in-market apps, tracked by Lazyweb Research.
The numbers
| # | Stat | Computed from |
|---|---|---|
| [1] | Price inside the button: 219/1,886 (11.6%) | price_in_cta_share: 219/1886 = 11.6% |
| [2] | Price above the button only: 155/1,886 (8.2%) | price_above_cta_only_share: 155/1886 = 8.2% |
| [3] | No price in adjacent copy: 1,512/1,886 (80.2%) | price_above_cta_only_share note: 1,512 = 80.2% |
| [4] | Zeus, iam, Elevate price-in-button examples | qualitative price in CTA entries |
| [5] | PictureThis 'Continue' + 'Try 7 days free, then $39.99/year' | qualitative picturethis 7-day entry |
| [6] | Continue 21.2%, Start 16.9% lead CTA verbs | cta_verb_families: continue 399 (21.2%), start 318 (16.9%) |
| [7] | 'No price visible' = adjacent copy only, not whole screen | smallSampleWarnings: price not visible framing |
| [8] | 39% CTA rows role='unknown', excluded | universe note |
Methodology
Universe: 1,886 primary CTAs across ~800 tracked apps, July 2026. Price detected via regex over CTA button text and adjacent extracted title/subtitle only; 'no price' means no price in that adjacent copy, not the whole screen.
Sources
- [1]
Lazyweb Research analysis of 1,886 primary paywall CTAs (~800 tracked apps), July 2026
Price-in-button via currency/decimal + period-unit regex on cta_text; 219 rows.
- [2]
Lazyweb Research analysis of 1,886 primary paywall CTAs (~800 tracked apps), July 2026
Price-above-button = no price in button but price in adjacent title/subtitle; 155 rows. 'No price' (1,512) means adjacent copy only.
Source: Lazyweb Research — proprietary analysis of real, in-market app screens. Cite as Lazyweb Research, 2026-07-07.



