JWT Decoder

JWT Decoder

Decode a JWT header and payload locally — nothing is sent anywhere.

Ready.

What the JWT Decoder Does

A JWT (JSON Web Token) is a short string that carries authentication and session information, and it is only a Base64URL-encoded JSON string — not encrypted, and not secret. This decoder splits any JWT into its header, payload and signature in your browser, without sending it anywhere, and reads the time claims for you: issued at (iat), not before (nbf) and expires at (exp), each shown in UTC and in your local time.

How to Use the JWT Decoder

All the work is done in your browser in JavaScript. Decoding a token fires no network requests at all, so nothing is uploaded or stored.

What Is a JWT?

Decoding vs. Verifying — Know the Difference

Every JWT tool sits on one side of this line, and it is the limitation this decoder is explicit about:

Common Payload Claims

A payload mixes standard registered claims with custom fields — knowing the standard ones makes any decoded token far easier to read:

The decoder converts exp, nbf and iat for you in its Time claims panel, so you never have to work out a Unix timestamp by hand.

When You’d Use a JWT Decoder

Worked Example

Encoded JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3MzU2ODk2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Decoded header:

{ "alg": "HS256", "typ": "JWT" }

Decoded payload:

{ "sub": "1234567890", "name": "Jane Doe", "iat": 1516239022, "exp": 1735689600 }

Time claims:

Issued at (iat): 2018-01-18T01:30:22.000Z — Expires at (exp): 2025-01-01T00:00:00.000Z — Status: expired

This is the token behind the Load sample button, so you can click it and follow along. Notice that it starts with eyJ — the Base64URL encoding of {“, the opening of a JSON object whose first key is a string, which is why almost every JWT begins the same way.

Do’s and Don’ts

Do

Don’t

Common Mistakes

Good to Know

FAQ

Does this tool verify the JWT’s signature?

No. It decodes the header and payload so you can read them, and shows the signature as Base64URL text without checking it. A token that decodes perfectly may still be invalid or tampered with.

Is the information inside a JWT encrypted?

No. The header and the payload are not encrypted — they are only Base64URL encoded, so anyone can decode and read them without a key or a secret.

What does the “eyJ” at the start of my JWT mean?

It is the Base64URL encoding of {“, the opening of a JSON object whose first key is a string. Every JWT header is a JSON object, so almost every JWT begins with eyJ.

What does the exp claim mean?

It is the expiration time, given in Unix time — the moment the token stops being valid. The decoder converts it to a readable date and labels the token active or expired.

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

Decoding in the browser, as this tool does, adds no data exposure of its own — no request is sent while it decodes. Still treat real tokens carefully: anyone holding the raw JWT can already read it, so do not paste live production tokens into tools you do not trust.

How do I actually verify that a JWT is legitimate?

Verification happens on the server, using a JWT library for your language, the algorithm named in the header and the matching secret or public key. Decoding on its own proves nothing about authenticity.