JSON Formatter
JSON Formatter for developers — instant, offline-style and privacy-safe.
Decode a JWT to read its header and payload — and see the expiry — right in your browser. An honest note: it decodes the token, it does not verify the signature.
Your browser is preparing the tool. It runs 100% locally.
Paste a JWT and the tool splits it into its parts, decodes the header and payload from Base64URL, and shows them as readable JSON, plus the expiry if the token has one. Two honest points: a JWT payload is only encoded, not encrypted, so anyone can read it; and this tool decodes but does not verify the signature, so it shows what a token claims, not whether it is authentic. It runs entirely in your browser; nothing is uploaded.
This tool takes a JSON Web Token — the kind used for login sessions and API authorisation — and reveals what is inside it. It decodes the header (which names the algorithm and token type) and the payload (the claims, such as the subject, issue time and expiry) into readable JSON.
It is the quick way to inspect a token: to see who it is for, what it grants, and when it expires, while debugging an authentication flow or checking a token you have been handed.
A JWT is three Base64URL-encoded parts separated by dots: the header, the payload and the signature. The tool splits on the dots, decodes the first two parts back into JSON, and pretty-prints them. If the payload has an expiry claim, it converts that timestamp into a readable date.
It deliberately stops there. The signature — the third part — is what proves the token has not been tampered with and came from someone holding the key. Verifying it requires that secret or public key, which this tool does not have, so it reads the token without vouching for it.
header . payload . signature (three Base64URL parts, joined by dots)
decode part 1 and part 2 back into JSON · the signature is not checkedheader {"alg":"HS256","typ":"JWT"} payload {"sub":"123","name":"Jane","exp":1735689600}The header and payload are encoded, not encrypted — anyone can read them. The signature proves integrity, but verifying it needs the key, which this tool does not check.
Your token is decoded entirely on your device, with no network request, so nothing is uploaded.
This matters for tokens. A live JWT can grant access, so you should never paste a real one into a site you do not trust. Here the decoding is local, but treat any working token as a secret regardless.
Nothing persists between sessions — close the tab and the token and its decoded contents are gone.
The decoding is exact: it shows the genuine contents of the header and payload as they are encoded in the token, so it is reliable for inspecting what a JWT claims.
It does not verify the signature. Because it has no key, it cannot tell you whether the token is authentic, untampered or issued by who it claims — it only reads the contents. A valid-looking payload is not proof of a valid token.
It reads but does not enforce claims. It will show an expiry date, but it does not reject an expired token or check the issuer or audience — that is the job of the server that consumes the token. Treat the displayed expiry as information, not a verdict.
A JWT payload is not private. Since it is only encoded, anyone with the token can read every claim. If you see sensitive data in a payload, that is a design problem with the token, not something this tool exposes — it was always readable.
Inspect a token's claims while troubleshooting a login or API flow.
See when a token was issued and when it expires.
Confirm the subject, scopes or roles a token carries.
See the header and payload structure of a real token.
To verify a token, your server checks the signature with the signing key and validates the claims — use a JWT library for that, not a decoder. To protect sensitive data, encrypt it rather than placing it in a readable JWT payload.
Base64URL-decodes the header and payload and shows the expiry; honest that it only decodes — it does not verify the signature, and a JWT payload is readable by anyone, not encrypted.
JSON Formatter for developers — instant, offline-style and privacy-safe.
JSON Validator for developers — instant, offline-style and privacy-safe.
Base64 Encoder for developers — instant, offline-style and privacy-safe.
Fast, free Hash Generator that runs entirely client-side in your browser.
Fast, free UUID Generator that runs entirely client-side in your browser.
Fast, free CSS Minifier that runs entirely client-side in your browser.
It is free, private and runs entirely in your browser — no sign-up, no uploads, no limits.