JWT Decoder - Decode & Validate JSON Web Tokens

A comprehensive JWT (JSON Web Token) decoder and validator for developers and security professionals. This free online tool helps you decode JWT tokens, inspect header and payload claims, verify token structure, check expiration times, and validate JWT signatures. Perfect for debugging and understanding JWT structure in real-time without installing any software or exposing sensitive tokens to third-party services.

Decode JWT Token

Paste your JWT token below to decode and analyze its contents. All decoding happens in your browser—tokens are never sent to any server.

What is a JWT (JSON Web Token)?

JWT (JSON Web Token) is an open standard (RFC 7519) that defines a compact and self-contained way to securely transmit information between parties as a JSON object. This information can be verified and trusted because it is digitally signed using a secret (HMAC algorithm) or a public/private key pair (RSA or ECDSA).

A JWT consists of three parts separated by dots (.): Header.Payload.Signature. The header typically contains the type of token (JWT) and the signing algorithm (HS256, RS256, etc.). The payload contains the claims—statements about an entity (typically the user) and additional metadata. The signature is used to verify that the sender of the JWT is who it says it is and to ensure the message wasn't changed along the way.

JWTs are commonly used for authentication and authorization in modern web applications, mobile apps, and microservices architectures. When a user logs in, the server generates a JWT and sends it to the client. The client stores it (typically in localStorage or a cookie) and includes it in the Authorization header for subsequent requests. The server can verify the token without querying a database, making JWTs stateless and highly scalable.

How to Decode a JWT Token

Decoding a JWT token reveals its header and payload contents, allowing you to inspect claims, expiration times, and other metadata. Here's how to decode JWTs:

This decoder performs all operations client-side in your browser using JavaScript. Your JWT tokens are never uploaded to any server, ensuring complete privacy and security for sensitive authentication tokens.

JWT Expiration Checker

JWT tokens commonly include an expiration claim (exp) that specifies when the token becomes invalid. This is a critical security feature that limits the window of opportunity for token misuse if a token is compromised. The expiration time is stored as a Unix timestamp (seconds since January 1, 1970 UTC).

Our JWT decoder automatically checks for the exp claim and compares it to the current time. If the token is expired, you'll see a clear indicator showing when it expired and how long ago. If the token is still valid, you'll see how much time remains until expiration. This helps you troubleshoot authentication failures caused by expired tokens—a common issue in development and production environments.

The tool also checks the nbf (not before) claim if present, which specifies when the token becomes valid. A token used before its nbf time should be rejected. Additionally, the iat (issued at) claim shows when the token was originally created, helping you understand token lifecycle and detect tokens that have been in use for unusually long periods.

Understanding JWT Claims

JWT claims are pieces of information asserted about a subject. Claims are name-value pairs encoded in the JWT payload. There are three types of claims:

When decoding JWTs, always validate that expected claims are present and have acceptable values. Missing or incorrect claims can indicate token tampering or misconfiguration.

JWT Security Best Practices

While JWTs are powerful and convenient, improper use can create security vulnerabilities. Follow these best practices:

Common JWT Use Cases

JWTs are versatile and widely adopted across modern web development:

Example JWT Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyNDI2MjJ9.4Adcj0vt2h-G8pKcL7v3X5_4N5z5h8_Kx5fZ8aQ7hJk

Frequently Asked Questions

Is it safe to decode JWTs with this tool?
Yes, this tool is completely safe because all JWT decoding happens locally in your browser using JavaScript. Your JWT tokens are never sent to any server or transmitted over the network. The entire decoding process executes client-side, ensuring that sensitive authentication tokens remain private and secure on your device. However, remember that JWTs are only encoded (Base64URL), not encrypted, so anyone with the token can decode it—signature verification is what provides security.
Can this tool verify JWT signatures?
No, this tool only decodes and displays JWT content—it does not verify signatures. Signature verification requires the secret key (for HMAC algorithms like HS256) or the public key (for RSA/ECDSA algorithms like RS256/ES256). Since we don't have access to your signing keys and all processing is client-side, signature verification isn't performed. Always verify JWT signatures in your backend application before trusting the token content.
What does "Token is expired" mean?
A JWT is considered expired when the current time is past the expiration time specified in the exp claim. The exp claim contains a Unix timestamp (seconds since January 1, 1970 UTC). When a token expires, it should no longer be accepted by servers for authentication or authorization, even if the signature is valid. If you're seeing authentication failures, check if your token is expired and request a new one from your authentication provider or use a refresh token to obtain a new access token.
Why does my JWT have three parts?
All JWTs follow the structure Header.Payload.Signature, with three parts separated by dots (.). The header contains metadata about the token type and signing algorithm. The payload contains the claims (data about the user or entity). The signature is created by encoding the header and payload, then signing them with a secret key or private key. This three-part structure allows the token to be compact, self-contained, and verifiable without requiring database lookups.
What's the difference between access tokens and refresh tokens?
Access tokens are short-lived JWTs (typically 15 minutes to 1 hour) used to access protected resources. Refresh tokens are long-lived tokens (days to months) used solely to obtain new access tokens without requiring the user to log in again. When an access token expires, the client sends the refresh token to the authentication server, which issues a new access token. This pattern balances security (short-lived access tokens limit exposure if compromised) with user experience (users don't need to constantly re-authenticate). Refresh tokens should be stored securely and transmitted only to the token endpoint.
Is this tool free to use?
Yes, this JWT decoder is completely free with no registration, limits, or hidden costs. You can decode unlimited JWT tokens for development, debugging, testing, or learning purposes. All processing happens locally in your browser, so there are no server costs or data collection. Bookmark this tool and use it whenever you need to inspect JWT tokens, verify claims, or troubleshoot authentication issues in your applications.