JWT Decoder
Paste a JWT to decode its header, payload and signature. Claims are extracted and readable dates shown for timestamps. Verify HS256, HS384 and HS512 signatures with your secret.
What a JWT Actually Contains
Every JWT is three Base64URL-encoded strings joined by dots. The header declares the algorithm and token type. The payload carries the claims — the actual data, including standard fields like expiry time, issuer, and subject, plus any custom data your application adds. The signature is a cryptographic hash of the header and payload, which allows the receiver to verify the token was not tampered with.
Decoding is not the same as verifying. Anyone can decode a JWT without any key — the payload is just Base64URL encoding, not encryption. Verification requires the secret or public key to confirm the signature is valid. Use the Signature Verification panel to check HS256, HS384 and HS512 signatures.
Standard Claims
- exp — expiration time. Unix timestamp after which the token must not be accepted.
- iat — issued at. When the token was created.
- nbf — not before. The token must not be accepted before this time.
- iss — issuer. Identifies who issued the token (e.g. your auth server URL).
- sub — subject. Usually the user ID the token is issued for.
- aud — audience. The intended recipients of the token.
- jti — JWT ID. A unique identifier for this specific token, used to prevent replay attacks.
Signature Verification
The verification panel supports HMAC-based algorithms — HS256, HS384 and HS512. Enter the secret that was used to sign the token and click Verify. The algorithm is read automatically from the token header. If the token was signed with an asymmetric algorithm (RS256, ES256, etc.) signature verification requires the public key, which is beyond the scope of a browser tool.