IT Tool

JWT Decoder - Read Claims, Expiry Status, and Algorithm

Decode a JSON Web Token in your browser to read its header and payload, see at a glance whether it is expired or not yet valid, and get warned about an unsigned alg:none token.

Instant 100% Client-Side No Login
PROCESSINGLOCAL
LIMITNONE
PRIVACYBROWSER-ONLY

Encoded JWT

Reading a token, and the line a decoder cannot cross

A JSON Web Token packs a small amount of signed JSON into a compact string, and it is used everywhere in modern authentication because a server can trust a valid token without looking anything up in a database. It has three parts joined by dots: a header naming the signing algorithm and token type, a payload of claims about the user and the token, and a signature over the first two. The header and payload are only base64url-encoded, so decoding them is trivial, which is exactly what this tool does.

The line worth being honest about is the signature. A decoder can read the claims, but it cannot tell you whether they are trustworthy, because that requires the key the token was signed with, and only the servers involved hold it. That is not a limitation of this particular tool; it is true of every browser-based decoder, and any that claims to verify a signature without a key is not telling the truth. So this tool shows the signature segment plainly and states that it is unverified, rather than implying a check it cannot perform.

Expiry is usually the answer

When an API call suddenly returns a 401, an expired token is the first thing to check, and it is the thing a raw JSON dump makes hardest to see, since exp is a Unix timestamp. This tool reads that timestamp, compares it to your clock, and shows a plain badge: valid and expiring in some amount of time, or expired some amount of time ago. It also honours nbf, the not-before claim, flagging a token that will not be accepted yet because its start time is still in the future. Both answers appear without you decoding a number by hand.

The claims that have meaning

Most payload keys are application-specific, but seven are registered by the standard and carry defined meanings: iss (issuer), sub (subject), aud (audience), exp, nbf, iat, and jti (a unique token id). The decoder labels whichever of these appear, so you can quickly confirm a token was issued by the server you expect and aimed at your application, two checks a backend should always make before trusting a token beyond its signature.

The alg:none trap, and why decode is not trust

One header value deserves special attention. The algorithm field tells a server how the token was signed, and a value of none means it was not signed at all. A classic attack takes a legitimate token, rewrites its algorithm to none, and deletes the signature, betting that a carelessly written server will skip verification and accept it. Because this is subtle and dangerous, the tool flags an alg: none token in red the moment it decodes one. A correct implementation rejects none outright and accepts only a fixed set of strong algorithms it expects.

This connects to the single most important habit when working with JWTs: decoding is not verifying. Everything this tool shows you comes from an unverified token, which is to say from data an attacker could have written. It is perfect for understanding a token’s structure, debugging why a login failed, or confirming which claims a service issues, but the values only become trustworthy once a server has checked the signature against the right key and validated the issuer, audience, and expiry. Read here; trust only after verifying there.

And a note on confidentiality: a signed JWT is not encrypted. The payload is readable by anyone who has the token, so it must never carry secrets. Everything here happens in your browser with no network request, which keeps your token private from us, but the token’s own claims are visible to every party it passes through, and that is a property of JWTs, not of this tool.

Related tools

Each JWT segment is base64url, so the Base64 Converter can decode an individual part by hand, and the JSON Formatter will pretty-print and validate the resulting claims. The signature is built on hashing, which the Hash Generator can compute for the SHA algorithms JWTs use.

How to Use

1

Paste the full token (it starts with eyJ...) into the box.

2

The header and payload decode instantly into readable JSON.

3

Read the status badge to see whether the token is expired, valid, or not yet active.

4

Check the timestamps section for issued, not-before, and expiry times in your local zone.

5

Note the algorithm and the reminder that the signature is shown but not verified.

Features

Decodes header and payload with correct UTF-8, so non-ASCII claims are not mangled
Expiry status at a glance: expired, valid, or not yet valid, with relative time
Warns when a token uses the unsigned alg:none, the classic bypass
Labels the standard registered claims (iss, sub, aud, exp, nbf, iat, jti)
Shows the signature segment while making clear it is not verified
Runs entirely in your browser; tokens are never uploaded or stored

Common Questions

Use this JWT decoder to read the header and payload of a JSON Web Token in your browser, with correct UTF-8 so non-ASCII claims survive, and a status badge that tells you at a glance whether the token is expired, still valid, or not yet active. It labels the standard registered claims, converts the iat, nbf, and exp timestamps to your local time with relative descriptions, warns when a token is unsigned with alg:none, and shows the signature while being clear that it does not verify it. Nothing you paste leaves your device.

About JWT Decoder

Decode the header and payload of a JSON Web Token in your browser, with correct UTF-8 so non-ASCII claims are not mangled by the old escape/unescape trick. A status badge tells you at a glance whether the token is expired, still valid, or not yet active (nbf), with iat, nbf, and exp shown in your local time and as relative descriptions. Standard registered claims (iss, sub, aud, exp, nbf, iat, jti) are labelled, the signature segment is shown while making clear it is not and cannot be verified without the key, and an unsigned alg:none token is flagged in red as the classic authentication bypass. Nothing you paste is uploaded.

Also known as: decode jwt, jwt parser, read jwt token, json web token decoder, jwt viewer, jwt claims, jwt expiry, check jwt expired, jwt debugger, jwt payload decode, jwt header decode, inspect jwt.

Processing Note

JWT Decoder runs in your browser, so the input you enter is processed locally on this page and is not uploaded to a ToolMintX account.

Tool Limits

IT tools provide quick diagnostics and transformations. They cannot see every private network, deployment setting, proxy, firewall, or production edge case.

Explore More