JWT Decoder
Inspect the header, payload and claims of a JSON Web Token — without handing it to a third party.
What this tool does
A JWT is three base64url-encoded segments separated by dots: a header describing the signing algorithm, a payload of claims, and a signature. The first two are encoded, not encrypted — anyone holding the token can read them, which is exactly what this tool does.
The timestamp claims are where most debugging time goes, so they are rendered as absolute dates alongside the raw numbers. exp, iat and nbf are Unix seconds, and an off-by-1000 error (milliseconds where seconds were expected) is one of the most common causes of a token that is mysteriously always expired.
This tool does not verify the signature, and says so rather than implying more than it does. Verification requires the issuer's secret or public key, and a decoder that claimed to validate without one would be misleading. Treat everything shown here as unverified input.
How to use it
- Paste the token. The whole thing, including both dots. A leading "Bearer " is ignored, and any whitespace or line breaks inside the token are stripped before decoding.
- Read the header and payload. The algorithm and key id appear in the header; your claims in the payload.
- Check the timestamps. exp, iat and nbf are shown as dates, so an expired or not-yet-valid token is immediately obvious.
- Open the raw segments if you need them. The “Show the raw segments too” option prints the three base64url strings unchanged, for pasting elsewhere.
Processing & privacy
Runs on your device. Your file is processed directly in this browser.
Common use cases
Debugging a 401
Check whether the token is expired, issued for the wrong audience, or missing a scope the API requires.
Confirming a claim shape
Verify that the fields your backend expects are actually present, and spelled the way it expects them.
Reading someone else's token format
Understand what an identity provider issues before you write code against it.
Spotting a millisecond bug
A token whose exp is a thousand times too large or small shows up instantly when rendered as a date.
Questions
Is my token sent to a server?
Does this verify the signature?
Is a JWT encrypted?
Why does my token fail to decode?
Should I paste a production token here?
Related tools
- JSON Formatter — Pretty-print, collapse and inspect JSON instantly.
- Base64 Encoder Decoder — Encode and decode Base64 text and files.
- Hash Generator — Compute MD5, SHA-1, SHA-256 and SHA-512 digests.
- Regex Tester — Test patterns against sample text with live matches.
- Unix Timestamp Converter — Convert between epoch seconds and readable dates.
- QR Code Generator — Create a QR code for a link, text, Wi-Fi or vCard.