We cannot read your files.
Files are encrypted on your device with keys we never see. What lands on our servers is opaque ciphertext.
Files are encrypted on your device with keys we never see. What lands on our servers is opaque ciphertext.
If you lose your password and your recovery phrase, your data is gone. By design — the alternative is a backdoor. Which we don’t offer.
When legally compelled, we hand over what we have. What we have is ciphertext. Nothing decryptable.
This page describes what Beebeeb does, how, and where we draw the line. It does not describe what we hope to do. Last reviewed: 06 May 2026.
What happens between “drop file” and “file is stored”. The file is encrypted before it leaves your device. Your password is never sent anywhere — not even to us.
No proprietary cryptography. No undisclosed algorithms. Standard primitives, chosen for known properties, used in standard ways.
Read this section before you sign up. The recovery phrase is not optional.
A 12-word BIP39 mnemonic generated on your device at signup. Your master key is deterministically derived from this phrase — it is the root of all your encryption. We never see it. Lose this phrase and your password, and your data is gone.
word1 word2 ... word12 Deterministically derived from your 12-word phrase. Encrypts every file you ever store. Lives only on devices you’ve unlocked. Never transmitted in the clear.
derive_key(mnemonic) → 256-bit key Encrypts your master key at rest on each device. After inactivity (default 30 min) we wipe the unlocked key from memory and re-prompt for the password. Easy to change — the master key stays the same.
argon2id(password, salt) → wrap-key You use the 12-word phrase to re-derive your master key on a new device and set a new password. No data lost.
Your data stays accessible on devices already unlocked. But: you cannot add new devices, and if you ever forget the password, recovery becomes impossible. Generate and back up a new phrase immediately from settings.
Your data is permanently inaccessible. We cannot help. By design — the alternative is a backdoor we could be forced to use.
Encryption protects your files. These protect the account that holds them — available today.
Sign in with a passkey bound to your device or security key — nothing to phish, nothing to leak in a breach. There is no shared password for an attacker to steal.
Add a time-based one-time code from any authenticator app as a second factor. Even a stolen password on its own cannot open your account.
When you use a password, it is never sent to us. We authenticate you with the OPAQUE protocol — the server only ever sees a proof that you know it, never the password itself.
Every product has limits. We’d rather you know ours than discover them.
An attacker who steals our database gets ciphertext. The keys to decrypt it never touch our servers.
No engineer, founder, or admin at Beebeeb can read your files. We don’t have the keys either.
When legally compelled, we hand over what we have: ciphertext + metadata (size, timestamps, owner). Nothing decryptable.
TLS 1.3 protects the connection; the payload is already encrypted client-side anyway.
Your master key is encrypted at rest by your password and wiped from memory after inactivity. A thief gets nothing without the password.
Even if our hosting provider were fully compromised, they would see only ciphertext, the same as us.
If malware on your device steals your password and reads your files while they are decrypted in memory, that is outside our model. We protect you against the cloud, not against your own machine.
There is no backdoor. Both lost = data permanently inaccessible. This is the price of the guarantee.
If someone with a court order or a wrench compels you to type your password, we can’t help. The encryption is end-to-end; you are one of the ends.
Argon2id slows down brute-force, but a six-character password is still a six-character password. Use a passphrase.
If you share a file with someone, they can read it and re-share its decrypted contents however they want. Nothing in cryptography fixes that.
Speculative execution exploits, evil-maid attacks, hardware keyloggers — we cannot defend against the device you are using.
Where your encrypted data physically sits matters even when the data is ciphertext. Jurisdiction determines which laws govern any request for it.
All ciphertext currently lives in datacenters in Falkenstein, Germany. German law applies — no data-retention mandate, and German law forbids handing data to foreign law enforcement. No data is replicated outside the EU.
We’re building our own storage fleet in EU datacenters. Because we value the trust customers place in us, we will only migrate to it after extensive redundancy testing and proven operational maturity. We will document the move when it happens.
Beebeeb is established in the Netherlands. Our processing is governed by the GDPR and Dutch implementing law. We do not transfer personal data to non-adequate jurisdictions.
Account email · billing details · file size · upload timestamp · owner · share recipients (when applicable). We see no filenames (those are encrypted), no file contents, and no folder structure beyond what’s required to render your file list.
File contents are AES-256-GCM ciphertext. Filenames are encrypted with the same per-file key. Your master key, your password, and your recovery phrase never reach us in any form.
We don’t pretend to be above the law. We just made sure the law can’t extract what we don’t have.
We comply with valid legal requests from EU authorities. We do not comply with requests that lack a legal basis under EU law.
When we receive a valid request, we hand over what we have:
What we do not have, and therefore cannot hand over:
Every piece of software that handles your encryption keys is open source. If we said one thing on this page and shipped another, the code would show it.
core/src/ — everything that touches your keys is in there. About 1,500 lines.
If you’ve found a vulnerability in our clients, our protocol, or our infrastructure, we want to hear about it before anyone else does.
We’ll acknowledge within 48 hours and aim to resolve high-severity issues within 14 days. We will credit you publicly with your permission, on this page, when the fix ships.
For now, use the responsible disclosure mailbox. We will publish a fuller program policy when we can support it properly.
We log every security-relevant change here: cryptographic primitive upgrades, key-rotation events, post-mortems, and resolved disclosures.
When entries appear here, they will list the change, the date, the affected components, and the reasoning. This page exists so that changes are public, dated, and auditable.
Subscribe via RSS at beebeeb.io/security.rss — coming soon.
Zero-knowledge encryption means the provider cannot read your data. Your files are encrypted on your device with a key only you hold, before they ever reach the server. Beebeeb stores ciphertext and never receives the key — so we cannot decrypt your files, by design.
No. Files are encrypted on your device with AES-256-GCM before upload, using a master key derived from your password and 12-word recovery phrase. We never receive that key, so we hold only ciphertext. No engineer, admin or founder at Beebeeb can read them.
A breach of our servers only exposes ciphertext and limited metadata — file size, timestamps, owner. The decryption keys never touch our infrastructure, so an attacker who steals the entire database still cannot read a single file.
Only what we have: encrypted blobs we cannot decrypt, plus metadata such as your email, billing details, file sizes and timestamps. We cannot produce file contents or filenames, because they are encrypted with keys we never hold.
Your data becomes permanently inaccessible. There is no backdoor and no master key on our side — the recovery phrase is the master secret. We cannot reset it for you. That is the cost of encryption only you can unlock.
One email when we go live. Zero-knowledge from the first byte. Read the code, then decide.
Join the waitlist