Skip to main content
What you enter is never sent to a server. It is processed entirely in your browser and not stored anywhere.

JWT Decoder

Find out why an access or ID token is being rejected. The decoder expands the header (algorithm) and payload (claims) as JSON and converts exp, iat and nbf to dates in your time zone and UTC, so you can see at a glance whether the token has expired. A leading Bearer is fine. The token stays in your browser; it is never uploaded or stored.

Paste a string and the result appears here.

Other possible interpretations

Anatomy of a JWT

A JSON Web Token (RFC 7519) is three Base64url parts separated by dots: header.payload.signature. The header and payload are plain JSON, so anyone can read them. A JWT is signed, not encrypted, which is why secrets such as passwords must never be placed in the payload. The signature is produced with a shared secret (HS256) or a private key (RS256, ES256) and lets the server detect tampering. This tool does not have the key, so it does not verify the signature.

PartContentsExample
HeaderSigning algorithm alg, type typ, key ID kid{"alg":"RS256","typ":"JWT","kid":"abc"}
PayloadClaims: registered ones plus whatever the issuer adds{"sub":"user1","exp":1793500000,"role":"admin"}
SignatureSignature over the first two partsSflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Registered claims and how to read the times

Security notes

FAQ

Can it verify the signature?

No. Verification requires the issuer's secret or public key (JWKS). This tool decodes the contents and reports the signature length only.

Non-ASCII names in the payload look broken on another site.

JWT payloads are UTF-8 JSON. Tools that decode Base64 byte-by-byte into characters mangle accents, Cyrillic, CJK and emoji. This decoder uses proper UTF-8 decoding. Text that is already garbled can often be repaired with the mojibake fixer.

What about strings that are not JWTs?

The universal string decoder auto-detects Base64, URL encoding, hex, timestamps and more.

Sources