Paywall design
The discipline of architecting and continuously experimenting on the screen(s) where a consumer-app user is asked to subscribe. The wiki’s empirical sources converge on a striking finding: there is no universal best paywall — and yet a small number of moves do lift conversion almost everywhere they’re deployed.
The “no perfect paywall” thesis
The single hardest-earned lesson from Jonathan Parra’s 4,500+ designs at Superwall (I Made 4,000 App Paywalls and Learned This (video)):
Same app category. Same paywall design. Performance flounders in one app and crushes in another.
The space is locally smooth, globally rough. Within one app the optimization landscape behaves: you can iterate, you can read signal, conversion rates trend. Across apps, the same design has wildly different fates. This means the unit of useful knowledge in paywall design is not a template but a component system + an empirical prior about which moves usually help.
What does port well
Despite the “no perfect paywall” finding, a handful of patterns repeatedly clear the bar across categories:
The bullet-list single-page baseline
The most reliably-portable paywall — per Parra, the one he ships first for every new customer:
- Heading + short USP subtitle
- Short bulleted feature list (no comparison table)
- Optional social-proof row
- Subtitle: “no commitment, cancel anytime”
- One large CTA (65pt button height, generic Continue copy, right-chevron arrow)
- Annual selected by default
It’s the null hypothesis for every subsequent experiment. New variants compete against it.
The “no commitment, cancel anytime” subtitle
A consistent small bump on almost every paywall it’s added to. Cheap, low-risk, additive. The rare move with no known counter-pattern.
Generic Continue beats descriptive CTAs
Repeatedly in Parra’s tests: a generic Continue button beats variants like Put AI into action or Start using [app]. The user isn’t reading; descriptive CTAs add cognitive load without converting it to confidence. See Cognitive load.
Native-design-language paywalls
When the broader app uses Apple’s default Swift UI design system, Swift-UI-styled paywalls outperform custom variants. Parra has reproduced this twice. The mechanism is the Familiarity principle at the paywall surface: a custom paywall reads as foreign in an otherwise native UI, breaking the trust the rest of the app has built.
The corollary: custom-design paywalls win in apps whose broader UX is already custom (Mojo, Hinge, Calm). The right paywall doesn’t break the design language.
Hide the picker, surface the trial
Multi-product selectors (weekly / monthly / annual) create decision fatigue — see Cognitive load. The cleaner move:
- Default to annual (LTV-maximizing)
- Hide the rest behind a view all plans drawer
- Move the trial framing onto the CTA itself: Start my 3-day free trial
If you do show multiple products, order them by length cadence (longest-to-shortest or shortest-to-longest, never jumbled).
The cascade pattern (Clear-30-inspired)
A multi-screen architecture for apps that have already done a lot of testing:
Main paywall
Annual selected, simple bullets, Continue
↓ user closes ↓
Drawer paywall
"Not ready to commit for a year? We have plans for everyone"
Annual STILL selected; Monthly added below
↓ user closes ↓
One-time offer
"We want you to try [app] for free" (or 25–33% off)
Per-week reframe: $39/year → 76¢/week
Discounted yearly: $39 → $29.99
Three reinforcing principles:
- Default-and-defend — annual stays selected through every cascade; only the framing around it changes
- Per-week reframe — the same price re-encoded as a smaller-number rate; see Framing effect
- Discount discipline — keep in-flow discounts at 25–33%; reserve 50%+ for Black Friday / Cyber Monday so users don’t habituate to open paywall → close → cheap deal
Parra calls the pattern “gray hat” — it’s structurally honest (the user gets three legitimate off-ramps) but unapologetically optimized for LTV at each step.
Design tests vs price tests
A practitioner-strong claim from Parra: design tests yield more conversion lift, more easily, than price tests. Founders default to the opposite. Two reasons design tests win the first round:
- The lever is larger (a +111% comparison-table-vs-stripped-image case beats any reasonable price tweak)
- Cohort overhead is lower — Superwall’s price testing requires user-seed audience management that compounds with each new experiment
Price testing belongs later, after design tests have plateaued.
What founders typically test wrong
Per Parra’s repeated observation:
| Common founder move | What actually moves the needle |
|---|---|
| A/B test $9.99 vs $14.99 first | Ship a bullet-list baseline; iterate on layout, copy, image/video |
| Show all three plans upfront for “transparency” | Default to annual; hide the rest behind view all plans |
| Write descriptive CTA copy | Use generic Continue |
| Slap Limited time 70% off as a small-font badge | Either put scarcity in a heading on a one-time-offer page, or remove it |
| Build comparison tables to “help users decide” | Strip the table; use bullets or a single image |
The unifying pattern: paywalls reward subtraction.
How big is the lift?
| App stage | Typical lift from paywall iteration |
|---|---|
| Large app (~$100k MRR) that hasn’t A/B tested paywalls | Compounding wins on first round; “immediate value” |
| Newer app ($10–50k MRR) | 8% → 15–20% conversion after a few iterations |
| Mature app already deep in testing | Smaller marginal lifts; gray-hat cascade and Swift-UI variants still find +10–30% pockets |
The largest gains live in apps where the team has invested heavily in product and barely at all in paywall craft.
Where this connects
- Cognitive load — the recurring engine under “less beats more”; decision fatigue from multi-product pickers
- Familiarity principle — Swift-UI-native paywalls outperform custom variants on Swift-UI-feeling apps
- Framing effect — the per-week reframe; we want you to try copy; tier-color contrast as a visual frame
- Anchoring bias — annual selected by default; high-tier-first contrast; longest-to-shortest plan order
- Loss aversion — the close-drawer cascade as a stack of escalating off-ramps; the one-time-offer drawer
- Scarcity principle — Limited time in small font does nothing; scarcity needs a heading on a one-time-offer page
- Decoy effect — inverse application: hiding the third product beats showing it
- Social proof — accolades placement on multi-page paywalls
- Progressive disclosure — the Blinkist day-by-day timeline paywall as the canonical paywall application
- Gift vs receipt — the we want you to try [app] framing as gift-coded copy
Sources
- I Made 4,000 App Paywalls and Learned This (video) — Jonathan Parra’s 4,500-paywall design system; the no-perfect-paywall thesis; bullet-list baseline; Clear-30 cascade; Swift UI surprise
- Copy These SaaS Growth Tricks (video) — Tim Gabe’s eight A/B-tested SaaS subscription cases; the bias-stack framing of the conversion surface