One-time secret

Share a password securely, with a link that destroys itself

Type the password, get a link, paste it in chat. The first person to open it sees the password once, then it is deleted. Encrypted in your browser, so the key never reaches the server.

0 / 4000
Add a passphrase

Mixed into the encryption key in your browser and never sent to Snapy. The link on its own stops being enough, so tell them the passphrase some other way — by voice, or in a different app. If they type it wrong, the secret is destroyed, so allow 2 opens if you use one.

🔒 Snapy cannot read it — the key is in the link, never on the server. Opening it deletes it. Lose the link and the secret is gone for good.

A password in a chat message never goes away

Pasting login details into Slack, Discord, Teams, or email publishes them to a permanent, searchable log. Everyone in the channel can read it. Anyone who joins later can scroll back to it. It sits in the workspace export, in the backup, and on every device that synced the conversation. Rotating the password later does not un-send the message.

A one-time secret link fixes the shape of the problem rather than the wording of the warning. The link is what goes into the chat, and the link stops working as soon as it has been used.

  1. Type the secret. A password, an API key, a connection string, a recovery code.
  2. Your browser encrypts it. A random 256-bit AES-GCM key is generated locally and the text is encrypted before anything is sent.
  3. Only ciphertext is stored. The key is placed in the URL fragment — the part after the # — and browsers never include that in an HTTP request. It is not in the access logs, not at the CDN, and not in the database.
  4. Send the link. Paste it wherever you would have pasted the password.
  5. It burns after reading. The recipient presses Reveal, the stored copy is deleted, and the text is decrypted in their browser.

This is what zero-knowledge secret sharing means in practice: the server holds an encrypted blob and no key, so a database dump is worthless on its own, and there is nothing to hand over, leak, or subpoena.

What you control

Deleted, not marked as read

A self-destructing link that only flags a secret as opened still has the secret sitting in a table. A one-time secret link on Snapy runs a delete: when the last allowed open is used, the row goes. There is no plain-text column anywhere in the design, and no "recover my secret" feature, because either one would mean holding what this page promises not to hold.

The honest consequence: a lost link is a lost secret. Nobody can re-send it or look it up, including Snapy. Send a new one.

Preview bots do not eat the secret

This is the detail that quietly breaks many self-destructing message tools. Slack, Discord, WhatsApp and Outlook all fetch a pasted URL to build a preview card, and security scanners open links in email automatically. If opening the page were enough to consume the secret, the preview bot would destroy it seconds after it was sent — and the sender would get blamed for a link that "didn't work".

So the view page is inert when it loads. It renders, it checks whether the secret is still there, and it waits. Revealing takes a deliberate press of a button, which a bot does not do.

Good for

Handing credentials to a contractor or a new hire before they have a password manager seat. Sending an API key to a developer on another team. Giving a client a temporary login. Passing 2FA recovery codes to someone during an account handover. A WiFi password to a guest. Anything you are about to paste into a chat window and would rather not leave there.

Send a file the same way

A one-time link is for text. To send a document with a password, an expiry date, and a record of who opened it, use secure document sharing or share a PDF as a link. Related: document tracking and sharing documents with clients.

Snapy Pro · unlimited links, and who opened them