Skip to content
XUtilHub

JWT Decoder – Decode JSON Web Tokens

Decode JWT tokens online and view the header, payload and claims. See issued-at and expiry times in readable form. Nothing is uploaded.

  • Free, no sign-up
  • Runs in your browser, nothing uploaded
Encoded token

The decoded header and payload appear here.

About the JWT Decoder

Paste a JSON Web Token to see its header and payload. Timestamps such as exp, iat and nbf are converted to readable dates, and the token's expiry status is shown. Decoding happens locally.

Key features

  • Decodes JWT header and payload instantly
  • Converts exp, iat and nbf timestamps to readable dates
  • Shows whether the token has expired
  • Accepts tokens with a 'Bearer ' prefix
  • Decoding happens locally; tokens are never uploaded
  • Copy header or payload as formatted JSON

What is a JWT?

A JSON Web Token (JWT) is a compact, URL-safe token used for authentication and authorization by OAuth 2.0, OpenID Connect, Auth0, Firebase, Azure AD/Entra ID, Cognito, Supabase and countless APIs. It has three Base64URL-encoded parts separated by dots:

header.payload.signature
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
  • Header: the algorithm and token type, e.g. {"alg":"HS256","typ":"JWT"}.
  • Payload: the claims, i.e. data about the user and the token.
  • Signature: proves the token wasn't modified; verified with a secret or public key.

Registered claims

ClaimNameMeaning
issIssuerWho issued the token
subSubjectWho the token is about (user ID)
audAudienceWho the token is intended for
expExpirationUnix time after which it's invalid
nbfNot beforeUnix time before which it's invalid
iatIssued atWhen it was created
jtiJWT IDUnique identifier, used to prevent replay

The decoder converts exp, iat and nbf from Unix seconds into your local date and time and shows a Valid / Expired badge.

Debugging authentication with the decoder

  • 401 Unauthorized? Check exp; the token may have expired.
  • Wrong API? Compare aud with the API's expected audience.
  • Missing permissions? Look for scope, scp, roles or permissions claims.
  • Clock skew? If nbf or iat is in the future, server clocks may be out of sync.
  • Wrong tenant or issuer? Check iss.

Signing algorithms

AlgorithmTypeVerified with
HS256 / HS384 / HS512HMAC (shared secret)The same secret
RS256 / PS256RSAIssuer's public key (often via JWKS)
ES256ECDSAIssuer's public key
noneUnsignedShould always be rejected

Security reminders

  • Decoding is not verification. Always verify signatures server-side with a trusted library.
  • Don't store sensitive data in the payload; it's readable by anyone holding the token.
  • Keep access tokens short-lived and use refresh tokens for long sessions.

Decode other Base64 data with Base64 to JSON, or format the payload with the JSON Formatter.

How to use the JWT Decoder

  1. Paste your data into the input box, upload a file, or click Sample to try it out.
  2. Adjust the options above the editor if you need to (indentation, delimiter, and so on).
  3. The result appears instantly in the output panel. Any errors are shown with their line and column.
  4. Click Copy to copy the result, or Download to save it as a file.

Frequently asked questions

Is it safe to paste my JWT here?

Decoding runs entirely in your browser and the token isn't sent anywhere. Still, treat production tokens like passwords: prefer expired or test tokens when sharing screenshots.

Does this tool verify the signature?

No. It decodes the header and payload, which anyone can do. Verifying requires the secret (HS256) or the issuer's public key (RS256/ES256) and should happen on your server.

Why can anyone read my JWT payload?

Standard JWTs (JWS) are signed, not encrypted. The payload is Base64URL-encoded JSON. Never put secrets or sensitive personal data in a JWT payload.

What do iss, sub and aud mean?

Issuer (who created the token), subject (usually the user ID) and audience (which API the token is for). They're registered claims defined in RFC 7519.

Is my JSON uploaded to a server?

No. All JSON tools run entirely in your browser, so your data never leaves your device.

Is there a size limit?

There is no fixed limit. Files of several megabytes work fine; very large files depend on your device's memory.

Do I need an account?

No. Every JSON tool is free and works without signing up.

Last updated:

Related JSON tools