Free JWT decoder (local decode + optional HMAC verify)

Paste a standard JWS compact token (three Base64URL parts). Header and payload are decoded and formatted as JSON. Optional verification only supports symmetric HS256, HS384, and HS512 using Web Crypto — your secret never leaves this tab. RS256, ES256, EdDSA, and alg none are shown for inspection but cannot be fully verified here.

Loading…

How to use this tool

  1. 1

    Open JWT decoder

    Use it for this task: JWT header and claims decode, UTC exp / nbf / iat, optional HS256 / HS384 / HS512 verify - no upload.

  2. 2

    Paste the encoded value

    Add the token or encoded string in the input box. The page decodes it locally in your browser.

  3. 3

    Read and copy the decoded parts

    Review the header, payload, claims, or decoded text, then copy the piece you need.

Quick facts

Runs offline?Yes — after this page loads, decoding and HMAC use only your browser.
Is anything uploaded?No. Safe Local Tools is static; tokens and secrets stay in this tab.
RS256 or JWKS?Asymmetric algorithms need public keys or JWKS — not implemented here. Decode claims only.
Encrypted JWE?Only JWS compact (signed) tokens with three segments are supported — not JWE.

Top use cases

  1. JWT header and claims decode, UTC exp / nbf / iat, optional HS256 / HS384 / HS512 verify - no upload.
  2. Runs offline?: Yes — after this page loads, decoding and HMAC use only your browser.
  3. Is anything uploaded?: No. Safe Local Tools is static; tokens and secrets stay in this tab.
  4. RS256 or JWKS?: Asymmetric algorithms need public keys or JWKS — not implemented here. Decode claims only.
  5. Encrypted JWE?: Only JWS compact (signed) tokens with three segments are supported — not JWE.

FAQ

Can I trust the decoded payload?

Anyone can Base64-decode a JWT. Signature verification proves integrity for the right algorithm and key — when this page can perform it (HS256 family plus a secret you supply).

Why does verification say unsupported?

Many APIs issue RS256 tokens verified with the issuer’s public key. Importing JWKS and wiring every curve is out of scope for this lightweight decoder — use your framework or jwt.io-style tooling for full asymmetric checks.

Are secrets stored?

No server calls exist. Secrets live in page memory until you reload or navigate away.

Does this validate exp against the clock?

We display timestamps for information only. Your API must still enforce exp and nbf when authorizing requests.

Why is my paste invalid?

Some tools add a Bearer prefix or wrapping quotes. Trim to exactly header.payload.signature with ASCII dots. Preserve case in the Base64URL segments.

What about nested JWTs?

If a claim contains another JWT string, decode that inner token in a second pass — this field expects one compact JWS at the outer level.