JWT Decoder
Decode a JWT, read its claims and expiry, and verify its signature in your browser.
Runs fully in your browser. Nothing you paste here is sent anywhere.Private- Header
- Payload
- Signature
Encoded token
Decoded
About this tool
Paste a token and it is split and decoded as you type: the header in red, the payload in purple and the signature in blue, in the pasted text and in the decoded panes alike. The header and payload are shown as formatted JSON, and every claim is listed with what it means — iss, sub, aud, the OpenID Connect profile claims, Microsoft Entra IDs — with exp, nbf and iat turned into dates in your time zone. Badges at the top say at a glance whether the token has expired, how long it lives and whether its signature was verified.
To verify the signature, paste the secret for HS256, HS384 or HS512 — as text, Base64 or hex — or the public key for RS, PS, ES and EdDSA tokens. The key can be a PEM public key, an X.509 certificate, a private key (only its public half is used), a single JWK or a whole JWKS, from which the key matching the token’s kid is picked. The load-sample button fills in a fresh token and its secret, so you can see a passing check and then break it.
A token that will not decode is reported by line and column, with the offending character underlined in place: a stray character from a copy, a missing part, a header that is not JSON. Tokens pasted with "Bearer" in front, wrapped in quotes or broken across lines are read as they are. Encrypted tokens (JWE) are recognised, and their header is shown; unsigned alg "none" tokens and times written in milliseconds are called out.
Nothing you paste is transmitted. The page is static HTML, the decoding is plain JavaScript and the signature check runs on your browser’s own Web Crypto, so production tokens and signing secrets never leave the tab — which is what makes a JWT debugger safe to use at all.
Frequently asked questions
Is it safe to paste a production token or secret here?
Yes. Decoding and verification run entirely in your browser, and the page has no backend to send anything to — you can disconnect from the network and it keeps working. The secret or key you paste for verification is not stored either, not even in your browser, so it is gone when you close the tab.
Which algorithms can it verify?
HS256, HS384 and HS512 with a shared secret; RS256, RS384 and RS512; PS256, PS384 and PS512; ES256, ES384 and ES512; and EdDSA with Ed25519 keys. Verification uses the Web Crypto built into your browser, so ES256K and Ed448, which it does not implement, are decoded but not verified.
What key formats does it accept?
For HMAC, the secret as plain text, Base64 or hex, or a JWK of type oct. For the others, a PEM public key (SPKI or PKCS#1), an X.509 certificate, a PEM private key in PKCS#8, PKCS#1 or SEC1 form, a single JWK or a JWKS. With a JWKS, the key whose kid matches the token’s header is used; without a kid, every key of the right type is tried.
Why does a token decode when its signature is invalid?
Because the header and payload are only Base64url-encoded, not encrypted: anyone holding the token can read them. The signature is what proves who issued it and that it was not changed, and only a check against the right key says anything about that. Never trust claims from a token your server has not verified.
Can it decrypt encrypted tokens (JWE)?
Not yet. A five-part token is recognised as a JWE and its header — the key-management and content-encryption algorithms — is decoded, but the claims are inside the ciphertext and need the recipient’s private key to read.
Is it really free?
Yes, with no account and no usage limit. The site is funded by ads placed around the tool, never inside your working area.