Zero-knowledge file sharing means the server that stores your file cannot read it. Not "chooses not to" — cannot. It is a technical guarantee, not a policy promise. Here is how it works, step by step.
Imagine you want to send a document to a friend through a courier service. You have two options:
Option A (traditional): You hand the document to the courier. The courier puts it in their own locked bag, drives to your friend and hands it over. The courier saw the document. You trusted them not to photocopy it.
Option B (zero-knowledge): You put the document in a locked box that only you have the key to. You give the locked box to the courier. You then text the key to your friend separately. The courier delivers the box but can never open it. Your friend uses the key to unlock it.
Zero-knowledge file sharing is Option B. The "locked box" is AES-256-GCM encryption. The "courier" is the server. The "key texted separately" is the URL fragment.
You pick a file (or multiple files) in your browser. Nothing has been uploaded yet. Everything that follows happens on your device.
The browser creates a random 256-bit AES encryption key using the Web Crypto API. This key exists only in your browser's memory. It is never sent anywhere.
Using AES-256-GCM (the same encryption standard used by governments and militaries), the browser encrypts the file. The result is a block of random-looking bytes. Without the key, it is indistinguishable from noise.
Only the encrypted data is sent to the server. The server stores it. It does not have the key and cannot decrypt the data. From the server's perspective, it is storing meaningless bytes.
This is the clever part. The browser constructs a URL like:
https://example.com/#/receive?id=abc123&k=THE_KEY_HERE
Everything after the # is called the "fragment." Here is the critical rule: browsers never send the fragment to the server. This is not a feature of any particular application — it is how HTTP works, defined in RFC 3986. When your browser requests a URL, it sends everything before the # to the server and keeps the fragment for itself.
#section) work on web pages without triggering a new server request.When the recipient opens the URL, their browser reads the fragment (including the key), downloads the encrypted blob from the server and decrypts it locally. The decrypted file appears in their browser. The server was involved in delivering the encrypted data but never had access to the key or the plaintext.
| The server knows | The server does NOT know |
|---|---|
| That someone uploaded encrypted data | What the file contains |
| The size of the encrypted blob | The file name |
| When it was uploaded | The file type |
| When it was downloaded | The decryption key |
| The sender's IP address | Who the recipient is (no account needed) |
With zero-knowledge architecture, three categories of risk disappear:
SecureSend in UnveilPass adds several layers beyond the core zero-knowledge mechanism:
Your browser encrypts the file. The server stores encrypted bytes it cannot read. The decryption key travels in the URL fragment, which is never sent to the server. The recipient's browser decrypts the file locally. Nobody in between — not the server, not the network, not a government — can read your file. That is zero-knowledge file sharing.
Send files with end-to-end encryption. The server never sees your data. No account required to receive.
Get Started Free