Fully client-side
Fully client-side — OpenPGP.js never sends your keys or messages to any server.
500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.
Encrypt, decrypt, generate PGP key pairs, and sign/verify messages in-browser with OpenPGP.js.
PGP (Pretty Good Privacy) is a proven standard for end-to-end encrypted communications. This tool brings the full OpenPGP workflow to your browser using the OpenPGP.js library — the same engine behind ProtonMail and many open-source email clients. Four tabs cover the complete PGP lifecycle: Encrypt a message using a recipient's public key so only they can read it; Decrypt a ciphertext using your private key and optional passphrase; Generate a fresh key pair (ECC ed25519 for modern use, or RSA 2048/4096 for broad compatibility); and Sign a message or Verify a signed message using public-key cryptography. All operations happen entirely in your browser — no data is sent to any server. ECC key generation is recommended for new use cases because ed25519 keys are far smaller and faster than RSA while providing equivalent security.
Fully client-side — OpenPGP.js never sends your keys or messages to any server.
Supports modern ECC (ed25519) and legacy RSA 2048/4096, covering all common interoperability needs.
The Verify tab lets you authenticate messages without installing GPG locally.
Generate and download key pairs in standard ASCII armor format accepted by all PGP tools.
Useful for testing PGP integrations, onboarding users to encrypted workflows, and learning the OpenPGP standard.
Fully client-side — OpenPGP.js never sends your keys, passphrases, or messages to any server, and you can verify zero network activity in DevTools.
Input: Recipient public key: -----BEGIN PGP PUBLIC KEY BLOCK----- mDMEY3... -----END PGP PUBLIC KEY BLOCK----- Message: The deploy key for prod is in 1Password under prod-deploy
Output: -----BEGIN PGP MESSAGE----- hQEMAyM... -----END PGP MESSAGE----- (only the recipient's private key can decrypt this)
Input: Name: Alice Example Email: alice@example.com Algorithm: ECC ed25519 Passphrase: (set a strong passphrase)
Output: Two ASCII-armored blocks: a public key (~700 chars, share this) and a private key (~1100 chars, keep secret). Download both as alice-public.asc and alice-private.asc.
Input: Signer public key: -----BEGIN PGP PUBLIC KEY BLOCK----- ... Signed message: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 v2.4.0 is now available... -----BEGIN PGP SIGNATURE----- ...
Output: Verified — green badge. The signature is valid and the message has not been altered since the holder of this private key signed it.
Input: Your private key: -----BEGIN PGP PRIVATE KEY BLOCK----- ... Passphrase: ******** Ciphertext: -----BEGIN PGP MESSAGE----- hQEMAyM...
Output: Decrypted plaintext appears in the output panel: 'AWS_ACCESS_KEY=AKIA...; AWS_SECRET=...' — only readable by the holder of this specific private key.