JWT Decoder, Generator & Verifier
Inspect, sign, and verify JSON Web Tokens. Decode JWT headers and payloads without a key, generate signed tokens with HS256/HS384/HS512, and verify signatures — all in your browser. Nothing is sent to any server.
JWT Structure
A JWT is three Base64url-encoded parts separated by dots:
| Part | Color | Contains |
|---|---|---|
| Header | Red | Algorithm (alg), token type (typ) |
| Payload | Purple | Claims: iss, sub, aud, exp, iat, nbf, jti and custom fields |
| Signature | Cyan | HMAC or RSA signature — verifies authenticity |
Standard Claims
| Claim | Name | Description |
|---|---|---|
| iss | Issuer | Who issued the token (e.g. your auth server URL) |
| sub | Subject | Who the token is about (usually the user ID) |
| aud | Audience | Who the token is intended for |
| exp | Expiration | Unix timestamp after which the token is invalid |
| nbf | Not Before | Unix timestamp before which the token is not yet valid |
| iat | Issued At | Unix timestamp when the token was issued |
| jti | JWT ID | Unique identifier for the token (prevents replay attacks) |
Supported Algorithms
- HS256 (HMAC SHA-256) — The most common algorithm. Uses a shared secret that both issuer and verifier must know.
- HS384 (HMAC SHA-384) — Same as HS256 but with a 384-bit hash for higher security margin.
- HS512 (HMAC SHA-512) — Highest-security HMAC option; use when extra key strength is needed.
RS256, ES256, and other asymmetric algorithms are not yet supported — they require a public/private key pair.
Security Notes
- Never use
alg: none. An unsigned JWT can be forged by anyone. - Always validate
exp. A valid signature does not mean the token is current — always reject expired tokens server-side. - Keep secrets strong. HS256 keys should be at least 256 bits (32 bytes) of random entropy. Avoid predictable strings.
- Store tokens securely. Prefer
HttpOnlycookies overlocalStorageto protect against XSS.
Frequently Asked Questions
Is JWT decoding the same as verification?
No. Decoding simply reads the Base64url-encoded data — anyone can decode a JWT without the secret. Verification checks the signature using the secret key, confirming the token has not been tampered with.
Can I decode a JWT from any provider?
Yes. The Decode tab reads any well-formed JWT regardless of how it was issued. It will show the header, payload, and whether the token is expired — but it cannot verify the signature without the secret.
Is my secret key safe?
All signing and verification happens locally using the browser's SubtleCrypto API. Nothing is ever sent to a server.