Secure Pastebin with Advanced Encryption

Share text and files securely with end-to-end encryption, PGP support, and self-destructing pastes.

🔒 End-to-End

Keep Your Content Private

All encryption happens client-side. The server never sees your unencrypted content or keys.

🔑 PGP Ready

Use Your Existing Keys

Leverage PGP keys from keyservers, GPG keyring, Keybase, or GitHub for trusted communications.

⏱️ One-Time

Self-Destructing Content

Create pastes that automatically delete after being viewed once.

📁 Binary Files

Beyond Just Text

Upload and share binary files with proper content type detection.

👥 Recipient Groups

Multi-Recipient Encryption

Create groups and encrypt to multiple recipients at once with smart prefix shortcuts (gh:, kb:).

⚡ CLI Power

Advanced Scripting

Command-line interface for easy integration with your existing scripts and workflows.

Installation

Using npm (recommended)

npm install -g dedpaste

From source

git clone https://github.com/anoncam/dedpaste.git
cd dedpaste
npm install
npm link

Quick Start Examples

Basic Usage

# Create a paste from stdin
echo "Hello, World!" | dedpaste

# Create a paste from a file
dedpaste send myfile.txt

# Create with custom filename
dedpaste send --filename "readme.md" < README.md

# Create a one-time paste (self-destructs after viewing)
dedpaste send --one-time secret.txt

# Retrieve a paste
dedpaste get https://paste.d3d.dev/AbCdEfGh

# Save retrieved paste to file
dedpaste get https://paste.d3d.dev/AbCdEfGh -o output.txt

Encryption & Security

# Generate your key pair (one-time setup)
dedpaste keys --gen-key

# Encrypt for yourself
echo "Secret data" | dedpaste send --encrypt

# Encrypt for GitHub/Keybase users (NEW: short prefixes!)
dedpaste send --encrypt --for gh:torvalds secret.txt
dedpaste send --encrypt --for kb:username data.txt

# Multiple recipients (NEW: space-separated!)
dedpaste send --encrypt --for gh:alice kb:bob dave@example.com

# Encrypt for a group (NEW!)
dedpaste send --encrypt --for team confidential.pdf

# Decrypt a paste (key in URL fragment)
dedpaste get https://paste.d3d.dev/e/AbCdEfGh#key

Key Management

# Enhanced interactive mode (recommended)
dedpaste keys:enhanced

# Fetch GitHub user's GPG key
dedpaste keys --github torvalds

# Import from Keybase
dedpaste keys --keybase username

# Create recipient groups
dedpaste keys --group-create team gh:alice kb:bob

# List groups
dedpaste keys --group-list

# List all stored keys
dedpaste keys --list

# Export your public key
dedpaste keys --export

Advanced Features

# Pipe from other commands
cat logs.txt | grep ERROR | dedpaste send --one-time

# Use in scripts
PASTE_URL=$(echo "Build complete" | dedpaste)
echo "Results: $PASTE_URL"

# Binary file support
dedpaste send image.png
dedpaste send document.pdf --encrypt

# Set custom expiration (if configured)
dedpaste send --expire 24h temporary.txt

# Copy to clipboard (requires xclip/pbcopy)
dedpaste get https://paste.d3d.dev/abc | pbcopy

Troubleshooting

Common PGP Errors

Error: PGP encryption requires a recipient

Always specify a recipient when using PGP encryption:

echo "secret" | dedpaste send --encrypt --for user@example.com --pgp

Error: Failed to find PGP key for recipient

Make sure you've added the recipient's PGP key first:

dedpaste keys --pgp-key user@example.com

Key Management Issues

Error: No personal key found

Generate a key pair first:

dedpaste keys --gen-key

Error: Cannot decrypt - missing private key

Make sure you have the private key for the recipient identity:

dedpaste keys --list  # Check if your key is listed

API Usage

REST API Endpoints

# Create a paste
curl -X POST https://paste.d3d.dev/api/paste \
  -H "Content-Type: application/json" \
  -d '{"content": "Hello, World!", "isOneTime": false}'

# Retrieve a paste
curl https://paste.d3d.dev/api/paste/AbCdEfGh

# Create an encrypted paste
curl -X POST https://paste.d3d.dev/api/paste \
  -H "Content-Type: application/json" \
  -d '{"content": "encrypted_content_base64", "isEncrypted": true}'

Note: When using the API directly, encryption must be handled client-side. The server only stores encrypted content and never has access to encryption keys.

NEW Features in v1.20+

  • GitHub Integration: Fetch GPG keys directly from GitHub profiles using gh:username
  • Recipient Groups: Create groups for easy multi-recipient encryption
  • Short Prefixes: Use gh: for GitHub, kb: for Keybase
  • Auto-PGP Detection: No more manual --pgp flags - encryption type auto-detected
  • Multiple Recipients: Space-separated recipients in a single command