How Many CTAs Does the Median Paywall Have?

The median mobile paywall has 2 distinct CTAs, based on 874 paywalls with extracted CTA rows in Lazyweb's corpus (p25=1, p75=3, mean 2.89).[1] A plurality — 41.8% — have just one CTA, while 21.2% carry four or more.[1] If you are deciding how many tappable actions to put on a paywall, one-to-three is the normal range and the median is two.

The median mobile paywall shows 2 distinct CTAs; 41.8% have just one and 21.2% have four or more, across 874 paywalls (Lazyweb Research, July 2026).

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

paywallcheckoutmonetizationux-patternsmobile

The finding

Across 874 canonical paywalls with extracted CTAs, the median number of distinct CTA texts is 2 (p25=1, p75=3, mean 2.89).[1] The distribution is front-loaded: 41.8% of paywalls have a single CTA, 25.7% have two, 11.3% have three, and 21.2% have four or more.[1] Distinct-text dedup is used to avoid double-counting re-extractions; raw row counts have a long tail (one canonical had 114 rows), so the median-of-2 reflects distinct on-screen actions, not raw extraction volume.[2]

CTA-count distribution

Distinct CTAsPaywallsShare of 874
136541.8%
222525.7%
39911.3%
4+18521.2%

Summary stats: median 2, p25 1, p75 3, mean 2.89.[1]

How to apply it

One or two CTAs is the norm — typically a primary subscribe/continue action plus a secondary (restore, view all plans, or dismiss).[1] The role mix across all 4,406 extracted CTAs is primary-heavy: 1,886 primary, 597 secondary, 196 dismiss.[3] Four-plus-CTA paywalls exist (21.2%) but usually reflect multiple plan buttons plus footer links; if your paywall is drifting past three tappable actions, check whether extra plan buttons are pulling attention from the primary CTA.[1]

Caveats

Counts are distinct CTA texts per canonical from the paywall CTA extraction (874 of 1,297 paywalls have extracted rows), so paywalls without extracted CTAs are excluded.[1] Role figures are reported separately across the full 4,406-CTA set and 39% of rows are role-unknown, so treat the primary/secondary/dismiss split as the labeled subset.[3]

The numbers

StatComputed from
median 2 CTAs (p25=1, p75=3, mean 2.89); 1=365 (41.8%), 2=225 (25.7%), 3=99 (11.3%), 4+=185 (21.2%), n=874cta_count_per_paywall: median 2, p25 1, p75 3, mean 2.89; distribution 365/225/99/185 of 874
874 of 1,297 paywalls have extracted CTAs; max 114 raw rows on one canonicalcta_count_per_paywall: n=874, distinct-text dedup, max 114 rows
4,406 CTAs: primary 1,886, secondary 597, dismiss 196, unknown 1,727 (39.2%)cta_role_mix: 4,406 rows; primary 1,886, secondary 597, dismiss 196, unknown 1,727
Methodology. Universe: 874 canonical paywalls with extracted CTAs across ~800 tracked apps (4,406 CTAs, 252 companies). CTA count = distinct lowercased CTA texts per canonical. July 2026 pull. Key caveat: paywalls without extracted CTAs are excluded; role figures use the 2,679 labeled rows.

Sources & citations

  1. [1] Lazyweb Research analysis of 874 paywalls with extracted CTAs (~800 tracked apps), July 2026. Distinct CTA texts per canonical paywall from the paywall CTA table; distinct-text dedup to avoid re-extraction double counts.
  2. [2] Lazyweb Research analysis of 4,406 paywall CTAs (252 companies, 874 canonicals), July 2026. Role mix across all extracted CTAs; 39.2% are role-unknown, so role-based figures reflect the 2,679 labeled rows.

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