# Self Pass (Legacy)

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.

Which documents are supported, and what each can attest to, is documented once under Self Enterprise: see [Supported documents](/docs/self-enterprise/flows/supported-documents/) and [Supported countries](/docs/self-enterprise/reference/supported-countries/). For the attestation IDs you pass to the verifier, see [AttestationId](/docs/self-pass/backend/selfbackendverifier-api-reference/#attestationid).

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

Start with [Key Concepts](/docs/self-pass/key-concepts/) to pick a verification path and environment.

## Resources

* [Boilerplate repo](https://github.com/selfxyz/self-integration-boilerplate) — a working end-to-end integration to fork
* [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
* [Workshop Video (ETHGlobal Buenos Aires)](https://www.loom.com/share/8a6d116a5f66415998a496f06fefdc23)
* [Celo Testnet Faucet](https://faucet.celo.org/celo-sepolia)
