Self Pass
# Self Pass
Privacy-preserving identity verification using zero-knowledge proofs.
:::warning[Self Pass is legacy]
**Self Pass is now legacy. New integrations should use [Self Enterprise](/docs/self-enterprise/get-started/quickstart/).** Self Pass is the open-source SDK where you render your own QR and run the verifier yourself. Self Enterprise is the managed platform that handles both for you, with a dashboard, webhooks, and support. These docs remain for existing integrations; if you're starting fresh, follow the [Enterprise quickstart](/docs/self-enterprise/get-started/quickstart/). Already on Self Pass? See the [migration guide](/docs/self-enterprise/migration/from-self-pass-sdk/).
:::
## Overview
Self Pass enables developers to verify real-world identity attributes without exposing personal data. Users scan their passport, national ID, Aadhaar card, or KYC attestation with the Self app, which generates a zero-knowledge proof on-device. Applications can then verify specific attributes (age, nationality, sanctions status) without ever seeing the underlying document.
## Supported Documents
* **Passports** — NFC-enabled passports from 60+ countries
* **EU National ID Cards** — Chip-enabled European identity cards
* **Aadhaar** — India's national identity system
* **KYC Attestations** — Third-party KYC provider attestations
## Getting Started
Start with the [Quickstart](/docs/self-pass/quickstart/) guide, or fork the [boilerplate repo](https://github.com/selfxyz/self-integration-boilerplate) for a working example.
## Integration Options
| Path | Description | Guide |
|------|-------------|-------|
| **Frontend SDK** | Display QR codes to request proofs from users | [QRCode SDK](/docs/self-pass/frontend/qrcode-sdk/) |
| **Backend SDK** | Verify proofs server-side on a Node.js backend | [Backend Integration](/docs/self-pass/backend/basic-integration/) |
| **Smart Contracts** | Verify proofs on-chain in a trustless manner | [Contract Integration](/docs/self-pass/contracts/basic-integration/) |
| **Mobile SDK** | Embed Self verification directly in a React Native app | [Mobile SDK](/docs/self-pass/mobile-sdk/getting-started/) |
## Examples
* [Airdrop Protection](/docs/self-pass/contracts/airdrop-example/) — Gate token distribution to verified humans
* [Happy Birthday](/docs/self-pass/contracts/happy-birthday-example/) — Age-gated smart contract example
* [Soul Bound Token](https://github.com/selfxyz/self/blob/main/contracts/contracts/example/SelfPassportERC721.sol) — Mint SBTs for verified users
* [Cross Chain (LayerZero)](https://github.com/selfxyz/self-layerzero-example) — Cross-chain verification
* [Cross Chain (Hyperlane)](https://github.com/selfxyz/self-integration-boilerplate/tree/hyperlane-example) — Cross-chain verification
## Resources
* [Workshop Video (ETHGlobal Buenos Aires)](https://www.loom.com/share/8a6d116a5f66415998a496f06fefdc23)
* [Self Builder Group](https://t.me/+d2TGsbkSDmgzODVi)
* [Celo Testnet Faucet](https://faucet.celo.org/celo-sepolia)
Privacy-preserving identity verification using zero-knowledge proofs.
Overview
Self Pass enables developers to verify real-world identity attributes without exposing personal data. Users scan their passport, national ID, Aadhaar card, or KYC attestation with the Self app, which generates a zero-knowledge proof on-device. Applications can then verify specific attributes (age, nationality, sanctions status) without ever seeing the underlying document.
Supported Documents
- Passports — NFC-enabled passports from 60+ countries
- EU National ID Cards — Chip-enabled European identity cards
- Aadhaar — India’s national identity system
- KYC Attestations — Third-party KYC provider attestations
Getting Started
Start with the Quickstart guide, or fork the boilerplate repo for a working example.
Integration Options
| Path | Description | Guide |
|---|---|---|
| Frontend SDK | Display QR codes to request proofs from users | QRCode SDK |
| Backend SDK | Verify proofs server-side on a Node.js backend | Backend Integration |
| Smart Contracts | Verify proofs on-chain in a trustless manner | Contract Integration |
| Mobile SDK | Embed Self verification directly in a React Native app | Mobile SDK |
Examples
- Airdrop Protection — Gate token distribution to verified humans
- Happy Birthday — Age-gated smart contract example
- Soul Bound Token — Mint SBTs for verified users
- Cross Chain (LayerZero) — Cross-chain verification
- Cross Chain (Hyperlane) — Cross-chain verification