v0.7.0 ยท Age + Residency Proofs

Age verification without your ID.

States and countries are mandating age checks for websites, apps, and services. Most solutions ask you to upload a photo of your driver's license or passport โ€” trading one privacy problem for a worse one. zk-id is the escape hatch: prove you're 18+ without revealing your name, birthday, or ID number. Only a cryptographic proof leaves your device.

Your data stays on your device. Only the proof leaves.

Why This Exists

Age‑verification laws are accelerating. The UK's Online Safety Act, state laws in Louisiana and Texas (plus many more), and incoming EU rules all push platforms to confirm users are adults. Compliance isn't optional, and the deadline pressure is real.

The default solutionโ€”uploading a government ID for a third‑party scanโ€”creates a permanent record that links identity to browsing. The cure is worse than the disease. Centralized ID checks become honeypots: they're breached, subpoenaed, and sold.

zk‑id uses zero‑knowledge proofs so users can prove a fact ("I'm over 18," "I'm a US resident") without exposing the underlying data. Verifiers learn only what they asked forโ€”nothing else. No name, no birthday, no ID scan, no persistent identifier. It's the least invasive way we know to comply with these laws.

The Wallet

zk-id Wallet

โœ“ Native iOS app (SwiftUI) โ€” built and working
โœ“ Credentials stored only on your device
โœ“ ~300ms proof generation via hybrid rapidsnark
โœ“ OpenID4VP deep-link verification flow

TestFlight beta and Android support coming soon.

Screenshots coming soon

See It In Action

๐ŸŽฅ

Demo video coming soon

Try the live playground instead

Add Age Verification in 3 Lines

// 1. Import the SDK
import { ZkIdClient } from '@zk-id/sdk';

// 2. Initialize and verify
const client = new ZkIdClient({
  verificationEndpoint: 'https://your-verifier.com/verify'
});
await client.verifyAge(18);

// 3. That's it! ๐ŸŽ‰
View Integration Guide

Features

๐ŸŽฏ

Selective Disclosure

Prove you're 18+ without revealing your exact birth year. Verify citizenship without exposing other attributes.

โšก

Browser-Based Proofs

Generate ZK proofs entirely in the browser using snarkjs. No server round-trips for proof generation.

๐Ÿ”

Production-Ready Security

Groth16 ZK-SNARKs with trusted setup from Powers of Tau. Poseidon hash-based credentials.

๐Ÿ“ฆ

TypeScript SDK

Simple integration with TypeScript SDK. RESTful API for verification from any language.

๐Ÿ—‘๏ธ

User-Controlled Revocation

Kill any credential from the wallet at any time. You issued it; you can revoke it. Verifiers see the credential as invalid immediately.

Latest from the Blog

View all posts โ†’

Integrations

Zero-knowledge identity verification for your stack

๐ŸŒ

OpenID4VP

Standards-compliant verifiable presentations with W3C and DIF

๐Ÿ“ฑ

Mobile SDK

Native iOS wallet (SwiftUI) โ€” built and shipping. Cross-platform SDK planned.

๐Ÿ”—

REST API

Language-agnostic HTTP API for verification servers

๐Ÿ—บ๏ธ

US/EU Residency Proofs

Prove US or EU residency without revealing your specific country. The nationality-set-verify circuit supports up to 32 allowed nationality codes including all 27 EU member states.

๐Ÿ‡ช๐Ÿ‡บ

EUDI Wallet

EU Digital Identity Wallet integration (Coming Q2 2026)

๐Ÿ”

Digital Credentials API

Browser-native credential storage (Coming Q3 2026)