Who we are & scope
Opaque is a zero-knowledge password manager operated by the Opaque team ("Opaque", "we", "us"). This policy explains what information the Opaque web application and its API handle when you use them, how that information is used, and — just as importantly — what we are architecturally unable to access.
It is written to be read, not skimmed past. If you want the same system described at a deeper technical level, the zero-knowledge documentation covers the exact cryptography and data flows.
Zero-knowledge, plainly
Every secret you save — titles, usernames, passwords, URLs, notes — is encrypted inside your browser with AES-256-GCM before it is transmitted. The key that performs that encryption (your Vault Key) is itself protected by keys derived from your master password and your recovery phrase, neither of which ever leaves your device.
The practical consequence: our servers store, move, and back up locked boxes. There is no code path on the server that decrypts them, no support tool that opens them, and no password-reset backdoor. If our database were stolen tomorrow, the thief would hold ciphertext and public key-derivation parameters — noise without your master password.
This is why the rest of this policy is short on drama: for the data that matters most, there is nothing readable for us to collect, share, analyze, or lose.
Information we store
We store four narrow categories of information:
- Account & profile. Your email address, display name, avatar URL, and internal identifiers, provided through our authentication provider, Clerk. These fields are kept in sync via cryptographically signed webhooks, and the sync only ever touches these profile fields — never your encryption material.
- Encrypted vault data. For each item, a ciphertext blob and its initialization vector (IV); plus two wrapped (encrypted) copies of your Vault Key and the public key-derivation salt and parameters needed to unlock them on your device. All of it is opaque to us.
- Non-secret metadata.Each item's type (login, note, card, or identity), favorite flag, folder placement, and timestamps, along with your running item count and plan. This lets the app list, filter, and enforce plan limits without decrypting anything.
- Operational records. A metadata-only audit log of vault activity (never secret content), and standard infrastructure logs — which may include an IP address and browser type — retained briefly for security and debugging. Because decryption never happens server-side, there is no plaintext secret for us to log, and we never do.
What we can never access
The following never reach our servers in readable form — not at sign-up, not during syncing, not in logs, not ever:
- Your master password. It is used only inside your browser to derive a key, and is never transmitted or stored anywhere, in any form.
- Your recovery phrase. The 12-word phrase is generated in your browser and converted to a key there; only the resulting encrypted copy of your Vault Key is stored.
- Your Vault Key.The key that actually encrypts your items exists in raw form only in your browser's memory while your vault is unlocked.
- The contents of every item. Titles, usernames, passwords, URLs, notes, and even which service an item belongs to all live inside the encrypted payload.
The "What we can never read" card at the top of this page is exhaustive on purpose. If a future feature would require moving anything on that list to the server in readable form, the feature does not ship.
How we use information
We use the information above only to run the service:
- To authenticate you and maintain your signed-in session through Clerk.
- To keep your account record accurate, by processing signed webhook events when you register, update your profile, or delete your account.
- To store and return your encrypted items, and to enforce your plan's item limit — checked atomically at the moment of creation, using only the non-secret counter.
- To keep the service secure: verifying webhook signatures, scoping every database query to the authenticated owner, and maintaining the metadata-only audit log.
- To send essential service messages, such as security or account notices, to your account email.
We do not sell personal information. We do not show advertising. We do not run third-party analytics or advertising trackers. We do not build profiles of you — there is nothing readable to profile.
Third-party services
A small number of providers help us run Opaque. Each receives only what its role requires, and none of them can decrypt your vault:
- Clerk — authentication and session management. Clerk holds your sign-in credentials and profile, and notifies us of account changes through webhooks delivered via Svix. Every delivery is signature-verified before we act on it.
- Database & hosting providers — store and serve the data described in section 03. Your vault contents reach them only as ciphertext.
We do not share personal information with any other third party, except where required by law — and even then, vault contents can only ever be produced as ciphertext, because that is all we hold.
Retention & deletion
We keep your information for as long as your account exists, and no longer than the service needs it:
- Deleting an item removes it immediately. The row removal and your item counter update happen in a single atomic operation, so nothing lingers and nothing drifts.
- Deleting your account removes your user record, and database-level cascades wipe your folders, items, and audit log in the same action. There is no orphaned copy left behind for us to keep.
- Backups. Where our infrastructure providers keep short-lived backups, any vault content inside them remains ciphertext, and profile data ages out with the normal backup cycle.
Security practices
Security here is structural, not a checklist bolted on afterwards:
- In transit, all traffic is protected with HTTPS (TLS).
- At rest, vault contents are AES-256-GCM ciphertext, encrypted on your device with a fresh random IV on every save.
- Key derivation uses PBKDF2-SHA-256 at 600,000 iterations (in line with OWASP guidance), with versioned parameters stored per account so the algorithm can be strengthened over time without a breaking migration.
- Account webhooks are accepted only after their cryptographic signature is verified — a forged request never touches the database.
- Access controlscopes every query to the authenticated owner. Guessing another user's item id behaves exactly like requesting something that does not exist.
Honest limits
No zero-knowledge system protects against everything, and we would rather tell you where the line is:
- A weak master password. Someone who stole our database could attempt to guess your password offline. The slow key derivation makes each guess expensive, but a strong, unique master password is your real defense.
- A compromised device. Malware or a malicious browser extension can read secrets while your vault is unlocked, because your device is where decryption happens.
- Losing both factors. If you forget your master password and lose your recovery phrase, no one — including us — can recover your data. That is the deliberate cost of having no backdoor.
- Phishing. If you are tricked into typing your master password into a fake page, encryption cannot help. Always confirm you are on the real site.
Your rights & choices
You stay in control of everything we hold:
- View and update your name, email, and avatar in account settings; changes flow through to Opaque automatically.
- Add, edit, and delete items at any time. Deletions take effect immediately.
- Delete your account to erase everything we store about you, as described in section 08.
- Regional rights. Depending on where you live (for example under the GDPR or CCPA), you may have rights to access, correct, delete, or port your data, and to object to certain processing. Contact us and we will honor them — with one honest caveat: for vault contents, the only copy we can produce is the ciphertext, because that is all we have.
Children's privacy
Opaque is not directed to children under 13 (or the higher minimum age required where you live), and we do not knowingly collect information from them. If you believe a child has created an account, contact us and we will delete it.
Changes to this policy
If this policy changes, we will revise the date at the top of this page. For material changes — anything that alters what we collect or how it is used — we will notify you in the app or by email before the change takes effect. One thing will not change: the zero-knowledge boundary. Weakening it would break the product, not just the policy.
Contact
Questions, requests, or concerns about your data are welcome at privacy@opaque.app. We read everything.
Want the technical version?
The documentation walks through the key hierarchy, the encryption flows, and exactly what the server does — and refuses to do.
