Your files never leave your device. All processing happens locally in your browser.
How do you share a password securely with an encrypted link?
Type the secret into Secure Password Share and it is encrypted in your browser with AES-256-GCM. The encrypted payload is packed into the link’s URL fragment (the part after #), which browsers never send to any server — so the secret is never uploaded. Send the link over a private channel; in passphrase mode, send the passphrase over a different channel. Everything runs 100% client-side with no backend.
AES-256-GCM authenticated encryption via the Web Crypto API — random key or PBKDF2-HMAC-SHA-256 passphrase
The ciphertext travels in the URL #fragment, which is never transmitted to a server
Random-key mode opens instantly; passphrase mode keeps the key out of the link as a second factor
Recipient reveals and decrypts locally, with copy-and-clear and a per-device viewed flag
Honest: with no backend this is not a true one-time / burn-after-read secret
What is
Encrypted secret-sharing link
An encrypted secret-sharing link is a URL that carries an end-to-end encrypted secret so a recipient can decrypt it without the sender storing it on a server. This tool encrypts the secret in the browser with AES-256-GCM and places the entire ciphertext in the URL fragment (after the # symbol), which browsers never include in the HTTP request — achieving a zero-knowledge, no-backend design similar to PrivateBin. In random-key mode the decryption key is embedded in the link; in passphrase mode the key is derived from a passphrase with PBKDF2 and is never in the link. Because there is no backend, it cannot enforce true burn-after-read or expiry.
Security & Privacy
Related terms
AES-256-GCMWeb Crypto APIPBKDF2URL fragmentzero-knowledgeend-to-end encryptionPrivateBinone-time secretburn after readingbase64url
Frequently Asked Questions
No. The secret is encrypted in your browser and the ciphertext rides in the URL fragment, which is never sent to a server.
Encryption happens entirely on your device with the browser’s Web Crypto API. The encrypted payload is stored in the URL fragment — the part after the # — which browsers do not include in the HTTP request, servers and proxies do not log, and the Referer header strips. There is no backend, database, upload or CDN in the crypto path, and no analytics; the secret lives only in the link and your clipboard.
No. With no backend it cannot burn after reading — anyone with the full link can open it until you delete it where you shared it.
A real burn-after-read secret needs a server to store the ciphertext and delete it after the first fetch. This tool has no server, so the encrypted secret lives inside the link itself and keeps working every time the link is opened. The “viewed” flag is stored in your browser only and cannot stop someone opening the same link on another device. For guaranteed one-time access and expiry, use a hosted service such as onetimesecret.com or a self-hosted PrivateBin.
A random-key link embeds the key (opens instantly); a passphrase link keeps the key out of the URL as a second factor.
In random-key mode a fresh 256-bit AES key is generated and packed into the link alongside the ciphertext, so anyone with the full link can open it — treat the whole link as the secret. In passphrase mode the key is derived from a passphrase with PBKDF2-HMAC-SHA-256 and only the ciphertext is in the link; the recipient must also enter the passphrase, which you send over a different channel. A leaked passphrase-mode link alone cannot be decrypted.
Send the link over a private channel and, in passphrase mode, send the passphrase over a separate channel; delete both after use.
Use a private, trusted channel for the link (not a public post), and in passphrase mode send the passphrase through a different app or medium so a single intercepted message is not enough. Delete the message once the recipient has retrieved the secret, since the link keeps working. Be aware that URLs can be cached in browser history, chat link previews and security scanners, so treat the link as sensitive.
Detailed Explanation
📖How It Works
What This Tool Does
Secure Password Share is a 100% client-side tool for sending a secret — a password, API key, recovery code or private note — as an end-to-end encrypted link. A pure engine (secretShareEngine.ts) encrypts the secret in the browser with AES-256-GCM and packs the whole ciphertext into the URL fragment (the part after #), which browsers never send to a server. The recipient opens the link and decrypts it locally. There is no backend, no upload and no database; the link itself is the encrypted message.
Encrypts a secret in the browser with AES-256-GCM (Web Crypto API)
The encrypted payload rides in the URL #fragment, never transmitted to a server
Self-contained: the link carries everything needed to decrypt
Recipient decrypts locally with reveal, show/hide and copy-and-clear
No backend, no upload, no CDN in the crypto path
⚙️Methodology
How the Two Modes Work
In random-key mode the engine generates a fresh 256-bit AES key with crypto.getRandomValues, encrypts the secret with AES-256-GCM under a random 12-byte IV, and base64url-encodes iv ‖ rawKey ‖ ciphertext+tag into the fragment as #s1k.… — so the link opens with no passphrase. In passphrase mode it reuses the audited textCryptoEngine: PBKDF2-HMAC-SHA-256 stretches the passphrase over a random salt into the AES key, and only version ‖ iterations ‖ salt ‖ iv ‖ ciphertext+tag is placed in the fragment as #s1p.… — the passphrase is never in the link. GCM is authenticated, so a wrong key or any tampering fails to decrypt.
Passphrase: #s1p.base64url(version ‖ iterations ‖ salt ‖ iv ‖ ciphertext+tag)
PBKDF2-HMAC-SHA-256 key stretching; iteration count stored in the payload
AES-GCM authentication tag detects tampering or a wrong passphrase
base64url (RFC 4648 §5) keeps the payload URL-safe
🔧Technical Details
Why the URL Fragment Is Private
A URL fragment (everything after #) is a client-side construct: it is not included in the HTTP request line, so web servers, reverse proxies and the AnyTool host never receive or log it, and modern browsers strip it from the Referer header sent to third parties. This is the same zero-knowledge property PrivateBin relies on, where the server stores only an opaque blob and the key stays in the fragment. Here there is no server at all: the ciphertext and (in random-key mode) the key live only in the fragment, so nothing is uploaded and the tool works fully offline once cached.
Fragments are never part of the HTTP request — servers cannot log them
Stripped from the Referer header sent to other origins
Same fragment-key model as PrivateBin, but with no backend at all
Works offline once the page is cached (PWA)
All randomness from crypto.getRandomValues — never Math.random
⚠️Limitations
Honest Limitations
This is end-to-end encrypted but it is not a true one-time or self-destructing secret. Because there is no backend to store and delete the ciphertext, anyone holding the full link can open it repeatedly until the sender deletes it from wherever it was shared, and the tool cannot enforce server-side expiry. The “viewed” flag is stored on the opening device only and cannot prevent a different device from opening the same link. URLs may also be retained in browser history, chat link previews and security scanners. In random-key mode the key is inside the link, so a leaked link is a leaked secret; passphrase mode adds a second factor but relies on the passphrase being shared over a different channel. For guaranteed burn-after-read and expiry, use a hosted service such as onetimesecret.com or a self-hosted PrivateBin.
No backend → no true burn-after-read and no server-side expiry
Anyone with the full link can decrypt it repeatedly
The “viewed” flag is per-device only, not a global lock
Links can be cached in history, previews and scanners
Random-key links: the link itself is the secret — share privately
🔒Privacy & Security
Private by Design
The secret is encrypted entirely on the user’s device with the browser’s Web Crypto API, and the ciphertext is stored only in the URL fragment, which is never sent to a server. There is no upload, no database, no logging, no server and no CDN in the crypto path, and no analytics or telemetry anywhere in the tool. The secret exists only in the link and, briefly, the clipboard; the reveal view offers a copy-and-clear action and can strip the link from the current tab. The tool works offline once cached, supports dark mode and a mobile-first layout, and the only optional network use anywhere on the site is consent-gated ads, which never see the secret.
Encryption runs locally — nothing uploaded, logged or stored on a server
Ciphertext lives only in the #fragment and the clipboard
No server, no CDN, no analytics in the crypto path
Copy-and-clear and a strip-from-tab action for the recipient
Works offline once cached; dark-mode and mobile-first
Random-key vs passphrase links
Aspect
Random-key link (#s1k)
Passphrase link (#s1p)
Opens with
Just the link (key embedded)
Link plus the passphrase
Key derivation
Random 256-bit AES key
PBKDF2-HMAC-SHA-256 from the passphrase
If the link leaks
The secret is exposed
Still safe without the passphrase
What to share separately
Nothing — the link is the secret
Send the passphrase over a different channel
Best for
Speed and convenience
Higher-stakes secrets needing a second factor
Both modes are AES-256-GCM and 100% client-side. Neither is a true burn-after-read secret — there is no backend to delete the ciphertext. As of July 2026.