Troubleshoot a 401 error
An API rejects your request: decode the Bearer token to see whether it has expired, whether the aud audience matches the API you call, or whether the iss issuer points to the right environment.
Paste a JSON Web Token: the header and payload are decoded to JSON as you type, with a summary of the algorithm, issuer, audience and the exp, iat and nbf dates in local time.
algtypkidisssubaudexpiatnbfDecoding does not verify the signature: anyone can read a JWT. To check the signature, use the JWT verifier.
The JWT decoder shows the header and payload of a JSON Web Token in plain JSON as soon as you paste it. It is built for developers, testers and support teams who need to understand what an access token or ID token contains: algorithm, issuer, audience and validity dates. It reads the token but does not verify its signature.
A signed JWT (RFC 7519, in the JWS compact format of RFC 7515) is made of three dot-separated segments: header, payload and signature. The first two are JSON encoded in Base64URL, a Base64 variant that replaces + and / with - and _ and drops the = padding. The decoder splits the token, converts each segment to UTF-8 text and parses it as JSON. For example, the segment eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 is {"alg":"HS256","typ":"JWT"}.
The summary then extracts the useful fields: alg and typ from the header, iss (issuer), sub (subject) and aud (audience) from the payload. The exp, iat and nbf claims are NumericDate values, a number of seconds since January 1, 1970 UTC: 1767225600 is January 1, 2026 at 00:00 UTC. The tool converts them to local time and tells you whether the token is valid, expired or not yet valid. A warning appears when the header declares alg: none, meaning an unsigned token.
Paste the full token with its three dot-separated parts. Decoding starts as you type, with no button to click.
Both segments are shown as formatted JSON: algorithm and type in the header, standard and custom claims in the payload.
Review the algorithm, iss, sub, aud and the exp, iat and nbf dates in local time with their status. To check the signature, move on to the JWT verifier.
An API rejects your request: decode the Bearer token to see whether it has expired, whether the aud audience matches the API you call, or whether the iss issuer points to the right environment.
After an OpenID Connect login (Auth0, Keycloak, Entra ID, Cognito), check custom claims such as roles, groups or scope to understand why a user cannot access a page.
Compare iat and exp to confirm that your identity provider really issues access tokens valid for 5, 15 or 60 minutes, as your configuration intends.
Input
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cResult
Header: {"alg":"HS256","typ":"JWT"}; Payload: {"sub":"1234567890","name":"John Doe","iat":1516239022}; the signature is not verified when decoding.Yes. The header and payload are only Base64URL-encoded, not encrypted, so anyone holding the token can read them. The key is only needed to verify the signature, which is the job of the JWT verifier, not this decoder.
No, a signed JWT (JWS) is readable by anyone; the signature only proves it has not been modified. Never put passwords or confidential data in the payload. If the content must stay secret, use a JWE (RFC 7516).
exp is the expiration time, iat the issued-at time and nbf the time before which the token must not be accepted. They are Unix seconds (NumericDate, RFC 7519), not milliseconds. The tool shows them in local time with a valid, expired or not-yet-valid status.
alg: none means the token is not signed at all. A server that accepts it lets anyone mint their own tokens, a well-known flaw listed in RFC 8725. A production application must always enforce an allow-list of algorithms.
The token is often truncated during copy and paste, still contains the Bearer prefix or quotes, or does not have three segments. A segment that is not valid Base64URL, or whose content is not JSON, also triggers an error.
A valid access token is a credential: whoever gets it can use it until it expires. Here, decoding happens in your browser and the token is not sent to any server. Still, prefer test or already expired tokens whenever you can.
Recommended workflow
Discover tools that naturally fit before, after, or alongside this one.
Encode text as Base64 or decode a Base64 string back to its original content.
Format, minify, and validate JSON to make it easier to read or more compact.
Compute MD5, SHA-1, SHA-256, SHA-384 and SHA-512 hashes of a text or file in one go.
Verify a JWT signature with an HMAC secret or a JWK, JWKS or PEM public key, then check exp, nbf, iss and aud.
Learn what a JWT contains, why decoding is not verification, how claims such as exp, nbf, iss and aud work, and common security mistakes.
Understand how OAuth 2.0, PKCE, JWT, JWK and JWKS fit together: authorization, tokens, public keys and verification.
Learn why covering text is not enough, how secure PDF redaction removes sensitive information and why sanitization matters before sharing.
Learn how to introduce a CSP progressively, understand its main directives, Report-Only mode, nonces and common mistakes.