Selective Disclosure JWT

SD-JWT is a JWT format that lets an issuer sign a set of claims once and lets the holder disclose only selected fields to a verifier, without breaking the signature. This page decodes and validates SD-JWTs entirely in your browser — no tokens are logged or sent anywhere.

Learn more about SD-JWT

How SD-JWT works

An SD-JWT is a signed JWT whose payload contains hashes of individual claim disclosures rather than the claims themselves. Each disclosure is a base64url-encoded array of [salt, claim_name, claim_value]. The holder chooses which disclosures to present alongside the JWT; the verifier hashes each disclosure and matches it against the _sd array in the payload to reconstruct only the disclosed claims.

Key-binding JWT (KB-JWT)

An optional key-binding JWT proves the holder controls a key referenced by the SD-JWT's cnf claim. It is signed by the holder and appended after the disclosures, separated by a ~ character. Its sd_hash claim binds the KB-JWT to the exact SD-JWT and disclosure set being presented.

Supported algorithms

This tool verifies signatures for RS256/384/512, PS256/384/512 and ES256/384/512. Symmetric algorithms (HS*) are intentionally rejected since they cannot be safely verified from a public key.

The SD-JWT specification is RFC 9901.