Skip to content

Encrypted links for passwords, keys, notes and files

Send a secret our server can't read.

It's encrypted in this tab. The key rides in the part of the link after #, which browsers never send to a server.

No account. Need a password, a title or a read limit? Open the full note tool

How it works

Two paths. We only see one of them.

The ciphertext goes through our server. The key goes around it, inside the link you send yourself. Neither half is any use without the other.

Your browser

text
"db: hunter2-but-longer"
key
Rk3n9Vx2Lq7Tz4Yb8Wm1…

Our server

blob
q3Jk8xV0bTn2LwYc9PZ4…
hash
7h2Lq9Xc4Vb8Nm1Zp6Rt…
key
never received

Their browser

key
from #k= in the link
text
"db: hunter2-but-longer"

The link, sent by you

https://protectedshare.me/notes/x7Kp2Qa9Lm#k=Rk3n9Vx2Lq7Tz4Yb8Wm1Pc6Hd0Js5Ga2Fe9Ku3No7

#k=…Everything after # never reaches a server. Browsers keep the fragment to themselves; it isn't part of the request.
  1. 01

    It’s sealed in your browser

    Your browser makes a random 256-bit key and encrypts with AES-256-GCM. The text never leaves the tab in the clear.

  2. 02

    We store ciphertext

    The server keeps the ciphertext, its IV and salt, and a hash it uses to check that a reader holds the key. None of that decrypts anything.

  3. 03

    They open the link

    Their browser takes the key from after the #, proves it has it, downloads the ciphertext and decrypts locally. A burn note is deleted on that read.

No fine print

What we store, exactly.

Tool by tool, with nothing rounded off. If it isn't listed under “stored on our server”, it isn't there. Read the full security model.

  • Secure note, EnvShare

    Stored on our server

    Ciphertext, IV, salt, the KDF mode, a hash of the read token, the expiry, and the burn flag or reads left.

    Never sent to our server

    Your text, the key, and your password if you set one.

    Deleted

    On the burning read, the last allowed read, or at expiry.

  • File drop

    Stored on our server

    Encrypted chunks (in Cloudflare R2), an encrypted manifest, the total encrypted size, chunk count, downloads left, expiry, and a hash of each download's session token.

    Never sent to our server

    File names, types, sizes and contents (names sit inside the encrypted manifest), and the key.

    Deleted

    Once the last allowed download finishes or its session lapses, on revoke, at expiry, or 6 hours after an upload that never finished.

  • Secret request

    Stored on our server

    Your public key, the encrypted label, the encrypted reply, and hashes of the respond and inbox tokens.

    Never sent to our server

    Your private key (only in your inbox link), the reply in the clear, the label key (only in the sender link).

    Deleted

    When you collect the reply, or at expiry.

  • Chat

    Stored on our server

    Encrypted messages with timestamps, optional per-message expiry, a room auth hash, and presence: a random client id, a typing flag, last seen.

    Never sent to our server

    Messages in the clear, the room key or password.

    Deleted

    Messages when everyone has left, or when they expire. Rooms after 7 idle days.

  • Notepad, synced

    Stored on our server

    A SHA-256 of your username, the encrypted vault, a password proof, save times, and a check-in for each open tab. Local mode stores nothing with us.

    Never sent to our server

    Your notes and your password.

    Deleted

    When you delete the workspace.

  • Read receipts

    Stored on our server

    Kind, id, status, read count, and created, expiry, first-read and last-read times. A hash of the manage token.

    Never sent to our server

    The links in My links. The manage token is kept there too, and sent only to check status, revoke, or switch notifications on or off.

    Deleted

    30 days after the share expires.

  • Read notifications

    Stored on our server

    Only if you turn them on, for up to 5 browsers per link: each browser's push address, the keys that encrypt messages for it, and the link's kind and id.

    Never sent to our server

    The link, its key, and your label for it.

    Deleted

    When the link is used up, revoked or expired, or you switch them off.

  • Abuse reports

    Stored on our server

    The link's kind and id, a reason, and any details (up to 500 characters) and email you add.

    Never sent to our server

    The link's key. A report that contains one is refused.

    Deleted

    After 180 days.

  • Usage counts

    Stored on our server

    One number per day for each kind of link: how many were created. No ids, no content.

    Never sent to our server

    Nothing extra. Creating a link just adds one to that day's count.

    Deleted

    After 400 days.

  • Claude connector

    Stored on our server

    Nothing of its own. Links it creates are stored exactly like the website's.

    Never sent to our server

    With the local server: your text, link keys and passwords. The remote connector receives the text and makes the link key, in memory only, and stores and logs neither.

    Deleted

    The MCP server keeps nothing. Its links follow the rules above.

  • Free tools

    Stored on our server

    Nothing. They never send your data to us.

    Never sent to our server

    Everything. The breached-password checker sends only the first 5 characters of a SHA-1 hash, to Have I Been Pwned.

    Deleted

    Nothing to delete.

