Skip to content
Mera News

Publisher guide, chapter 4

Paywalls

Last reviewed November 2026

A paywall works best when a reader has seen enough to want more. Set it too tight and new readers leave before they know your journalism. Set it too loose and it never asks. Google's Flexible Sampling guidance gives a useful starting point, and the rest of this chapter covers how to mark up the wall and show it on each screen.

Set the meter

Google advises monthly metering over daily metering. A monthly meter leaves more room to test, and it shows the wall mostly to your most engaged readers.

  • For most daily news publishers, Google expects a figure of 6 to 10 articles per reader per month.
  • Google suggests starting at 10 free articles a month for readers coming from Search, then adjusting.
  • The exact number is your decision. Look for a figure that gives Search readers about the same chance of meeting the paywall as they have today.

Google also reports that general user satisfaction starts to degrade significantly when paywalls are shown more than 10% of the time, which it says generally means about 3% of the audience has seen one. Change the meter in small steps. Google warns that restricting access may affect how articles rank.

Show a lead-in

Once the meter runs out, keep showing the first few sentences. Google calls this a good practice, because the reader can see the value of the article and may be more likely to subscribe. The headline, byline, date and lead-in should all stay visible above the prompt.

Mark up what is paid

Use structured data so Google can tell paid content from cloaking. Set isAccessibleForFree to false, and point hasPart at the class that wraps the paid section.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "headline": "Article headline",
  "datePublished": "2026-11-05T08:00:00+01:00",
  "isAccessibleForFree": false,
  "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": false,
    "cssSelector": ".paywall"
  }
}
</script>

<div class="lead-in">The free opening of the article.</div>
<div class="paywall">The paid part of the article.</div>

Three rules from Google apply:

  • Use .class selectors only.
  • Don't nest paid sections.
  • For several paid sections, make hasPart an array with one entry per section.

Stay clear of cloaking

Cloaking means showing search engines different content from what people see, in order to manipulate rankings. Google says a paywall isn't cloaking if Google can see the full content behind it, just as a person with access can, and you follow its Flexible Sampling guidance.

This leaves you a choice about where the wall sits.

Paywall typeHow it worksWhat to watch
Client-sideThe full text reaches the browser, and a script hides itAnyone can read the text in the page source, including scrapers
Server-sideThe server sends the lead-in only, unless the visitor has accessEvery request needs an access check

Google says that if content must not reach the browser, you should choose an implementation that doesn't deliver it.

If your server gives Googlebot the full text, verify each request first. Do a reverse DNS lookup on the IP address, confirm the host is on googlebot.com, google.com or googleusercontent.com, then run a forward lookup and check it returns the same address. You can also match against Google's published IP ranges. A check on the User-Agent alone hands your articles to any scraper that copies Googlebot's name. The AI scraping chapter covers this further.

Show the wall well

Place the prompt in the page, directly after the lead-in. An inline panel needs no focus trapping, leaves the reader free to go back, and adds no overlay for Google to weigh. If you do use an overlay, build it to the modal pattern in the pop-ups chapter.

On mobile

  • Show the lead-in in full, with the prompt below it.
  • Put the price and the main action in the first few lines of the prompt.
  • Reserve the panel's space, so the page doesn't jump when the access check returns.
  • Use tap targets of 44 by 44 CSS pixels for the subscribe and sign-in actions.

On desktop

  • Keep the prompt in the article column, at the same width as the text.
  • Avoid a blurred article behind the prompt. Text hidden with CSS stays in the HTML, and a screen reader may still read it.
  • Leave the site navigation working, so a reader can move to free content.

For everyone

  • Say how many free articles are left before the meter runs out, not after.
  • Give the price, the billing period and how to cancel on the first screen of the offer.
  • Offer a sign-in link for existing subscribers beside the offer.
  • Let readers paste passwords and use password managers. WCAG 2.2 success criterion 3.3.8 limits memory tests at sign-in.
  • Keep paid text out of your RSS feed. A headline, a short description and a link are enough.

Checklist

  • Switch from a daily to a monthly meter if you can.
  • Start from 10 free articles a month for Search readers, and record the effect of each change.
  • Keep the headline, byline, date and lead-in visible after the meter runs out.
  • Add isAccessibleForFree and hasPart to every paid article template.
  • Confirm the cssSelector class exists on the page and isn't nested.
  • Decide between client-side and server-side delivery, and record why.
  • Verify Googlebot by DNS or IP range, never by User-Agent alone.
  • Inspect a paid article with the URL Inspection tool in Search Console.
  • Move the prompt inline, and test it on a phone and with a keyboard.
  • Check your feed for paid text.

Sources