JWT Decoder
Paste a JSON Web Token to read its header and payload without any server call. Shows expiry in both absolute and relative time, and flags common token-security red flags like an alg:none header or a missing expiry.
How to use jwt decoder
- Paste the token
Copy a JWT from your app, cookie or Authorization header and paste it in.
- Click decode
The header and payload are Base64URL-decoded and shown as formatted JSON.
- Check the claims and warnings
Review issued-at/expiry times (shown as both a date and 'in 3 days'/'2 hours ago') and any security warnings flagged below.
Features
See the algorithm and all claims side by side in clean JSON.
exp, iat and nbf are translated to human dates and relative time, so you can spot expired or not-yet-valid tokens instantly.
Flags an alg:none header, a missing expiry, and other risky-token patterns worth knowing about before you trust it.
Decoding is local; the tool never verifies against or transmits your secret key.
Supported formats and limitations
Text and structured input supported by this tool.
Use cases include personal workflows, content preparation, and quick checks. Review output before relying on it for legal, financial, accessibility, or production decisions.
Frequently asked questions
Does this verify the signature?
No. It only decodes the readable header and payload. Verifying a signature needs the secret or public key and should be done server-side.
Is it safe to paste a real token?
Decoding happens entirely in your browser, but treat any live token as a credential and avoid sharing it or leaving it on shared computers.
Why can't it read my token?
A JWT must have three dot-separated Base64URL sections. If a part is missing or altered, decoding will fail.
What is the alg:none warning about?
Some JWT libraries historically accepted tokens with the header "alg":"none", meaning no signature is required at all — anyone could forge a valid-looking token by editing the payload. This tool flags that header as a serious red flag; a production system should never accept it.
Why does it warn when a token has no expiry?
A token with no exp claim never expires on its own, which is usually a mistake — long-lived or non-expiring tokens are far more dangerous if they leak. The tool flags this so you notice it during debugging.