A leading Bearer, surrounding quotes and any line breaks are stripped for you, so paste the header line straight out of your terminal.
A leading Bearer, surrounding quotes and any line breaks are stripped for you, so paste the header line straight out of your terminal.
The JWT Decoder splits a token into its three sections, decodes the header and payload out of base64url, and lays the claims out with what each one means and when its timestamps actually fall. Registered claims from RFC 7519 and the usual OpenID Connect ones are named for you, so a payload full of azp, amr and auth_time reads as sentences rather than abbreviations. Give it the signing secret or the issuer's public key and it checks the signature too, through the browser's own crypto.subtle, which is the part a plain Base64 decoder can never do.
The guide behind this tool
Inside a JWT: Why Decoding a Token Proves Nothing
The claims are base64, not encryption, so the holder can read every one of them. What the signature settles, and the checks it quietly leaves to you.
Paste the token. A leading Bearer, wrapping quotes and any line breaks the terminal added are stripped, so the whole Authorization header can go in as it is.
Read the header and payload side by side, then use the claims table underneath for the meaning of each name and the UTC time behind each number.
Paste the shared secret for an HS token, or the issuer's public key in PEM or JWK form for RS, PS and ES, to have the signature verified.
Copy either decoded section with its own button.
No. The decoding is string work and the signature check runs through crypto.subtle, both inside the page you are looking at. Nothing about the token or the key leaves the browser, which matters because a live access token is a credential: anyone holding it can act as you until it expires.
26+ Free Tools
Explore all categories
From text processing to developer utilities, all free, all instant, no sign-up.