← Back to IM18+ Home

Zero-Knowledge Age Verification

Privacy-Focused Verification

IM18+ implements a zero-knowledge approach to age verification, meaning we only store the minimum information necessary: whether a user has been verified, not their identity.

🛡️ What We Don't Store

  • • ❌ Names or personal identification
  • • ❌ Birth dates or age numbers
  • • ❌ Email addresses or contact information
  • • ❌ Document images or ID scans
  • • ❌ IP addresses or tracking data
  • • ❌ Browsing history or site visits

✅ What We Do Store

  • • ✅ Single verification status: verified=true
  • • ✅ Verification timestamp for expiry management
  • • ✅ Domain whitelist for authorized partner sites

Technical Implementation

1. Stateless Verification

No user accounts or registration required

// Only stores boolean verification status setcookie('age_verified', 'true', time() + (30 * 24 * 60 * 60));

2. Anonymous Session

No correlation between verification and identity

// No user tracking or session storage $verified = ($_COOKIE['age_verified'] === 'true');

3. Isolated Domain

Partner sites cannot access verification details

// Cross-domain isolation via iframe parent.postMessage({verified: true}, '*');

Verification Process

1

Submit Age

User confirms they are 18+ (no personal data collected)

2

Set Cookie

Boolean verification flag stored locally

3

Access Granted

Partner sites receive verification status only

Privacy Guarantees

🔒 Data Minimization

We collect the absolute minimum data required for age verification - just a confirmation that you're 18+.

🚫 No Tracking

No analytics, tracking pixels, or behavioral monitoring. We don't know which sites you visit.

⏰ Automatic Expiry

Verification expires after 30 days, requiring periodic re-confirmation without storing history.

🌐 Cross-Site Isolation

Partner sites cannot access or modify verification data - only receive yes/no status.

Code Example: Zero-Knowledge Check

<?php
// Zero-knowledge verification check
// No personal data processing or storage

function isAgeVerified() {
    // Only check boolean cookie value
    return isset($_COOKIE['age_verified']) && $_COOKIE['age_verified'] === 'true';
}

function setAgeVerified() {
    // Only store verification status, no personal data
    $expires = time() + (30 * 24 * 60 * 60); // 30 days
    setcookie('age_verified', 'true', $expires, '/', '.im18.app', true, true);

    // No database storage, no user tracking
    // No logs containing personal information
}

// Usage: Simple boolean check
if (isAgeVerified()) {
    echo json_encode(['verified' => true, 'source' => 'im18plus']);
} else {
    echo json_encode(['verified' => false, 'verification_url' => '/verify.php']);
}
?>

⚖️ Legal Compliance

Our zero-knowledge approach ensures compliance with GDPR, CCPA, and other privacy regulations by design. Since we don't collect personal data, there's nothing to breach or misuse.