PGP Suite
Generate a key pair, encrypt a message, decrypt one, sign a text so anyone can prove it came from you, verify a signature someone sent you, and inspect a key before you trust it — the five jobs people actually open GnuPG for, without the command line. Everything runs locally in this browser tab: your private key and your passphrase are never uploaded, never logged and never leave your device, because a tool that asks you to paste a private key into a server has already failed its only important test. Close the tab and the keys are gone with it — save what you generate before you leave.
Generate a key pair
Curve25519 is the modern default: small keys, fast operations, and the same choice current GnuPG makes for new keys. Choose RSA-4096 only when the other side's tooling is old enough to need it. A passphrase encrypts the private key at rest — set one if you will store the key anywhere.
The passphrase never leaves this tab. If you set one and forget it, the private key cannot be recovered — by us or by anyone.
Encrypt a message
Paste the recipient's public key and the message. Only the matching private key can open the result, so the ciphertext is safe to send over channels you do not trust.
Decrypt a message
Paste your private key, its passphrase, and the encrypted message. The plaintext appears here and nowhere else — it is not stored, so copy it before you close the tab.
Sign & verify
A cleartext signature keeps the message readable while letting anyone with your public key prove it is yours and unaltered. Sign with your private key on the left; verify a signed message with the signer's public key on the right.
Inspect a key
Before you encrypt to a key someone handed you, look at it: whose it claims to be, what algorithm it uses, when it was created, whether it expires, and the fingerprint to compare out-of-band — over the phone, in person, anywhere that is not the channel that delivered the key.
Powered by OpenPGP.js, used unmodified under the GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later). Full source is available from the OpenPGP.js repository.
Why this lives in your browser, and what it cannot do
PGP has survived three decades because its trust model needs no server: keys are generated by their owner, encryption happens on the sender's machine, and decryption happens on the recipient's. Every web form that breaks that shape — upload your private key, we will decrypt for you — reintroduces exactly the middleman PGP exists to remove, which is why this suite is built the other way round: the OpenPGP.js library is downloaded once as code, and then your keys, passphrases, plaintexts and ciphertexts are processed by that code in your tab and never transmitted. That is also why there is no account and no key storage here. A key generated above exists only in the textarea it appeared in until you save it; the honest workflow is to download both halves, keep the private key somewhere encrypted, publish the public key wherever people look for you, and treat any service that offers to “keep your keys safe online” as the threat, not the remedy. The companion guide, PGP encryption without the command line, walks that workflow end to end, including how to check a fingerprint before the first message.
The honest limits matter as much as the features. This page makes cleartext signatures only — it does not detach-sign files or encrypt files, because a file tool must never upload its input either, and that deserves its own page rather than a bolt-on. It does not manage a keyring, fetch keys from keyservers, or check revocation: a key inspected here is a key as pasted, and its fingerprint is the part to verify elsewhere. And it cannot rescue a lost passphrase — there is no recovery, by design. Around the suite, the neighbouring tools cover the adjacent jobs: the certificate & key matcher does the same pairing check for TLS certificates, and the password generator produces the strong, unique passphrase your private key deserves — both, like this page, without anything leaving your browser.
Frequently asked questions
Is it really safe to paste my private key here?
On this page, yes — and the reason is architectural, not a promise. The page makes no network request when it decrypts or signs: the OpenPGP.js code runs in your browser tab, the key is used in memory and never transmitted, stored or logged. You can confirm it yourself: load the page, go offline, and everything still works. That is a different species of tool from a server-side “online PGP” form, where the key genuinely does travel to someone else's machine — never use those with a key that matters.
Curve25519 or RSA-4096 — which should I generate?
Curve25519 for anything new. It is the default in current GnuPG and OpenPGP.js, keys and signatures are far smaller, generation is instant instead of seconds of prime hunting, and there are no weak-RSA-parameter footguns. RSA-4096 exists here for compatibility: very old mail plugins, legacy HSM workflows and a few enterprise tools still cannot read elliptic-curve keys. If you are not sure you need RSA, you do not.
What happens if I forget my private key passphrase?
The key is lost. The passphrase encrypts the private key material itself, so without it the mathematics cannot be run by anyone — not by this site (which never saw it), not by OpenPGP.js, not by GnuPG. That finality is the security property working as intended. Generate a new key pair, publish the new public key, and if losing access would hurt, keep the passphrase in a password manager — generated by the same kind of local tool, not memorised into reuse.
Verification says the signature does not match. What does that mean?
It means the message in front of you is not bit-for-bit the message that was signed — or the signature block itself was damaged in transit. Mail clients and chat tools re-wrap lines, convert dashes and chew on trailing whitespace, and a cleartext signature covers the exact bytes, so transport mangling is the common cause; a deliberate edit looks identical from the verifier's chair, which is the point of signing. Ask for the message as a file attachment, and compare fingerprints out-of-band if the content matters.
Can I use keys I already have — from GnuPG, Mailvelope or a keyserver?
Yes. Export the armored block (gpg --armor --export [email protected] for a public key, --export-secret-keys for a private key) and paste it anywhere on this page; the inspector reads keys made by other OpenPGP software too, because the format is the standard, not this site's invention. The reverse also holds: keys generated here import cleanly into GnuPG and every compatible client, so nothing you make here locks you in.