ToolNimbus

JWT Decoder

Paste a JSON Web Token and instantly read its header, payload, and claims in plain, formatted JSON. The tool highlights standard claims like expiry and issued-at as human-readable dates and tells you whether the token has expired. Everything is decoded in your browser — your token is never sent anywhere.

Decoded entirely in your browser — your token is never uploaded or logged.

How to Use

Paste your JWT into the box (or load the sample). The decoder splits it into its three parts, Base64URL-decodes the header and payload, and shows them as readable JSON. Standard time claims (exp, iat, nbf) are converted to dates, and an expiry banner tells you if the token is still valid.

Why This Tool Is Useful

JWTs are the backbone of modern authentication, but they're opaque strings you can't read at a glance. When debugging an API, a login flow, or a permissions bug, you often need to see exactly what's inside a token — which user it identifies, what scopes it carries, and when it expires. Pasting a token into a random website is risky, since JWTs can contain sensitive session data. This decoder runs 100% client-side, so the token never leaves your machine.

The Three Parts of a JWT

A JWT is three Base64URL-encoded segments separated by dots: header.payload.signature. The header says how the token is signed (for example HS256 or RS256). The payload holds the claims — the actual data. The signature is a cryptographic seal that proves the token wasn't tampered with.

Decoding is not the same as verifying. Anyone can decode the header and payload because they're just Base64 — only the signature check (which needs the secret or public key) proves the token is authentic. This tool decodes; it does not verify.

Understanding Expiry

The exp claim is a Unix timestamp for when the token stops being valid. This tool compares it to the current time and shows a clear expired / valid banner. The iat (issued at) and nbf (not before) claims are shown as dates too, so you can see the token's full lifetime at a glance.

Is It Safe to Decode Tokens Here?

Yes. The decoding happens entirely in your browser with JavaScript — there is no server call, no logging, and nothing is stored. That matters because a live JWT is effectively a password: if it leaks, someone can impersonate the user until it expires. Keep that in mind before pasting production tokens into any online tool.

Standard JWT Claims

ClaimNameMeaning
issIssuerWho created and signed the token
subSubjectWho the token is about (usually a user ID)
audAudienceWho the token is intended for
expExpirationTime after which the token is invalid
nbfNot beforeTime before which the token is invalid
iatIssued atWhen the token was created
jtiJWT IDA unique identifier for the token

Frequently Asked Questions

What is a JWT?

A JSON Web Token is a compact, signed token used to securely carry claims (like a user ID and permissions) between a client and a server. It has three parts: header, payload, and signature.

Does this tool verify the signature?

No. It decodes the header and payload so you can read them, but verifying the signature requires the secret or public key that signed the token, which this tool never asks for.

Is it safe to paste my token here?

Decoding happens entirely in your browser — the token is never uploaded or logged. Still, treat live tokens like passwords and avoid pasting production tokens into any online tool you don't control.

Why can anyone read a JWT payload?

The payload is only Base64URL-encoded, not encrypted. Encoding makes it URL-safe, not secret. Never store sensitive data you wouldn't want the user to see inside a JWT payload.

How do I know if a token is expired?

The tool reads the exp claim, converts it to a date, and shows an expired or valid banner by comparing it to the current time.

What does 'alg' in the header mean?

It's the signing algorithm, such as HS256 (HMAC + SHA-256) or RS256 (RSA + SHA-256). It tells the server how to verify the signature.

Related Tools