Keep automatic reading distinct from verification
Automatic decoding waits 350 ms after edits. Turn it off to use Decode or Ctrl/Cmd+Enter. The switch never triggers signature verification or test-token generation.
Public-key inspection
Read a token first, then explicitly decide which public key and algorithm to trust.
Token and keys stay in this page’s memory. No remote key requests or input storage.
Unverified: decoding does not validate a token.
Choose the expected algorithm yourself. A matching signature does not establish issuer identity, permission, revocation status or overall token validity.
One public JWK or SPKI PEM PUBLIC KEY. RS256 requires RSA 2048–8192 bits; ES256 requires P-256. Private keys and remote JWKS are not accepted.
exp, nbf and iat checks are independent of signature. Future iat is flagged by this debugger policy. Missing times remain missing; empty issuer/audience means unchecked. UTC display uses millisecond precision; the original fraction stays in the report.
Token: 100,000 characters; key: 20,000; test claims: 50,000. Strict base64url, UTF-8 and object JSON only. Duplicate keys and numbers that change on conversion are rejected.
Paste a compact JWT to begin.
Use this JWT debugger to investigate a rejected API request: inspect the header and claims, compare the reported issuer and audience, and see the time fields as UTC dates. The initial result is decoded data with an unverified signature.
A JWT decoder reads the first two base64url segments without a key. Signature verification requires an explicit algorithm and a public key; an expiration check answers a different question. These results remain separate throughout the report.
This JWT debugger keeps the signature status separate from the time checks. An expired token may still have a matching signature; a readable payload may have no trustworthy signature at all. This distinction helps explain why an API rejects apparently normal JSON.
Enable the JWT encoder for tests to create a temporary local key pair. Generation produces a preview; applying it replaces the main token and public key together. One undo restores the previous input and result, so a test does not silently overwrite your investigation.
Automatic decoding waits 350 ms after edits. Turn it off to use Decode or Ctrl/Cmd+Enter. The switch never triggers signature verification or test-token generation.
Choose RS256 or ES256 yourself and paste a public JWK or SPKI PUBLIC KEY PEM. Enter an expected issuer or audience when needed. Header key references never select a trusted key.
An empty reference uses the current time for each run. A supplied Unix-second value makes a check reproducible. The current-time action previews a replacement; changed inputs disable export until results refresh.
Strict decoding shows the JSON objects and signature information. The report distinguishes the declared algorithm from your expected algorithm; neither a kid nor a URL establishes trust.
JWT signature verification accepts RS256 with RSA 2048–8192 bits or ES256 with P-256. A mismatch is reported separately from an invalid key, an unsupported algorithm or malformed input.
Use the JWT expiration checker for exp, nbf and iat with a reference time and 0–86400 seconds of tolerance. Future iat is flagged by this debugger policy; absent fields stay missing.
Compare iss exactly and check whether aud equals or contains the expected audience. Empty expectations remain unchecked. A signature match cannot grant access or establish revocation status.
Yes, after explicitly choosing RS256 or ES256 and supplying the corresponding public JWK or SPKI PEM key. The signature result describes that key comparison only; inspect the separate time, issuer and audience results as well.
The exp value is in Unix seconds. At the reference time, the check fails when the time minus tolerance reaches exp. A wrong reference or a device clock that is ahead can explain an unexpected result.
A signed compact JWT exposes its header and claims through base64url encoding. That encoding provides no confidentiality. The signature protects integrity when verified with the expected key; it does not hide the payload.
No. This workbench handles three-part compact tokens and rejects five-part JWE. Use the issuer’s appropriate decryption tooling for encrypted payloads; no decryption key is requested here.
Yes: RS256 with RSA public keys of 2048–8192 bits, and ES256 with P-256. Other RSA and ECDSA variants are outside this verifier’s scope, although their ordinary header and claims may still decode.
Something unexpected in the report?
Use the JWT debugger with the expected algorithm, a known public key and a deliberate time reference; export only the report for the current inputs.