PrivSend

How to verify this is safe

Suomeksi

A privacy tool you cannot inspect is just a promise. This page is how you check ours instead of taking our word for it — starting with a two-minute look and ending with a setup where you do not have to trust our server at all.

If you only want to know what privsend does, the plain-language How it works is the better page. This one is about proof.

What you are actually trusting

All the encryption happens in your own browser. So the only question that really matters is: is the code doing the encrypting the code we published? There are two different answers, and we would rather state them plainly than blur them.

We are not going to pretend the first case is as strong as the second. It is not. That is exactly why the extension exists.

1 · Read the code

The entire browser client is public, under the GNU AGPL-3.0: github.com/hannu64/privsend-client.

2 · Check the code your browser ran

On the website, you can compare what you were actually served against what we published. Open your browser's developer tools, look at /static/crypto.js as it was delivered to you, and read it beside the copy in the repository. They should match character for character.

Be clear about the limit, though: this tells you about this visit, on this device. It is a spot check, not a guarantee, and repeating it before every secret is not a reasonable thing to ask of anyone. Which brings us to the part that actually solves it.

3 · Install the extension — the strongest version

The extension is the client. Same code, same repository — but installed, so the encryption runs from your copy rather than one delivered fresh each visit. Both sending and receiving run locally: open a privsend link with the extension present and it is decrypted by your installed copy, not by a page the server hands you at that moment.

Chrome, Edge, Opera, Brave, Vivaldiinstall from the Chrome Web Store. A Firefox version is under review at addons.mozilla.org and will be linked here once it is published.

You will know it is active: extension pages carry a green “Running locally” banner, and the footer shows the exact build you have installed. The website never shows that banner — the claim would not be true there, so the code that displays it cannot run there.

The extension talks only to privsend.app, has no background process, collects nothing, and cannot read any other site you visit. It is the same handful of files you just read.

4 · Verify the extension itself

Installing from a store means trusting the store to ship what we submitted. If you would rather not, you do not have to.

The strongest option — skip the store. Download the repository, and load it directly as an unpacked extension. Then the code you run is the code you read, with no packaging step in between and nothing to compare.

Or check what the store gave you. Every published version is tagged in the repository, so there is an exact anchor to diff against — the footer build stamp on any extension page tells you which one you have. Chrome keeps installed extensions as ordinary files on disk, under a folder named for the extension id (jbnbgboabjehjkjhloeeihjamibmjokd) and then the version; the location varies by platform, typically under your Chrome profile directory. Compare that folder with the matching tag. One honest caveat: Chrome adds a _metadata folder of its own for integrity checking, so expect that as an extra — everything else should match.

What verification cannot tell you

Being straight about the edges is part of being trustworthy. Even a perfectly verified client does not protect you from:

Found a problem?

Please email support@zumitomi.fi before posting publicly, so a flaw cannot be exploited before it is fixed. We aim to fix reported issues within a few days and are glad to credit you. If four days pass without a fix, you are free to disclose it publicly — that commitment is in writing, in the repository, so it is not ours to quietly revise.

+ Send a secret

See also How it works, our privacy notice and terms.