Skip to content
TinySolve

JWT Decoder

Read the header and claims inside a JSON Web Token, with expiry shown in plain language.

Runs in your browser — nothing you type is sent anywhere

This reads a token; it does not verify one. A JWT payload is Base64, not encryption — anyone holding the token can read it. Only the signature proves it was not tampered with, and checking that needs your secret or public key, which should never be pasted into any website. Decoding happens in this page and the token is not sent anywhere.

About the JWT Decoder

A JSON Web Token is three Base64 segments separated by dots: a header saying how it was signed, a payload of claims, and a signature over the first two. The payload is not encrypted — it is merely encoded — so anyone holding the token can read every claim in it. That surprises people, and it is the single most important thing to understand about the format.

This tool decodes the header and payload and lays the claims out as a table, with the registered ones labelled: issuer, subject, audience, issued-at, not-before and expiry. The time claims are seconds since the epoch rather than milliseconds, which is a classic off-by-a-thousand error, and they are shown here both as a readable time and as a relative one, so an expired token is obvious at a glance.

It decodes; it does not verify. Verifying a signature requires the secret or the public key that signed it, and pasting a signing secret into a website would be a serious mistake regardless of who ran the site. Any tool offering to verify your token online is asking for exactly the thing you must never hand over. The signature is shown as it appears, and plainly described as unchecked.

The whole thing runs in this page, so the token never reaches a server. That still leaves the ordinary caution: a token in your clipboard or browser history is a live credential until it expires, so treat one you have pasted anywhere as worth rotating.

How to use the JWT Decoder

  1. Paste the token

    The three dot-separated parts. A leading Bearer prefix is stripped automatically, so you can paste straight from an Authorization header.

  2. Check the summary

    The algorithm, when it was issued and when it expires appear at the top, with an expired token flagged clearly.

  3. Read the claims

    Header and payload are shown as labelled tables, so you can see exactly what the token asserts without decoding Base64 by hand.

  4. Copy what you need

    Either section can be copied as formatted JSON for pasting into a bug report or a test.

Frequently asked questions

Can this verify my token's signature?
No, deliberately. Verifying requires the secret or public key that signed the token, and pasting a signing secret into any website is a serious mistake. A tool that offers to verify online is asking for the one thing you must never share.
Is a JWT encrypted?
No. The header and payload are Base64url-encoded, which is reversible by anyone. The signature stops the token being modified, but it does not hide anything, so never put a secret inside a JWT payload.
Why does my token show as expired when it should be valid?
Check the exp claim is seconds rather than milliseconds. A millisecond value read as seconds lands tens of thousands of years in the future, and a seconds value read as milliseconds lands in January 1970. This tool treats them as seconds, which is what the specification requires.
Is my token sent anywhere?
No. Decoding happens entirely in your browser and no request is made. You can confirm it by watching the network tab while you paste one.
What do iat, nbf and exp mean?
Issued-at is when the token was created, not-before is the earliest moment it may be accepted, and expiry is when it stops being valid. All three are seconds since 1 January 1970, and all three are shown here as readable times.