ZKcaptcha - Now in Public Beta

Confidential Browsing
built on HashKey Chain

Verify personal attributes or browse privately without exposing emails, IPs, or credentials. Zero-knowledge proofs generated locally and verified scalably on HashKey Chain.

Replace CAPTCHA with ZK proofsFull-stack Confidential BrowsingProof-based authentication

Powered by HashKey Chain

The Stack

Full-stack Confidential Browsing

Everything you need to build private, proof-based verification into your app. From CAPTCHA to authentication - one stack.

Live - ZK CAPTCHA

Human verification, zero-knowledge proof.

No more clicking traffic lights.

Privacy-preserving (no behavioral tracking).

Single proof, unlimited verifications.

Fallback for edge cases.

Coming Soon - ZAuth Identity

Proof-based authentication.

Login without passwords.

Reusable identity proofs.

No data silos or identity databases.

Cross-app identity portability.

Coming Soon - Proof SDK & Gateway

APIs for proof requests.

Drop-in SDK for any stack.

Automatic proof generation.

Real-time attestation status.

Multi-chain settlement.

Coming Soon - Browser Extension

Seamless proof generation.

Auto-prompt for proof requests.

Local proof generation (WASM).

Proof caching & reuse.

Privacy dashboard for users.

Why ZAuth

Compare to traditional verification methods

ZAuth

- Privacy-preserving

- No behavioral tracking

- No data storage required

- User-controlled identity

- Repeatable proofs (no reCAPTCHA)

- Cross-platform compatible

- Bot-resistant

- Easy integration

Traditional

Traditional methods include reCAPTCHA, password-based auth, OAuth, and passwordless solutions.

How it works

From request to verification in four simple steps

01 App requests a proof

Your app requests a specific proof (e.g., "prove you own this GitHub account") via our SDK.

02 User generates proof locally

The user's browser generates a ZK proof locally using our SDK or extension. No data leaves their device.

03 HashKey Chain verifies in <1s

The proof is submitted to HashKey Chain, which verifies it ultra-fast and creates an on-chain attestation.

04 App receives attestation

Your app queries a simple API to check the attestation. No need to handle complex ZK logic.

Use cases

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.

For developers

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 fast.

Fast verification

HashKey Chain handles proof verification in under 1 second. Your app just checks attestation state.

example.js

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