PGP verify

Verify an OpenPGP (PGP/GPG) signature against a message and the signer's public key. Detached or clearsigned, validity plus the signer's key ID and fingerprint — runs entirely in your browser.

Verification result

About this tool

PGP verify checks an OpenPGP (PGP/GPG) signature against a message and the signer's public key, confirming that the message was signed by the holder of that key and has not been altered since. Everything runs locally in your browser through WebAssembly — your message and keys never leave your device and are never uploaded to a server.

What it does

What you get back

A structured result reporting:

Note that a valid signature confirms the message was signed by the holder of that key — it does not by itself establish that you trust the key's owner. Always check the fingerprint against one you obtained from a trusted channel.

Tips

FAQ

Do I have to tell the tool whether my signature is detached or clearsigned?

No — the shape is auto-detected from the armor. A -----BEGIN PGP SIGNATURE----- block is treated as detached (so the message field must hold the original text), while a -----BEGIN PGP SIGNED MESSAGE----- block carries its own text and the message field is ignored. Anything else is rejected with a "no PGP signature found" error.

Why does verification fail when my message looks identical to the signed one?

A detached signature covers the exact bytes that were signed. A trailing newline you didn't notice, CRLF vs LF line endings, or an editor stripping whitespace is enough to flip valid to false even though the text looks the same. Copy the original file's contents unmodified.

The message was signed with a signing subkey — will it still verify?

Yes. Verification is attempted against the public key's primary key and every subkey, so the common GPG setup of certify-only primary + signing subkey works without any extra steps. The result tells you which key ID and fingerprint actually produced the signature.

Does valid: true mean I can trust the sender?

Not by itself. It proves the message was signed by the holder of that key and wasn't altered since. Whether the key really belongs to the person you think it does is a separate question — compare the reported fingerprint against one you obtained through a trusted channel.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool pgp-verify "-----BEGIN PGP SIGNATURE-----   (or -----BEGIN PGP SIGNED MESSAGE-----)" 'public_key=-----BEGIN PGP PUBLIC KEY BLOCK-----'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/pgp-verify/?signature=-----BEGIN%20PGP%20SIGNATURE-----%20%20%20%28or%20-----BEGIN%20PGP%20SIGNED%20MESSAGE-----%29&public_key=-----BEGIN%20PGP%20PUBLIC%20KEY%20BLOCK-----&message=The%20exact%20message%20that%20was%20signed.%20Leave%20blank%20for%20a%20clearsigned%20block.

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.