Encrypted before it leaves the tab
Secret content is encrypted with AES-256-GCM in your browser. The decryption key lives in the URL fragment, which browsers never send to a server, so the backend stores an envelope it cannot open.
Features
ravendrop is a way to hand someone a password without leaving it in a chat log forever. The encryption is the floor, not the feature — what follows is everything you can put around a single share.
01 / Protection
Every guarantee on this page rests on one property: the key never reaches the backend.
Secret content is encrypted with AES-256-GCM in your browser. The decryption key lives in the URL fragment, which browsers never send to a server, so the backend stores an envelope it cannot open.
HKDF derives a recipient-specific wrapping key that unwraps a separate content-root key. Revoking one recipient does not hand the others' access to anybody else.
Add a passphrase and the link alone is not enough. Argon2id runs in a browser worker, and the fragment key and passphrase jointly wrap the content key — so guessing stays expensive even for someone holding the full URL.
Authenticated encryption means a modified envelope fails to open instead of quietly returning altered plaintext.
02 / Control
A share is not just a link. It carries the rules it is willing to be opened under, and they are checked before a view is spent.
Pick the window that fits the job. Links created without an account are capped at one day; signing in unlocks the longer choices up to seven.
Allow between one and twelve views. View accounting is atomic, so simultaneous reveals and network retries cannot push a share past its limit. A rejected attempt consumes nothing.
Limit a share to specific mailboxes or to a whole domain. A restricted share requires the reader to sign in, and the check runs before a view is spent.
Add country, subdivision, or IPv4/IPv6 CIDR restrictions. Source information is accepted only from the trusted network boundary, and a restricted request is denied when that context is missing or unverifiable.
Bring your own identity provider, so recipient restrictions resolve against the directory your organisation already maintains and access ends when an account is deprovisioned.
A recipient who has revealed a share with views still on it can destroy it so nobody else can open the link. Deleting re-runs the same region, IP, sign-in and passphrase gates, and consumes no view.
03 / Workflow
Most secrets are shared in the middle of some other task. These exist so that task does not need a second tool.
As you type, the text is matched against the gitleaks reference rules in a browser worker and labelled, so a mistyped credential is caught early. The scan and its result never leave the page, so the operator learns nothing about what the envelope holds.
Passwords, passphrases and templates can be generated in the browser rather than pasted in from somewhere they were already exposed.
Generate ECDSA P-256 or RSA 2048/4096 key pairs in the browser and attach the PKCS#8 private key and SPKI public key as PEM files. With a passphrase the private key is written as encrypted PKCS#8.
Attach up to ten files, four megabytes in total. Each file is encrypted and uploaded in chunks under an encrypted manifest, so filenames are no more visible to the server than the contents are.
Address a small group — up to thirty-two — with per-recipient keys and per-recipient revocation, instead of sending the same link to everyone.
04 / Operate
The same code and the same security boundary, whether it runs on your own hardware or on ours.
A hardened, non-root Docker image and Compose stack with an ordered one-shot migration, a persistent data volume and a readiness health check. The whole backend is one Rust binary over a SQLite/libSQL file.
Pages are served no-store with no referrer and a strict content policy that forbids inline script and third-party origins. There is nothing under the API worth indexing, and share links resolve entirely in the fragment.