Paste a JWT token above to decode its header and payload
A JSON Web Token (JWT) is an open standard for securely transmitting information as a self-contained JSON object. Each JWT is composed of three Base64URL-encoded parts separated by dots: header.payload.signature. The header specifies the token type and hashing algorithm; the payload contains claims (user data, roles, expiration, etc.); and the signature proves the token wasn’t tampered with by the issuer. Unlike encryption, JWTs are signed, not encrypted—the payload is readable but cryptographically verified. This makes them ideal for stateless authentication, API authorization, and information exchange between parties.
Decoding means extracting and reading the data from the header and payload. Verifying means checking the signature to ensure the token was issued by a trusted authority and has not been tampered with. This decoder tool performs decoding only —it does not verify the signature. Never trust a JWT’s contents without signature verification on the server side. An attacker could create a fake JWT with false claims; signature verification is the only way to confirm legitimacy.
This tool decodes JWTs locally in your browser and does not verify the signature. Decoding alone cannot prove a token is legitimate—only the server that issued it can verify its authenticity using the signing key. Never paste production JWTs or tokens containing sensitive information that you don’t fully control. Always verify JWTs on the server before trusting their claims for authentication or authorization decisions.
Technically JWTs can be transmitted over HTTP, but it is never recommended. Always use HTTPS to prevent man-in-the-middle attacks. An attacker on an unencrypted connection could intercept and steal the JWT, then impersonate the user.
No. JWTs are signed, not encrypted. The payload is Base64URL-encoded and readable to anyone with the token, but it is not encrypted. If you need to hide data in a JWT, use encryption (like JWE—JSON Web Encryption) in addition to signing. Passwords should never be stored or transmitted in JWTs.
The server should reject the token and require a new one (typically issued by a refresh token flow). An expired JWT is still readable to anyone who decodes it, but a properly implemented server will refuse to accept it for authentication or authorization. Always verify the exp claim on the server side.
For more information on JWTs, see the official specification: RFC 7519