A checkpoint barrier across a dust-blown road.

Privacy-first age verification

The Age Gate and SEO

An age gate can wipe out a site's search presence — if it swaps content for an interstitial. This one doesn't.

ComplyAge's Age Gate does not change the HTML your server sends. The shield is a CSS overlay added by a script at runtime, so search engines fetch and index the underlying page exactly as before. What a crawler cannot do is complete a verification — so the practical questions are about rendering, interstitial guidance, bots, previews and performance, and each is answered below.

What the gate changes — and what it doesn't

The gate adds a full-viewport overlay element to the DOM and, in enforced regions, an iframe inside it. It removes nothing, hides nothing from the HTML source, and rewrites no text. Titles, meta descriptions, headings, body copy, structured data and Open Graph tags are all delivered unchanged. The only behavioural change for a human is that they cannot see the page until the gate resolves.

How Googlebot experiences it

Googlebot fetches your HTML, then renders it with JavaScript. The rendered DOM contains your content plus the overlay. Google indexes text from the DOM regardless of whether an overlay sits on top, so your pages rank on their content. Googlebot's IP resolves to a US region; in an enforced US state the decision returns verify and the overlay stays — which does not affect indexing, because the content is still present. Google's own guidance treats legally required interstitials such as age verification as acceptable and excludes them from the intrusive-interstitial signal.

Do not cloak

It is tempting to detect crawlers by user agent and serve them the page without the gate. Don't. Serving different content to crawlers than to users is cloaking, and you don't need to — the crawler already receives the full content. The gate script is the same for everyone.

Bots, previews and link unfurls

Social scrapers (Facebook, X, Slack, LinkedIn) read Open Graph tags from the HTML without executing JavaScript, so link previews are unaffected. Non-rendering crawlers see no overlay at all. Rendering crawlers see the overlay and the content. In every case, the metadata and the words are there.

Core Web Vitals

The script is a few kilobytes and paints the shield synchronously, so first paint is early and stable — the shield itself can become the Largest Contentful Paint element, which is fine. Returning visitors with a valid pass are revealed without a network round-trip. Keep the script tag in <head> (it must run before content paints for compliance), let it load async, and avoid layout shifts by not resizing the page when the overlay is removed.
  • Script in <head>, async, ~4 KB
  • Shield paints before content — no flash of gated content
  • Returning visitors: pass verified locally, no request
  • No layout shift on reveal (the overlay is position: fixed)

Should gated pages be noindex?

No, unless you have a separate reason. The whole point of keeping the HTML intact is that your content remains discoverable. Use noindex only for pages you would exclude anyway — account areas, checkout, search results.

Checklist

Before shipping the gate on a production site:
  • View-source shows your full content with the gate script in <head>
  • Google Search Console URL Inspection renders the page with content present
  • Open Graph and JSON-LD validate exactly as before
  • No user-agent based branching around the gate
  • Lighthouse: no new layout shift, LCP within budget

Frequently asked questions

Is an age gate cloaking?
Not this one. Cloaking is serving crawlers different content from users. ComplyAge's gate serves identical HTML to everyone and only overlays it in the browser.
Will Google penalise the overlay as an intrusive interstitial?
Google's guidance explicitly excludes interstitials required by law — cookie consent, age verification — from the intrusive-interstitial signal.
Can Googlebot verify its age?
No, and it does not need to: the content it indexes is in the HTML and the rendered DOM regardless of the overlay.
Does the gate slow my pages down?
Measurably little: a small synchronous shield, an async decision request, and a local pass check for returning visitors. Keep the script in <head> and async.