
Offline, open-source web app for passkey-based file encryption and sharing. AES-256-GCM/HPKE, no cloud, no accounts; encrypt to recipients with public Share Keys.
FileKey is an offline web app that lets you quickly encrypt and share files using passkeys. No accounts, no tracking, no cloud.
🛡️ FileKey is free, open source, and privacy-first. Live at filekey.app.
Create your FileKey
Create a passkey stored in your password manager or security key (iCloud Keychain, Google Password Manager, 1Password, a YubiKey, etc.).
Encrypt files
Drop any file (or a whole folder) into FileKey. It's encrypted instantly with AES-256 and saved as name.filekey.
Decrypt files
Drop the encrypted file back in. Your passkey unlocks it, locally and securely.
Share privately
Encrypt a file to someone's Share Key (only they can open it), or share a "send me a file" link to receive encrypted files from anyone.
Save a recovery code
Optionally save a one-time recovery code so you can get back into your files even if you lose your passkey.
FileKey needs a passkey provider that supports the WebAuthn PRF extension: a compatible password manager (Apple Passwords, Google Password Manager, 1Password, etc.) or a FIDO2 hardware security key (YubiKey 5 / Bio Series). Your browser and OS must also support WebAuthn + PRF. A non-exhaustive compatibility table:
⚠️ Notes:
- The provider must implement the WebAuthn PRF extension; support varies by app and version, so if a manager doesn't work yet, it likely hasn't shipped PRF.
- Chromium-based browsers (Brave, Vivaldi, Opera) generally work.
- Windows 10 and earlier don't support PRF.
FileKey derives your encryption identity from a passkey. When you create your FileKey, a passkey is registered against the app's domain (filekey.app) as the relying party. Authenticating runs the passkey's PRF extension over a fixed input, producing a deterministic secret that never leaves your device. That secret is run through HKDF-SHA-256 to derive your long-term identity key pair, so the same passkey always reproduces the same identity, and nothing has to be stored beyond the passkey itself.
Files are encrypted with HPKE (Hybrid Public Key Encryption, RFC 9180) in Auth mode, using the DHKEM-P256 + HKDF-SHA-256 suite. HPKE derives fresh per-file keys, and the file body is sealed with AES-256-GCM in a streaming, chunked construction so files of any size encrypt and decrypt without being held entirely in memory. Encrypting to yourself uses your own public key; sharing uses the recipient's. Every operation runs entirely on your device through audited crypto libraries.
🛡️ Your passkey is the only credential. There's nothing else to store, and nothing ever leaves your device.
Every FileKey user has a unique Share Key, a long public string you'll find in the menu under "Your Share Key." It's safe to share openly; it's a public address, not a secret.
name.shared.filekey. Send it by any method: email, messaging, file transfer..shared.filekey file in.Share a "send me a file" link (it embeds your Share Key). Anyone (no account, no passkey) can use it to encrypt a file to you right in their browser, then send you the result. Only you can open it.
Because your identity comes from your passkey, losing that passkey would normally mean losing access. FileKey offers an optional recovery code, a 24-word phrase (BIP39) that backs up your identity. Save it once, keep it somewhere safe, and you can restore access later.
FileKey also ships a self-contained offline recovery tool (recover.html): a single HTML file you can keep on disk. With your recovery code it decrypts your .filekey files entirely offline, even if the FileKey website ever disappears.
Two safety nets:
Open FileKey, click the Install icon in the address bar, and confirm. It opens as a standalone offline app.
Open FileKey in Safari → tap Share → Add to Home Screen → Add.
Open FileKey → tap Add to Home screen (banner or ⋮ menu) → confirm.
Because FileKey is a static site with no backend, you can also self-host it (see below).
FileKey is a static site built with Bun:
cd reference
bun install
bun test # crypto-core tests
bun run build:web # build the app
bun run serve # serve it locally
The build output is plain static files. Host them on any static host or your own server.
Self-hosting note: the passkey relying-party ID is derived as the registrable domain (the last two labels of the host). Host FileKey on your own apex or subdomain (e.g.
files.example.com→ RP-IDexample.com). A host whose registrable domain is a public suffix (e.g.you.github.io, where browsers reject an RP-ID ofgithub.io) won't work; use a custom domain instead.
FileKey 1.1 uses a new, standards-based format and cannot open files made by the original FileKey. Old files still open at v1.filekey.app with the same passkey, and FileKey links you there automatically when it detects one. The original v1 source lives on the v1 branch.
🔒 filekey.app – the app
📜 Substack – our blog
💬 Signal Group – chat with us
| Platform | Passkey providers | Notes |
|---|
| macOS | Apple Passwords, 1Password, YubiKey | Safari ≥ 17 or Chrome ≥ 112. YubiKeys may not work in Safari. |
| iOS / iPadOS | Apple Passwords, 1Password | Safari ≥ 17 or Chrome ≥ 112. |
| Windows | 1Password, YubiKey | Edge ≥ 112 or Chrome ≥ 112. Requires Windows 11. |
| Android | Google Password Manager, 1Password, YubiKey | Chrome ≥ 112. |
| Linux | YubiKey (via browser) | Recent Chrome / Chromium browsers. |