← Back to archive

Repo of the Day

PrivateBin/PrivateBin

Published: Mar 4, 2026

Open repository ↗

A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.

Summary

PrivateBin is a self-hosted, PHP-based pastebin that encrypts pastes in the browser with 256-bit AES in Galois Counter mode, so the server only stores ciphertext it cannot read. The current release is version 2.0.6, a refactored fork of Sébastien Sauvage's ZeroBin built to be easier to extend. Note that the GitHub repository is marked NOASSERTION for licensing, so reuse terms should be confirmed with the project before redistribution.

What it is useful for

PrivateBin suits teams that want to share text, logs, or short code samples through infrastructure they control without handing the contents to a third-party service. The decryption key is carried in the URL fragment, and the documented feature set covers most day-to-day sharing needs: optional password protection, expiration timers, a "burn after reading" mode, Markdown rendering, syntax highlighting via prettify.js, file uploads for image, media, and PDF behind a configurable size limit (disabled by default), anonymous or nickname-based discussion threads, and QR codes for moving a paste URL to a phone. Templates — bootstrap5, bootstrap, and darkstrap — let operators match the UI to an existing site, and a translation system with automatic browser language detection is available.

The README is candid about the limits. HTTPS with HSTS is required, or the network path itself can leak data. Without a password, a paste URL behaves like a bearer secret. Server access logs can still reveal who opened a paste, and a compromised host could serve tampered JavaScript that captures keys, so users should stop using an instance they suspect has been breached. Server administrators keep plausible deniability about paste contents but can still be compelled to delete pastes or hand over logs.

How engineers can use it

The README does not embed step-by-step setup; it points to the Installation guide at doc/Installation.md and to the wiki pages for Configuration, Templates, Translation, and Development. A typical deployment means putting the PHP application behind an HTTPS-enabled web server, choosing a storage backend, and editing the configuration file to enable or disable features such as file uploads, language detection, and discussion identity options. Customization work — restyling the UI, adding translations, or extending behavior — is documented in the corresponding wiki pages, and issues or feature ideas go to the project's issue tracker.