JWT decoder: read and verify a JSON Web Token

This JWT decoder shows what is inside a JSON Web Token: header, payload and signature, plus issuer, expiry and validity in plain words. If you enter the secret or the public key it can even verify the signature. The token never leaves your browser.

Source: §§ 2, 4.1 (Claims, NumericDate), IETF RFC 7519 – JSON Web Token (JWT). Updated: .

Paste the token – “Bearer ” in front is fine. It has three parts separated by dots.

Your text stays in your browser – it is not sent, not stored and not added to the address bar.

HS256/384/512: the secret as text. RS/PS/ES: public key as PEM (“BEGIN PUBLIC KEY”) or JWK. The key stays in your browser.
HS256/384/512 only: the secret is decoded before checking (common with generated keys). Otherwise the text is used as typed.
My ToolboxYour inputs are saved in this browser only.

Result

Status
Valid JWT format – algorithm HS256
Signature
Valid ✓ – the signature matches the key you entered.
Header
{ "alg": "HS256", "typ": "JWT" }
Payload
{ "sub": "1234567890", "name": "Jane Doe", "iss": "https://beispiel.example", "iat": 1516239022, "exp": 4102444800 }
Times (UTC)
Issued (iat): 2018-01-18T01:30:22Z Expires (exp): 2100-01-01T00:00:00Z – in 73 years
Known claims
Issuer (iss): https://beispiel.example Subject (sub): 1234567890

How it is calculated

A JSON Web Token (JWT) carries claims between two parties – typically after login as proof that “this user is signed in”. It has three parts separated by dots: header.payload.signature (RFC 7519, RFC 7515).

How to decode a JWT

  1. Paste the token into the top box (with or without “Bearer”).
  2. Header and payload appear at once as readable JSON, with expiry and issuer below.
  3. Optional: enter the key under “Secret or public key” and the tool verifies the signature.

What is inside a token

Important: reading is not verifying

Header and payload are only base64url-encoded, not encrypted. Anyone who sees a token can read it – passwords or other secrets do not belong in it. Without a signature check the content proves nothing, because anyone can change it. Verification here works with an HMAC secret (HS256/384/512) and a public key (RS, PS, ES); a token with alg: none is unsigned.

Protection against algorithm confusion

A known attack hands the server a token with alg: HS256 signed using the public key as the secret. The tool therefore refuses to verify when a public or private key is entered as an HS secret (RFC 8725 advises never taking the algorithm from the token alone).

Limits

Frequently asked questions

What is a JWT?

A JSON Web Token is a compact, URL-safe string of three parts (header, payload, signature). It carries claims such as user ID or expiry and is often used as proof of access after login.

Can anyone read the content of a JWT?

Yes. Header and payload are only base64url-encoded, not encrypted. Only the signature protects against tampering, not against reading. So never put secrets in a JWT.

How do I verify the signature of a JWT?

Under “Secret or public key” enter the secret for HS256/384/512, or the public key as PEM or JWK for RS256, PS256 or ES256. The result appears under “Signature”.

Is it safe to paste my token into an online decoder?

This decoder works entirely in your browser and sends nothing. Still, a valid token is proof of access. Use test tokens or already expired ones where you can.

What do exp, iat and nbf mean?

exp is the moment the token expires, iat the moment it was issued and nbf the moment it becomes valid. All three are seconds since 1 January 1970 UTC.

Why does the tool say “not verified”?

Without a key there is nothing to check the signature against, so the content is only read. Unsupported algorithms or unsuitable key formats also skip the check.

Sources and legal basis

As of: · Editorial policy

Related tools