One human.
One credential.
Prove you are a unique, real person with a Self zero-knowledge passport proof — then carry a soulbound credential that stores nothing about who you are. Sybil resistance without the privacy cost of KYC.

Sybil resistance
One passport yields one credential. A deterministic nullifier makes a second account for the same human impossible — the foundation for fair votes, airdrops and UBI.
No KYC, no data trove
Your passport is read on your phone and never leaves it. No name, number, face or date is uploaded, and nothing personal is written on-chain to leak later.
Portable & composable
A soulbound token any contract can read. Gate an app, a vote, or a sub-group on unique humanity by verifying a proof — not by trusting a central registry.
From passport to credential in four steps.
The proof is generated on your device; the chain only ever sees a signed assertion of humanity.
Scan with Self
Open the Self app and scan your passport's NFC chip. A zero-knowledge proof is built on-device — the passport data never leaves your phone.
Verify a unique human
The proof is checked against Self's identity registry: a valid, unrevoked passport, sanctions-clear, reduced to a single anonymous nullifier.
Mint a soulbound token
The issuer signs a slim voucher and you mint an ERC-721 that cannot be transferred. It stores only the nullifier and a coarse 90-day validity epoch.
Prove predicates on demand
Later, request a consumer-bound yes/no attestation — over 18, a nationality, sanctions-clear. In v1 the issuer evaluates your private credential; the consumer receives only the signed Boolean.
Get your credential.
Connect a wallet, prove humanity with Self, and mint your soulbound Proof-of-Humanity token on Base Sepolia. This release candidate is intentionally one testnet; nothing personal is written on-chain.
Choose your credential account
Your Proof of Humanity address and soulbound credential are public and permanent. An account used only for this credential reduces links to your payments, ENS, DeFi, voting, and social activity.
This does not make you anonymous: funding, later usage, and the current credential identifier can still create links.
Create or select the account in your wallet before connecting.
Prove you are human with Self
Connect a credential account first.
Mint your soulbound credential
One credential — mint it on any of theseA preview of the credential you will mint. The HUMAN ID is derived from your anonymous nullifier — it identifies the token, never you.
Nothing personal on-chain. The predicates travel, not the data.
Most identity systems store your attributes publicly and hope no one misuses them. Proof of Humanity stores the minimum that makes you countable. Optional facts stay in your browser session and are disclosed only to the issuer when you prepare or request a consumer-bound v1 attestation.

On the Proof-of-Humanity token
The minimum that makes you countable — and nothing else.
- ✓ A nullifier — proves one unique human, reveals nothing about them
- ✓ A coarse ~90-day validity epoch — never a passport date
- ✓ Soulbound: bound to you, non-transferable, one per human
- ✓ Boolean attestations bound to one consumer, context and subject

The KYC anti-pattern
Hand your identity to a company and hope it never leaks.
- ✕ Name, document number and photo stored in a database
- ✕ Nationality, gender and exact birth date written down
- ✕ One breach exposes everyone at once
- ✕ Every use is linkable back to a single real identity
Gate on a proof, not a database.
Read the credential from a Base Sepolia app or contract. Require unique humanity for a vote or an airdrop, or ask for a predicate to form an age- or jurisdiction-gated sub-group — all without ever handling personal data.
- One human, one vote. Check
isValid(tokenId)on a soulbound token instead of a token balance a whale can accumulate. - Fair airdrops & UBI. A deterministic nullifier means one claim per person — no Sybil farms draining the allocation.
- Gated sub-groups. Ask a holder for a signed age, nationality or sanctions Boolean. Consumers receive the answer and its bindings, never the private credential.
- One network first. Quick Launch is pinned to Base Sepolia so the complete journey can be tested before any additional network or mainnet is considered.
// One human, one vote — gate on the soulbound // credential, no personal data touched. IProofOfHumanity poh = IProofOfHumanity(0xPoH…); function castVote(uint256 id, uint256 tokenId, bool yes) external { require(poh.ownerOf(tokenId) == msg.sender, "not your credential"); require(poh.isValid(tokenId), "credential expired"); _castVote(id, msg.sender, yes); }
Verify age, nationality or sanctions status.
Prepare optional claims during the Self scan, then issue a narrowly scoped artifact for one app or contract. The API checks the live soulbound token and configured verifier before signing.
Choose a fact and the app creates a consumer-bound true/false proof. Your wallet does not sign or spend gas; the deployed verifier checks the issuer's signature and every binding.
Privacy note: v1 is issuer-attested. The issuer evaluates your browser-held credential, while the receiving app gets only the Boolean artifact—not your passport data or full private credential.
Complete Self verification, choose the facts you need, and mint on a testnet. Return here in the same tab.
?
Choose the network where this wallet minted its Proof-of-Humanity token. The app reads that deployed contract directly; your wallet does not need to switch networks for this check.?
A short purpose chosen by the receiving app, such as membership:season-1 or vote:proposal-42. It is hashed into the proof so an artifact created for one action cannot be reused for another.?
The exact EVM address allowed to accept this proof. For a personal read-only test, use your connected wallet. For an integration, use the consumer contract address. No other address can replay the artifact.Prepare your private claims first
Complete Self verification and mint a Proof-of-Humanity credential in this tab. Nothing is loading yet.
Prepare with SelfOpen standards, all the way down.
Audited primitives, explicit trust boundaries, and byte-for-byte EIP-712 parity with Solidity.
Tap any primitive to see what it does and where to read more.
Universal Basic IncomeOne human, one income.
Proof of Humanity is the Sybil-resistance layer behind UBI — a universal basic income streamed to every verified human. Because one passport yields exactly one credential, a basic income can pay a single stream per person: no bots, no duplicate claims, no whales draining the pool. Your soulbound token is minted under the ubi.eth domain and unlocks the stream.