# 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)
