SealFile — zero-knowledge file sharing
End-to-end encrypted file sharing where the server never sees the data — AES-256-GCM runs in the browser, keys live in the URL fragment, and nobody needs an account.
- Role
- Design & full-stack build
- Where
- Personal projectSolo
- Timeline
- Shipped June 2026
- Stack
- Next.jsReactTypeScriptWeb Crypto APINode.js
0
bit AES-GCM encryption, performed in the browser
0MB
per file — encrypted before it ever leaves the device
0
accounts, trackers, or server-side keys
Overview
SealFile is a privacy-first alternative to WeTransfer and Dropbox links: drag files in, get an encrypted link, share it. The difference is architectural — files are encrypted with AES-256-GCM inside the browser before upload, so the server only ever stores ciphertext. No account, no tracking, no compromises; free to use.
It's a personal project — I designed and built the whole thing solo, start to finish, and shipped it in June 2026.
Problem
Mainstream file-sharing services can read what you send them — and their business models often depend on it. The tools that respected privacy either died (Firefox Send) or made users choose between security and convenience. The design goal: sharing that feels as effortless as WeTransfer while being provably unable to leak your data.
Approach
The system was architected around one invariant, written down before any code: the decryption key must never reach the server. Everything else follows from it.
Keys are generated client-side and carried in the URL fragment — the part of a link browsers never send in requests. Recipients' browsers pull the ciphertext, then decrypt locally. The server's role collapses to storing opaque blobs and enforcing expiry, which is exactly as much as it can be trusted with.
On top of that invariant: three share modes (link-only, password-protected, or both), auto-expiring shares from one hour to 30 days, and per-link download limits — control without accounts.
Key decisions
- URL-fragment key transport — the elegant trick that makes zero-knowledge practical: the secret travels with the link but never appears in any server log.
- Web Crypto API over a bundled library — native AES-256-GCM in the browser, with the encryption code open-sourced so the claim is verifiable rather than promised.
- No accounts as a feature, not a limitation — nothing to sign up for means nothing to breach and no identity to track; shares are limited (5 files, 200 MB each) to keep the service free and abuse-resistant.
- Expiry as the default — shares are temporary by design; the safest data is data that no longer exists.
Outcome
A live, free, zero-knowledge sharing tool at sealfile.app — encryption strong enough to publish the source, UX simple enough that nobody notices it. The server can be subpoenaed, breached, or bought and the files stay unreadable, because it never had the keys.
