Confidential Browsing
built on zkVerify
Verify personal attributes or browse privately without exposing emails, IPs, or credentials. Zero-knowledge proofs generated locally and verified scalably on zkVerify's blockchain.
Powered by
Full-stack
Confidential Browsing
Everything you need to build private, proof-based verification into your app. From CAPTCHA to authentication — one stack.
ZK CAPTCHA
Human verification, zero-knowledge proof
Replace traditional CAPTCHA with a zk-based human proof. Generates repeatable proof flows that are secure, privacy-preserving, and bot-resistant.
- No more clicking traffic lights
- Privacy-preserving (no behavioral tracking)
- Single proof, unlimited verifications
- Fallback for edge cases
ZAuth Identity
Proof-based authentication
Prove account ownership from GitHub, Twitter, or any OAuth provider without exposing tokens or personal data. Login without passwords.
- Login without passwords
- Reusable identity proofs
- No data silos or identity databases
- Cross-app identity portability
Proof SDK & Gateway
APIs for proof requests
Abstracts zk complexity for Web2 developers. Simple REST APIs to request proofs and verify attestations.
- Drop-in SDK for any stack
- Automatic proof generation
- Real-time attestation status
- Multi-chain settlement
Browser Extension
Seamless proof generation
Makes proof generation invisible during normal browsing. Users generate proofs locally without leaving the browser.
- Auto-prompt for proof requests
- Local proof generation (WASM)
- Proof caching & reuse
- Privacy dashboard for users
Compare to traditional
verification methods
Traditional methods include reCAPTCHA, password-based auth, OAuth, and passwordless solutions
From request to verification
in four simple steps
App requests a proof
Your app requests a specific proof (e.g., "prove you own this GitHub account") via our SDK.
User generates proof locally
The user's browser generates a ZK proof locally using our SDK or extension. No data leaves their device.
zkVerify verifies in <1s
The proof is submitted to zkVerify, which verifies it ultra-fast and creates an on-chain attestation.
App receives attestation
Your app queries a simple API to check the attestation. No need to handle complex ZK logic.
Where Zauth shines
across industries
Any scenario where you need to verify attributes without collecting or storing sensitive data.
Anti-bot & fraud prevention
Replace CAPTCHA with ZK proofs that distinguish humans from bots without invading privacy or frustrating users.
Age verification
Verify users are over 18 or 21 without collecting or storing their ID or date of birth.
Sybil resistance
Ensure one-person-one-vote or one-person-one-account without collecting personal identifiers.
Credential verification
Prove ownership of accounts (GitHub, Twitter, email) without exposing tokens or OAuth tokens.
KYC automation
Streamline KYC by verifying attributes (residency, accreditation) without exposing underlying documents.
Exclusive access
Grant access to exclusive content or features based on verifiable attributes without data collection.
Build with Zauth
without being a ZK expert
We handle the complex ZK stuff. You just integrate simple APIs and get verifiable attestations back.
Drop-in SDK
Install via npm, integrate in minutes. Full TypeScript support with type-safe APIs.
Simple REST API
Request proofs, check status, fetch attestations — standard REST endpoints, no ZK expertise needed.
Comprehensive docs
Guides, tutorials, API reference, and example apps. From "hello world" to production in no time.
Fast verification
zkVerify handles proof verification in under 1 second. Your app just checks the attestation.
// Request a proof
const proofRequest = await Zauth.proofs.request({
type: "github-account",
params: { owner: "user" }
});
// Check status
const status = await Zauth.proofs.status(proofRequest.id);
// Get attestation
const attestation = await Zauth.attestations.get(proofRequest.id);
console.log(attestation.valid); // true