Token under examination
- Header
- Payload
- Signature
Pasted content is parsed in this page only. It is never sent anywhere, and it is not written to browser storage. Decoding a token proves nothing about who produced it.
Payload
Signing
Editing the header or payload re-encodes the token in the strip at the top of the page, which is the only copy of it on this page. Supply a key here and it is re-signed as you type.
alg, so edit the header to change it
The key stays in this page's memory and is never stored or transmitted. The key format is detected from what you paste. The Build tab offers the same signing with explicit control over the algorithm and key format.
Claims
| Claim | Value | Type | Interpretation |
|---|
Paste a token above to see its claims.
Selective disclosure (SD-JWT)
This token carries SD-JWT disclosures: values held outside the signed payload, each matched to it by a digest. Every digest below is recomputed in this page and checked against the payload; nothing is fetched.
Key binding JWT
A holder key-binding JWT is attached. Its own header and payload:
Validity timeline
Signature segment
—
This is the raw base64url signature segment. Its presence says nothing about validity; use the Verify tab with a key you already trust.
Sign a token
The header and payload from the Decode tab are used as the source document. Choose an algorithm explicitly — it is written into the header rather than read from it.
Key material stays in this page's memory. It is not stored, logged or transmitted. Do not paste production keys into a deployment you do not control.
An unsecured token has no signature at all. It is never cryptographically verified here and must never be accepted by a deployed verifier (RFC 8725 §3.2).
Signed token
Generated test key
Generated with crypto.getRandomValues / Web Crypto key generation in this page.
It exists only in memory until you copy it. It is a throwaway test key, not a production key.
Accepted algorithms
Verification is refused unless the token's declared algorithm appears in this list. The list is yours, not the token's: this is the defence against algorithm-substitution attacks (RFC 8725 §3.1).
Verification key
Key selection from the supplied JWKS
Test the secret against a wordlist
For an HMAC token only. This re-signs the token with each candidate secret, entirely in this page, and tells you if a weak or example value produced its signature. A match means anyone with the same list can forge tokens. Nothing is fetched, and no secret leaves the page.
Remote key retrieval is disabled
This workbench never dereferences jku, x5u, iss or any
other value taken from a token, and it never fetches discovery documents. Header-supplied
jwk and x5c material is displayed as untrusted metadata and is not
offered as a verification key.
Claims policy
These are application-policy checks. They are independent of the signature: a token with a valid signature can still fail every check here, and a token that passes them all may still be forged.
No checks have been run yet.
Findings
Findings are generated locally from the token you supplied. A finding describes something worth looking at; it is not a statement that a system is exploitable.
Paste a token to see findings.
Local policy thresholds
Both values are this application's own policy, not requirements of any RFC. Byte length is a length measure and does not establish entropy.
Diagnostic report
A report can be exported for a ticket or write-up. Nothing is written to a file until you review the preview and choose to download it.
Algorithm support in this browser
Web Crypto implementations differ. Support below is measured by asking this browser to create or import a key for each algorithm, not assumed from a compatibility table.