Writing · August 2, 2026

How share links carry a key without leaking it

Two modes, one base64url blob, and the part of a URL that browsers never send to a server.

Zero-knowledgeArchitecture v0.1
01 / THE FRAGMENT

Everything after the # stays in the browser.

A share link carries its payload in the URL fragment. Browsers do not transmit the fragment to the server, which makes it the one place in a URL where a key can travel without being logged by every hop in between. The server hosting the link never receives the material needed to read it.

02 / TWO MODES

Open links carry a key. Locked links carry a salt.

An open share embeds a freshly generated 32-byte AES-GCM key in the fragment — anyone with the link can read the note. A locked share embeds only a 16-byte salt; the key is derived from a password you give the recipient separately, again with PBKDF2-SHA256 at 250,000 iterations. The link alone is useless without it.

Open: random keyLocked: password-derivedIndependent of your vault key
03 / THE BLOB

One base64url string, not a query soup.

The fragment is a single encoded blob with a fixed layout: a version byte, a flags byte recording mode and compression, a 12-byte IV, then either the raw key or the salt, followed by ciphertext. Packing it this way keeps links short and leaves no readable parameters to inspect.

04 / CONTROL

Expiry and revocation stay with you.

Shares can carry an expiry and be revoked early from Vault Settings. Critically, a share never exposes your vault key — revoking one has no effect on your vault, and a leaked share link cannot be walked back into it.

More writingBack to all posts