JWT Token
Decoded
Enter a JWT token above to decode it
Decoding, verify, and sign all run in this browser. This page does not send the token, secret, or PEM to a server.
How to decode, verify, and generate a JWT
- 1
Paste and decode the token
Open the Decode tab and paste a JWT. The tool splits the three Base64URL segments and shows the header, payload, and signature. The exp claim is converted to ISO 8601. Decode does not prove the signature is valid. - 2
Verify HMAC (HS256, HS384, or HS512)
Open the Verify tab and paste the shared secret. The tool reads alg from the header and checks the HMAC with Web Crypto. A matching signature shows as verified. A wrong secret shows as failed. - 3
Verify RS256 with a PEM key
For RS256 tokens, paste an SPKI public key or a PKCS8 private key in PEM form. The tool imports the key in the browser and checks the RSA signature. Algorithm none always fails, even if a key is present. - 4
Generate a signed token
Open the Generate tab. HS256, HS384, and HS512 need an HMAC secret. RS256 needs a PKCS8 PEM private key, or use Create test RSA key pair. Open the result in Decode, then verify it with the same secret or public key.
Common Use Cases
Debugging Authentication Flows
Inspecting API Gateway Tokens
Creating test tokens
Rejecting unsigned tokens
Why use this JWT decoder?
JSON Web Tokens (JWTs) are the standard mechanism for transmitting identity and authorization data in modern web applications. Every time a user logs in through OAuth 2.0, OpenID Connect, or a custom authentication system, the server issues a JWT that the client attaches to subsequent requests. This page lets you paste any signed JWT and view its three parts: the header that specifies the signing algorithm, the payload that carries claims about the user, and the signature. Expiration displays as ISO 8601. Processing happens entirely in your browser, so tokens, secrets, and PEM keys are never transmitted over the network.
Decoding is not verification. A decoded payload can be read by anyone who has the token. A valid signature is the only proof that the issuer signed those bytes. Open the Verify tab and supply an HMAC secret for HS256, HS384, or HS512, or a PEM public key for RS256. Algorithm none always fails. Generate HMAC tokens, or sign RS256 with an imported PKCS8 private key, then inspect the result on Decode. Pair this page with the Base64 Encoder to inspect individual segments, the JSON Formatter for nested claims, or the Unix Timestamp Converter to cross-check date claims.
Whether you are a backend developer troubleshooting a microservices authorization chain, a frontend engineer verifying scopes after login, or a security auditor reviewing token policies, this page takes a raw token string to decoded claims and a real signature check without sending keys off the device.
How It Compares
Many JWT pages decode the header and payload and then label the token valid. That label is wrong until a key is checked. This page keeps decode honest: the signature stays unverified until you run Verify. Verify uses Web Crypto HMAC for HS256, HS384, and HS512, and Web Crypto RSASSA-PKCS1-v1_5 for RS256. Secrets and PEM keys stay in the browser.
Command-line tools can decode Base64URL and check HMAC, but they require extra steps for timestamps and RSA PEM import. This page does those steps in one view, with ISO 8601 expiration and a clear verified or failed result.