# ScorchPad > Zero-knowledge encrypted text sharing built by Rsaat Labs. Encryption happens entirely in your browser. The server never possesses decryption keys and cannot read your content under any circumstances — including legal compulsion. Auto-deletes after reading. Fully open source. ScorchPad is a pastebin where all encryption happens client-side using the Web Crypto API before any data leaves your device. The decryption key is placed only in the URL fragment (the `#` part), which browsers never transmit in HTTP requests. The server receives and stores only an encrypted blob — mathematically indistinguishable from random noise without the key. ## Open Source ScorchPad is fully open source. The entire codebase — frontend, backend API, encryption logic, and database schema — is publicly available: - Repository: https://github.com/scorchpad/scorchpad - `src/lib/crypto.ts` — full AES-256-GCM WebCrypto implementation - `src/lib/urlFragment.ts` — key encoding and erasure from URL fragments - `app/api/paste/create/route.ts` — proof the server receives ciphertext only - `middleware.ts` — nonce-based CSP preventing unauthorized script injection - `lib/ip.ts` — HMAC-SHA256 IP hashing; raw IPs are never stored For a zero-knowledge tool, open source is not just a philosophy — it is the only way to substantiate the claims. You should not have to trust our word. ## Cryptographic Implementation - **AES-256-GCM** — authenticated encryption; tamper-proof (ciphertext modification causes decryption failure, not silent corruption) - **PBKDF2-SHA256 at 310,000 iterations** — password hardening meeting the OWASP 2023 minimum; the password is never sent to the server - **Zero-knowledge architecture** — the server stores only the encrypted blob; decryption keys are never transmitted - **URL fragment erasure** — after decryption, `history.replaceState()` removes the key from the browser address bar and history - **Clipboard auto-clear** — 30-second countdown after copying a share link; the clipboard is then overwritten with an empty string - **Atomic burn-after-reading** — implemented via a Lua script on Redis; race-condition proof; two concurrent requests cannot both receive the last view - **Sandboxed HTML rendering** — HTML pastes are rendered in an `