Decode any JSON Web Token instantly. No data leaves your browser.
A JSON Web Token (JWT) is a compact, URL-safe means of representing claims between two parties. Defined by the open standard RFC 7519, JWTs are widely used for authentication, authorization, and information exchange in modern web applications and APIs. A JWT consists of three parts separated by dots (.) — a header, a payload, and a signature — each encoded in Base64URL format.
When a user authenticates successfully, the server generates a JWT containing claims about the user (such as their ID, role, or permissions) along with metadata like issuance and expiration times. The token is signed using a secret key (HMAC) or a private key (RSA/ECDSA) to ensure integrity. The client stores this token (typically in localStorage, sessionStorage, or an HTTP-only cookie) and includes it in subsequent API requests via the Authorization: Bearer <token> header.
The header contains metadata about the token, including the signing algorithm (alg) and token type (typ). The payload carries the claims — registered claims like iss (issuer), sub (subject), exp (expiration), and custom claims defined by the application. The signature is computed by combining the encoded header and payload with a secret and signing algorithm, preventing tampering.
JWTs are ubiquitous in single sign-on (SSO) systems, OAuth 2.0 and OpenID Connect flows, REST API authentication, microservice-to-microservice communication, and stateless session management. Major identity providers including Auth0, Okta, Firebase, and Azure AD all rely on JWTs for secure token exchange.
While JWTs are signed to prevent tampering, the payload is not encrypted by default — anyone with the token can Base64-decode and read its contents. Never store sensitive data (passwords, credit card numbers) in a JWT payload. Always validate the signature on the server side, enforce exp and nbf checks, use HTTPS, and rotate signing keys regularly. For sensitive claims, use JWE (JSON Web Encryption) in addition to signing.
A JWT decoder tool like this one helps developers debug authentication flows, inspect tokens during development, verify claim values, check expiration times, and understand the structure of JWTs from different providers. Since decoding happens entirely in your browser, no token data is ever sent to a server — keeping your tokens and their contents private.
The JWT specification defines several registered claim names: iss (Issuer) identifies the principal that issued the JWT; sub (Subject) identifies the principal that is the subject of the JWT; aud (Audience) identifies the recipients for whom the JWT is intended; exp (Expiration Time) identifies the time after which the JWT must not be accepted; nbf (Not Before) identifies the time before which the JWT must not be accepted; iat (Issued At) identifies the time at which the JWT was issued; and jti (JWT ID) provides a unique identifier for the JWT.