Free online file & data tools

JWT Decoder

Paste a JSON Web Token to see its header and payload, convert exp and iat to dates, and check an HMAC signature.

Paste a token. Read its claims.

Header · Payload · Expiry · HS256/384/512 check · Nothing is uploaded

A leading “Bearer ” is removed automatically.

Paste a JWT to decode it.

Check the signature (HMAC only)

Signature not checked.

How to decode a JWT

  1. Paste the token, with or without the “Bearer ” prefix from an Authorization header.
  2. Read the decoded header and payload. Timestamps such as exp and iat are shown as dates, with a warning if the token has expired.
  3. To check an HS256, HS384 or HS512 signature, enter the shared secret and press Verify.

What is inside a JSON Web Token

A JWT is three base64url-encoded parts joined by dots: header.payload.signature.

  • The header names the signing algorithm (alg) and usually the type (typ: "JWT") and key ID (kid).
  • The payload holds the claims: who the token is about, who issued it and when it expires.
  • The signature is computed over the first two parts. Change one character of the payload and the signature no longer matches.

Registered JWT claims

Standard claims from RFC 7519
ClaimNameMeaning
issIssuerWho created and signed the token
subSubjectThe user or entity the token is about
audAudienceWhich service the token is meant for
expExpiration timeUnix time after which the token must be rejected
nbfNot beforeUnix time before which the token must be rejected
iatIssued atUnix time the token was created
jtiJWT IDA unique ID, used to stop a token being replayed

Decoding is not verifying

Base64url is an encoding, not encryption, so never put secrets such as passwords in a JWT payload. A server must verify the signature with the expected key and algorithm before trusting any claim, and should reject tokens whose header says "alg": "none". Use this decoder to debug tokens, not to decide whether one is valid in production.

Need to inspect or tidy the payload further? Paste it into the JSON formatter. To create a SHA-256 hash of a string or file, use the checksum generator.

Frequently asked questions

Is it safe to paste a JWT here?

Decoding happens entirely in this browser tab. The token and any secret you enter are not uploaded, logged or saved. Even so, treat a live token like a password: anyone who has it can use it until it expires, so prefer test tokens and avoid pasting production tokens into any website you do not control.

Does decoding a JWT verify it?

No. The header and payload are only base64url-encoded, so anyone can read them. A token is trustworthy only after its signature is checked with the right key, and your server should also check the issuer, audience and expiry. This tool can check HS256, HS384 and HS512 signatures with a shared secret.

What do exp, iat and nbf mean?

They are registered claims from RFC 7519, written as Unix timestamps in seconds. exp is when the token expires, iat is when it was issued, and nbf is the time before which it must not be accepted. The decoder converts them to your local time and shows whether the token has expired.

Why can’t I read my token’s payload?

A token with five dot-separated parts is an encrypted JWE, not a signed JWT, and its payload can only be read with the decryption key. Tokens that are not JWTs at all, such as opaque OAuth access tokens, are random strings and have nothing to decode.

Can it verify RS256 or ES256 tokens?

Not yet. Tokens signed with RSA or elliptic-curve keys need the issuer’s public key, usually published as a JSON Web Key Set (JWKS). This tool decodes those tokens and shows their claims, but checks signatures only for the HMAC algorithms.