Verify offline

Check it yourself. Do not trust us.

Every Patina score comes with a signed message. This page checks one, entirely inside your browser, with no request to Patina and no request to anyone else. Load the page, turn off your network, and it still works.

That matters more than it sounds. If the only way to check a Patina score were to ask Patina, the signature would prove nothing: you would be trusting the same server twice. A signature is worth something precisely because a stranger can check it without us.

Paste it exactly as it appears, including the blank line and every line break. A single changed character is the whole point: it will not verify.

The same check, in code

Nothing on this page is special. It is one function call from a standard Ethereum library, and any of them will do it. Run this anywhere, against any Patina attestation.

import { recoverMessageAddress } from "viem";

const signer = await recoverMessageAddress({ message, signature });

// Patina's published signing address.
const genuine =
  signer.toLowerCase() === "0x620ddbecead28bbf1b979bfab8e3a7b893aa54a1";

Grab an attestation to test with from /api/verify/{username}, or read the full developer docs.

Looking up a score instead? Verify by username. Wiring this into an AI agent? Patina speaks MCP.