Keys travel inside the link you share, after the #, which browsers don't send. Around every request: API calls pass through the web app's host to Cloudflare, which runs the API, and both see IP addresses, request metadata and the ciphertext going by, like any host would. Workers logs are on. Rate limits count wrong passwords per link and new links per IP address, without storing the address, and a password-protected link that gets too many wrong guesses locks for 10 minutes. Google Analytics and Cloudflare Web Analytics load only if the operator sets them up, and never on pages that open or hold a share. The contact form stores the name, email, company and message you send. Expired rows are purged every 30 minutes, and reads past expiry are refused.

Open source

Read the code. Or run your own.

A security tool you can't inspect is a promise. This one is MIT licensed: the API is a Cloudflare Worker with a D1 database, the web app is Next.js. Run both on your own account and nothing touches ours.

Web app imageghcr.io
$ docker pull ghcr.io/kunalsiyag/protectedshare-web:latest

Questions

Asked before you trust it.

Something missing? Write to admin@protectedshare.me.

Can ProtectedShare read what I send?

No. Notes, EnvShare secrets, files, requests and chat messages are encrypted in your browser with AES-256-GCM before anything is sent. The server stores ciphertext and a hash it uses to check that a reader holds the key. The key itself is in the part of the link after #, which browsers don't send to servers. Like every web app that encrypts in the browser, you are trusting the JavaScript the site serves; the code is open source so you can check it or run your own copy. One exception: the remote Claude connector encrypts what you give it on our MCP server, in memory, without storing or logging it; the local MCP server encrypts on your computer.

What is the #k= part of the link?

It's the 256-bit key that decrypts your share. Anyone with the full link can open it, so send it the way you'd send a key. If you'd rather the link alone not be enough, the Secure Note tool can use a separate password instead, or both.

What happens after someone opens my link?

A burn-after-reading note is deleted from the database on the read that opens it. An EnvShare secret loses one read each time and is deleted at zero. A file drop uses one download as soon as a download starts; the server counts it, and cancelling doesn't give it back. When the last download finishes, the drop is deleted. Anything left is deleted at its expiry, which is at most 30 days; a cleanup job runs every 30 minutes and expired links are refused before then.

Can a link preview in Slack or iMessage burn my note?

Previews fetch the page without the part after #, so they don't have the key and can't produce the token the server asks for before it hands over a note. The note page also waits for the recipient to choose to open it.

Can I tell whether my link was opened?

Yes, from the browser that created it. Links you make are listed in My links, kept only in that browser. Each one holds a manage token that lets you see the status, the read count and when it was first and last opened, or revoke it. For a file drop, opened means a download started. The server keeps that receipt, with no content, until 30 days after the link expires. You can also ask for a browser notification when the link is first opened and when it's used up: your browser's push service delivers it, encrypted, and the server keeps the push address only until the link is used up, revoked or expired.

How do I share API keys or a .env file safely?

Open EnvShare, paste the keys or the whole file, pick an expiry up to 30 days and how many times it can be read, from 1 to 100. Send the link. When the last read happens, the row is deleted.

How big a file can I send?

Up to 25 MB per drop, across one or more files. Files are encrypted in 1 MiB chunks in your browser. File names and types are encrypted too; the server only sees the total encrypted size and the number of chunks.

Is it free? Do I need an account?

It's free and there are no accounts. There is no paid plan on the hosted site. Organizations that want a separate deployment can ask about a dedicated instance.

Can I host it myself?

Yes. The code is MIT licensed on GitHub. The API runs on Cloudflare Workers with a D1 database (file chunks go to an R2 bucket, or to D1 if you skip it), and the web app runs on any Node host or from the Docker image ghcr.io/kunalsiyag/protectedshare-web.

How is this different from Privnote or OneTimeSecret?

The same job, one-time secrets that expire, done with the key in the link fragment so our server never receives it. It also covers .env files with read limits, file drops, secret requests, an encrypted chat room and a notepad. The comparison pages go through the differences one by one.

The next password you send doesn't have to live in a chat log.

Free, no account, deleted on read.