JWT Decoder

Paste a JSON Web Token to read its header and payload with human-readable timestamps. Decoding is local and the signature is not verified.

Signature not verified. This tool decodes the token locally in your browser to show what is inside. It does not check the signature, so a token shown here is not proven authentic. Never paste a live production token you do not control.

What is inside a JWT

A JSON Web Token is three Base64url-encoded segments separated by dots. The header names the signing algorithm (such as HS256 or RS256) and the token type. The payload holds the claims: standard ones like sub (the subject the token is about), iss (issuer), aud (audience) and the timestamp claims, plus any custom fields the issuer adds. The signature is a hash of the first two parts made with a secret or private key - it is what proves the token was not altered.

The timestamp claims

Three claims are Unix timestamps in seconds and this tool converts each to your local time. iat records when the token was issued, nbf marks the earliest moment it may be used, and exp is when it expires. The table shows whether the token is currently within its valid window and how long until - or since - it expires, so you can tell at a glance whether an auth failure is simply a stale token.

Decoding is not verifying

This is the point worth repeating: reading a JWT and trusting it are different things. Because the payload is only encoded, not encrypted, anyone can see and decode its contents - which is exactly what happens here. Only checking the signature against the issuer's key proves the token is genuine, and that must happen on a server that holds the key. Treat this tool as a window for debugging, never as an authorisation check.

Since each JWT segment is Base64url and each decoded segment is JSON, the Base64 encoder and the JSON formatter are natural companions. To convert a raw exp value by hand, the Unix timestamp converter does the epoch-to-date maths.

Frequently asked questions

What are the three parts of a JWT?
A JSON Web Token has three Base64url segments joined by dots: the header (which algorithm and token type), the payload (the claims - who the token is for and what it grants), and the signature (a cryptographic check that the first two parts were not tampered with). Only the signature is secret-dependent; the header and payload are readable by anyone.
Does this tool verify the signature?
No. It only decodes the header and payload so you can read them. Verifying the signature needs the issuer's secret or public key and must be done on a trusted server. A decoded token being readable here does not mean it is valid or trusted.
Is it safe to paste a JWT here?
Decoding happens entirely in your browser with JavaScript - the token is never sent anywhere. That said, a JWT is a live credential. Avoid pasting production tokens into any online tool you do not control, and never share one that is still valid.
What do iat, exp and nbf mean?
They are standard timestamp claims in Unix seconds. iat is "issued at" (when the token was created), exp is "expiration" (after which it must be rejected), and nbf is "not before" (it is invalid until this time). This tool converts all three to your local time and tells you how long until, or since, expiry.
Why is my JWT payload not encrypted?
A standard JWT is signed, not encrypted. The payload is only Base64url-encoded, which anyone can reverse - as this tool shows. Never put passwords or secrets in a JWT payload. If you need the contents hidden, use an encrypted token (JWE) instead.