PGP Key Generator & Encrypt / Decrypt

A PGP toolkit that runs entirely in your browser. Generate a fresh OpenPGP key pair (RSA 2048/4096 or modern Curve25519), then use the same page to encrypt messages to a recipient, decrypt messages addressed to you, or sign and verify text. Output is the standard OpenPGP format that works with GnuPG, Thunderbird, ProtonMail, Kleopatra, Mailvelope and any other compliant tool — no lock-in. Useful when you need to send one encrypted message without installing GnuPG, or generate a key pair on a borrowed machine that you'll then move to your own.

How to use

1
Generate a key pair

Enter your name, email, and a strong passphrase. Pick Curve25519 for new keys (fast), or RSA 4096 if you need maximum compatibility with older tools.

2
Share your public key

Copy or download the "-----BEGIN PGP PUBLIC KEY BLOCK-----" output. Publish it on your website, send via email, or upload to a keyserver. The public key is meant to be public.

3
Encrypt messages to others

Switch to the Encrypt tab. Paste a recipient's public key and the message. The output is a "-----BEGIN PGP MESSAGE-----" block — only the recipient (with their private key) can decrypt it.

4
Decrypt received messages

Switch to the Decrypt tab. Paste the encrypted message, your private key, and your passphrase. The plaintext appears below.

Generate a PGP / OpenPGP key pair and encrypt, decrypt, sign or verify messages — directly in your browser tab

Without the passphrase, the private key cannot decrypt or sign. Save it in a password manager.

                    
Fingerprint:

                    

                

                

                

🔒 How the cryptography is wired

  • Key material is drawn from your browser's cryptographically secure random source — never Math.random.
  • Key generation, encryption, decryption and signing all run inside your browser tab, on your CPU.
  • Your passphrase stays on the device — it is used locally to protect the private key and is not transmitted.
  • For an air-gap, load the page once with a connection, then disconnect before generating long-term keys — the toolkit keeps working offline from the service-worker cache.
  • Save your private key and passphrase securely; losing either makes the key permanently unrecoverable.
Don't know what to try?
450+ free tools — open a surprise
🎲 Surprise me

Features

RSA and Curve25519 Encrypt / decrypt / sign / verify Standard OpenPGP format Passphrase-protected private key Cryptographically secure generation Runs in your browser

FAQ

Does my private key or passphrase leave my device?

No. Everything — key generation, encryption, decryption, signing — runs inside your browser tab on your CPU. The private key and passphrase live only in tab memory and are gone when you close it. For long-term identity keys, load the page once, then disconnect from the network before generating — the toolkit keeps working offline.

Which algorithm should I pick?

Curve25519 for new keys: ~128-bit security, much smaller keys, generates instantly. RSA 4096 if you need to communicate with older systems that don't support modern ECC. RSA 2048 only for legacy compatibility — current guidance (NIST, BSI) recommends at least 3072 bits.

Can I import my existing key?

Yes. On Encrypt / Decrypt / Sign / Verify tabs, paste your existing OpenPGP key block. The page does not save it — only uses it for the current operation.

What if I forget my passphrase?

The private key becomes unusable. There is no recovery — that's the point of strong encryption. Save the passphrase in a password manager when you generate the key.

Is this compatible with GnuPG / Thunderbird / ProtonMail?

Yes. The output is the standard OpenPGP format (RFC 4880 / 9580). Decrypts with GnuPG, Thunderbird's built-in OpenPGP, Kleopatra, ProtonMail, Mailvelope, and any other compliant tool.

Why does Curve25519 generate instantly while RSA 4096 takes 10+ seconds?

RSA has to randomly sample large integers and test each for primality until it finds two suitable primes — a slow trial-and-error process. Curve25519 just picks a random integer in a known valid range, no primality test required.

💡 Want us to improve this tool just for you?

We can — and it's free! Just send us a quick message with your idea. If you'd like to discuss it in detail, leave your email and we'll get back to you. You can stay anonymous.

How do you rate this tool?

Thank you for your rating!
Want to share more? Leave a comment!
Thank you! Your comment will appear after moderation.
Published Updated