Tools Tokens
JWT Decoder & Verifier
Decode, edit, verify and re-sign JSON Web Tokens with any algorithm.
🔒 Runs in your browser. Nothing is uploaded.How to use it
- Paste a token over the sample one. The sample was issued 5 minutes ago and expires the moment it loads, so you can see how an expired token looks. "Load example" brings it back with fresh times.
- Read the decoded header and payload; the token is coloured to match. exp, iat and nbf are shown as dates, with a warning if the token has expired or isn’t valid yet.
- Paste the secret (HS algorithms) or the public key as PEM or JWK (RS, ES, PS, EdDSA) to verify the signature.
- Edit the header or payload to try out a change. The token keeps its old signature and is marked invalid.
- Paste the secret or private key and click Re-sign to get a valid token for your edits. For RS, PS, ES and EdDSA, "Generate key pair" makes a fresh test key pair for you.
Questions
Is it safe to paste a production token or key here?
Everything runs in your browser and the page’s security policy blocks it from sending your data anywhere. Tokens and keys are never saved, not even in your browser. Still, treat a live token like a password: prefer test tokens, and rotate any secret you have pasted somewhere you don’t control.
Why does my edited token say "Signature invalid: modified"?
A JWT’s signature covers its header and payload, so changing either one breaks it. Any app will reject the edited token until you re-sign it with the right secret or private key.
Does verification check the expiry date?
No. Verify checks only the signature. The exp, nbf and iat dates are shown next to it so you can see whether a server would also reject the token as expired or not yet valid.
What are the alg "none" and key-confusion warnings?
alg "none" means the token is unsigned, so a server that accepts it lets anyone forge tokens. Key confusion happens when a token is switched from RS256 to HS256 and signed with the server’s public key as the secret; a server that doesn’t pin the algorithm accepts it. Both are classic attacks worth testing against your own servers.
Which key formats are supported?
Secrets as plain text or Base64. Public keys as PEM (SPKI), X.509 certificates or JWK; private keys as PEM (PKCS#8) or JWK. Convert an older "BEGIN RSA PRIVATE KEY" file with openssl pkcs8 -topk8 -nocrypt -in key.pem.
Are generated key pairs safe to use in production?
They are made with your browser’s Web Crypto API and never leave the page, but they exist only to try out signing. Generate production keys with your own tooling and keep the private key out of any web page.