JWT Debugger

Decode and inspect JWT tokens

What is JWT Debugger?

JWT (JSON Web Token) is an open standard (RFC 7519) for securely transmitting information between parties as a JSON object. JWTs are commonly used for authentication and authorization in web applications. A JWT consists of three parts: a header (specifying the token type and algorithm), a payload (containing claims or user data), and a signature (used to verify the token's authenticity). Each part is Base64-encoded and separated by dots.

How to Use

  1. Paste your JWT token in the input field above.
  2. Click 'Decode' to parse the token into its three components.
  3. Review the decoded header to see the token type and signing algorithm.
  4. Review the decoded payload to see the claims and data embedded in the token.
  5. The signature section shows the raw signature - it cannot be decoded without the secret.
  6. Use 'Load Sample' to see an example JWT structure.

Why Use This Tool?

Quickly inspect JWT contents without manual Base64 decoding
Verify token structure and identify invalid or malformed tokens
Debug authentication issues by examining token claims
Understand token expiration dates and user information
Learn JWT structure by examining sample tokens
All decoding happens in your browser - tokens with sensitive data are safe

Tips & Best Practices

  • JWTs contain three parts separated by dots: header.payload.signature
  • The header typically shows the algorithm (alg) and token type (typ)
  • Common payload claims include: sub (subject), iat (issued at), exp (expiration)
  • Never share real JWTs containing sensitive authentication data
  • JWTs are encoded, not encrypted - anyone can decode the header and payload
  • The signature can only be verified with the secret key used to create it

Frequently Asked Questions

What information is in a JWT header?

The JWT header (also called JOSE header) typically contains two fields: 'alg' specifying the signing algorithm (like HS256 for HMAC SHA-256 or RS256 for RSA), and 'typ' indicating the token type (usually 'JWT'). Additional fields may include 'kid' (key ID) for key identification.

What are common JWT payload claims?

Standard registered claims include: iss (issuer), sub (subject/user ID), aud (audience), exp (expiration time), nbf (not valid before), iat (issued at time), and jti (JWT ID). Custom claims can include any data like user roles, permissions, or profile information.

Why can't the signature be decoded?

The signature is a cryptographic hash created using the header, payload, and a secret key. Unlike encoding (which is reversible), cryptographic signatures cannot be reversed without the secret. This is intentional - the signature proves the token was created by someone who knows the secret, ensuring authenticity.

Are JWTs secure?

JWTs are encoded (Base64) but NOT encrypted. Anyone can decode and read the header and payload. The security comes from the signature, which prevents tampering if you have the secret. For sensitive data, consider encrypting payload claims or using JWE (JSON Web Encryption) instead.

How do I check if a JWT is expired?

Look for the 'exp' (expiration) claim in the payload. It's a Unix timestamp (seconds since epoch). Compare it with the current time. If current time > exp, the token is expired. Our Timestamp Converter can help convert Unix timestamps to readable dates.

What's the difference between JWT and JWE?

JWT (JSON Web Token) provides integrity through signatures - the data can be read but not tampered with. JWE (JSON Web Encryption) encrypts the content, making it unreadable without the decryption key. Use JWT for authentication tokens, JWE when you need to hide the payload contents.

Related Tools