How do you verify age online without killing conversion?
Match the method to the stakes, then run estimation-first with a document fallback: facial age estimation with a buffer above your threshold — verifying 18, auto-clear at 21 and over — routing only the uncertain band to an ID check. After launch watch gate completion rate, drop-off against baseline, and false-bounce reports.
This guide is for product and trust & safety leads at platforms that must verify age: social, gaming, dating, vape and alcohol delivery, and adult content. By the end you'll have a verification method matched to your risk level, a tiered flow that doesn't torch signup conversion, and the numbers to watch after launch.
Accept the real constraint
Age verification laws now come with teeth: platform liability, per-violation fines, and in several US states a private right of action. At the same time, every second of verification friction costs signups, and your growth team can tell you exactly how many.
So the design question is narrower than "how do we verify age": it's "what is the least friction that satisfies our legal exposure for each thing a user does". That last clause does the heavy lifting. Age-gate the action, not the front door.
Choose the method by stakes
| Method | What it is | Friction | Assurance | Use when |
|---|---|---|---|---|
| Self-declaration | Birthday form | None | None (users type whatever helps them) | Only as a first tier where law permits, or to segment minors honestly present |
| Facial age estimation | Live selfie, model estimates age; no ID, no name | Seconds | High for "clearly adult" cases | The workhorse: most adult users clear it instantly and anonymously |
| ID document check | Government ID capture + selfie match | Highest | Highest, legally strongest | Regulated goods, borderline estimation results, disputes |
| Third-party signals | Carrier, credit, or email-history checks | Invisible | Moderate, coverage gaps | Background corroboration, not a primary gate |
The pattern that preserves conversion is estimation-first with an ID fallback: run facial age estimation with a buffer above your threshold (verifying 18? auto-clear at 21+), and route only the uncertain band to a document check. Most adult users never see the ID step, which is precisely the step where drop-off lives.
Build the tiered flow
- Map actions to risk tiers. Browsing marketing pages: no gate. Creating an account: light gate. Purchasing restricted goods, accessing adult content, chatting with strangers: hard gate. Write the map down with counsel's sign-off; it's also your audit defense.
- Gate at the moment of intent, not at signup. A user who hits the age check while trying to do the restricted thing completes it at far higher rates than one ambushed on the landing page. Intent absorbs friction.
- Run estimation as the default check. Seconds, no document, nothing typed. Set the auto-clear buffer per your risk tolerance and record it in your policy.
- Fall back to ID verification for the uncertain band and for users who prefer it (some will: cameras fail, lighting is bad, faces near the threshold exist).
- Persist the verification, don't repeat it. Once verified, bind the result to the account. Forcing re-verification on every session is how platforms convert users to competitors.
- Minimize what you keep. For estimation, you never needed the name at all; that anonymity is a feature to advertise, not hide. For ID checks, store the outcome and audit reference, not a warehouse of ID photos. Several state laws punish retention explicitly.
Handle the edge cases before they're incidents
- Estimation says under, user insists over: always offer the document path. Never dead-end a real adult
- Presentation attacks: photos of photos, masks, screens. Liveness detection on the selfie step is non-negotiable; without it your age gate is a jpeg check
- Shared devices: re-check at the restricted action if the account shows minor-usage signals
- Accessibility: a no-camera path (document upload or manual review) so the flow doesn't exclude users with different needs
- Failed attempts: cap retries, then route to support with a human, not a loop
Watch three numbers
- Gate completion rate, split by method. Estimation should complete far above the document path; if it doesn't, the capture flow is broken.
- Drop-off at the gate versus your pre-launch baseline. This is the cost line your growth team will bring to the next roadmap fight; measure it before they do.
- False-bounce reports: real adults failing. Every one is lost revenue plus a support ticket, and the fix is usually the buffer, not the model.
The compliance file
Keep one folder your counsel can hand a regulator: the action-to-tier map, method configuration (thresholds, buffers), retention policy, and per-verification audit records. Laws differ by state and country and keep changing, but "we assessed, we gated proportionately, we can prove each check" is the defensible posture in all of them.
Verifa's age verification runs exactly this stack (estimation-first, document fallback, liveness on both) through one API, with models in-house so no PII leaves the platform. For the document-check layer, see how to spot a fake ID; for wiring the API, how to integrate a KYC API. Liveness detection explains the anti-spoofing layer both paths rely on.