How to generate or inspect a PGP key

Generate a key pair in the browser: enter a name, and optionally an e-mail address, a passphrase and an expiry of one or two years. The page creates an OpenPGP.js 6.3.1 key pair on the Curve25519 family — an Ed25519Legacy signing key with a Curve25519Legacy encryption subkey — and shows both ASCII-armor blocks.

The second panel reads an existing public or private key in ASCII armor and reports what it finds: the fingerprint, key ID, identities, algorithm, creation and expiry dates, subkey count and whether the private key is passphrase protected. Nothing is uploaded, and the generated keys stay in the page until you copy or download them.

  1. Enter a name; add an e-mail address if the key should carry one, choose an expiry (Never, 1 year, 2 years) and optionally type a passphrase.
  2. Press Generate key pair — the pair is created locally and both armor blocks appear under Generated key material.
  3. Paste a public or private key into the second panel and press Inspect key to read its fingerprint, identities, dates and protection state.
  4. Copy or download the armor blocks; closing the page discards them, so store the private key before you leave.

What the inspector reports, field by field

What the generated key contains

The primary key is an Ed25519Legacy signing key and the pair includes a Curve25519Legacy ECDH encryption subkey, which is what OpenPGP.js 6.3.1 produces for the curve25519Legacy profile. The fingerprint is the 40-hexadecimal digest shown in groups of four; the key ID is its last 16 digits. The expiry applies to the whole pair: Never, one year or two years after creation.

When a passphrase is entered, the private key material is encrypted with it; without one, the private-key block is unprotected and anyone who copies it can use it. The page keeps both blocks in memory only — it never stores or uploads them, and a refresh or a closed tab discards everything that was not copied or downloaded first.

What the inspector reports

Paste a block that starts with BEGIN PGP PUBLIC KEY BLOCK or BEGIN PGP PRIVATE KEY BLOCK. The table then lists the fingerprint, key ID, the user identities carried by the key, the algorithm and curve, the creation date, the expiry date (or Never) and the number of subkeys. The protection row reads Public key only, Passphrase protected or Not protected.

Reading the details does not need the passphrase: the inspector looks at the key metadata, not at the secret material it protects. If the box is empty it asks for an armored key first, and if the block cannot be parsed it says so and points at the BEGIN and END lines; a failed read clears the previous table instead of leaving the earlier key's details on screen.

What this tool does not do

It generates and reads key material; it does not encrypt or decrypt messages or files, sign, verify signatures, import a key into a keyring or test whether a passphrase is correct. It also does not vouch for a key: it shows the fingerprint and identities, but comparing them with the source you expect is still your call.

The generator uses the legacy Curve25519 profile for compatibility with existing OpenPGP implementations. Everything runs in the page, and no request carries the keys or the passphrase.

Recent tools: