JWT Decoder
Free web tool: JWT Decoder
About JWT Decoder
The JWT Decoder is a free online tool for inspecting and decoding JSON Web Tokens (JWT). Paste any JWT string and instantly view its decoded header, payload, and signature components. The tool parses the Base64URL-encoded header to reveal the signing algorithm (HS256, RS256, ES256, etc.) and token type, then decodes the payload to display all registered and custom claims in readable JSON format.
This tool is essential for API authentication debugging, OAuth 2.0 / OpenID Connect troubleshooting, and security auditing. Developers working with REST APIs, microservices architectures, or single sign-on (SSO) systems use JWT decoders daily to verify token contents, check expiration timestamps (exp, iat, nbf), and inspect issuer and audience claims before they reach production.
All decoding happens entirely in your browser using client-side JavaScript. Your JWT tokens are never transmitted to any server, making this tool safe for inspecting tokens that contain sensitive user data, permissions, or session information.
Key Features
- Base64URL decoding of JWT header and payload with full Unicode support
- Automatic separation and display of all three JWT parts: header, payload, and signature
- Token expiration detection with human-readable timestamp conversion for exp, iat, and nbf claims
- Signing algorithm identification (HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256)
- Structured JSON display of all standard claims (iss, sub, aud, exp, nbf, iat, jti) and custom claims
- One-click copy for decoded header, payload, and raw signature values
- Invalid token detection with descriptive error messages for malformed or corrupted JWTs
- Real-time expired token warning with localized date/time display
Frequently Asked Questions
What is a JSON Web Token (JWT)?
A JSON Web Token (JWT) is an open standard (RFC 7519) for securely transmitting information between parties as a compact, URL-safe JSON object. A JWT consists of three Base64URL-encoded parts separated by dots: a header (specifying the algorithm and token type), a payload (containing claims about the user or session), and a signature (used to verify the token has not been tampered with). JWTs are widely used for authentication in REST APIs, OAuth 2.0 flows, and single sign-on systems.
How does JWT authentication work?
In a typical JWT authentication flow, a user logs in with credentials, and the server generates a signed JWT containing user identity and permission claims. This token is returned to the client (usually stored in localStorage or an HTTP-only cookie) and sent with subsequent API requests in the Authorization header as a Bearer token. The server verifies the signature and reads the claims without needing to query a database, making JWT-based authentication stateless and scalable.
What is the difference between JWS and JWE?
JWS (JSON Web Signature) and JWE (JSON Web Encryption) are two serialization formats defined by the JOSE specification. JWS tokens are signed but not encrypted, meaning anyone can read the payload by decoding the Base64URL, but they cannot modify it without invalidating the signature. JWE tokens are encrypted, so the payload contents are hidden from anyone without the decryption key. Most commonly used JWTs are JWS tokens. This decoder works with JWS tokens, which is the standard format for authentication tokens.
How can I tell if a JWT token is expired?
The JWT payload contains an "exp" (expiration time) claim as a Unix timestamp (seconds since January 1, 1970). This decoder automatically detects the exp claim, converts it to a human-readable date and time, and displays a warning if the token has expired. You can also check the "iat" (issued at) and "nbf" (not before) timestamps to understand the full validity window of the token.
Is it safe to decode JWT tokens in the browser?
Yes. Decoding a JWT only reveals the information already contained in the token — it does not verify the signature or grant any access. Since JWS payloads are merely Base64URL-encoded (not encrypted), anyone who possesses the token can decode it. This tool performs all decoding locally in your browser with no server communication, so your tokens are never exposed to third parties. However, you should never share your raw JWT tokens publicly, as they may contain sensitive claims.
What are the standard JWT claims?
The JWT specification (RFC 7519) defines seven registered claims: "iss" (issuer — who created the token), "sub" (subject — the user or entity the token represents), "aud" (audience — the intended recipient), "exp" (expiration time), "nbf" (not before — when the token becomes valid), "iat" (issued at — when the token was created), and "jti" (JWT ID — a unique identifier for the token). Applications typically add custom claims for roles, permissions, email, or other user-specific data.
What signing algorithms do JWTs use?
JWTs support multiple signing algorithms specified in the header's "alg" field. HMAC algorithms (HS256, HS384, HS512) use a shared secret key for both signing and verification. RSA algorithms (RS256, RS384, RS512) use a private key to sign and a public key to verify, making them suitable for distributed systems. ECDSA algorithms (ES256, ES384, ES512) provide equivalent security to RSA with shorter key lengths. The "none" algorithm (unsigned) exists but should never be accepted in production systems due to security vulnerabilities.
Why does my JWT have three dots?
The three dots in a JWT separate its three Base64URL-encoded components: header.payload.signature. The header specifies the token type and signing algorithm. The payload contains the claims (data). The signature is created by signing the encoded header and payload with a secret key or private key. This three-part structure allows any party to decode and read the header and payload, while only parties with the correct key can verify the signature or create new valid tokens.