JWT Token Decoder & Parser

JWT Token Decoder
Tools
JWT Token
Ready to decode JWT token
Decoded Token
Paste a JWT token to decode...

Hint: Paste your JWT token to decode and view its header, payload, and signature. The tool validates token structure and format.

Client-side decoding only

How It Works

  1. Step 1: Paste JWT token (JSON Web Token) in three-part format with header.payload.signature separated by dots, typically from Authorization headers or API responses.
  2. Step 2: The decoder splits token by dots, then base64url-decodes header and payload sections revealing JSON data without verifying signature (decode-only, not validate).
  3. Step 3: Parses decoded JSON extracting header fields (alg, typ), payload claims (sub, exp, iat, iss, aud), and displays signature for verification reference.
  4. Step 4: Shows decoded data with expiration status (expired/valid), timestamp conversion (exp, iat to human dates), and claim explanations for debugging authentication issues.

Manual vs Automated JWT Decoding

Feature Manual Decoding AI-Powered Decoder
Decoding Speed Manually base64url decode each section Instant three-part token decoding
Expiration Check Calculate Unix timestamp manually Auto-shows expired/valid status
Timestamp Conversion Convert exp/iat manually to dates Human-readable date/time display
Claim Explanation Look up JWT spec for each claim Built-in explanations for sub, iss, aud, etc.
JSON Formatting Raw JSON without formatting Pretty-printed JSON with syntax highlighting
Security Upload to third-party services 100% client-side, no token transmission

JWT Decoding Examples

Example: JWT Token Decoding

JWT Token Input
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3MzUwMDAwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Decoded Content Output
HEADER (Algorithm & Token Type):
{
  "alg": "HS256",
  "typ": "JWT"
}

Decoded Header Explanation:
  alg: HS256 (HMAC SHA-256)
    - Symmetric signing algorithm
    - Requires secret key for verification
    - Alternative: RS256 (RSA asymmetric)
  
  typ: JWT
    - Token type identifier
    - Standard value for JSON Web Tokens

---

PAYLOAD (Claims):
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022,
  "exp": 1735000000
}

Decoded Payload Explanation:
  sub: "1234567890" (Subject)
    - User identifier
    - Typically user ID or username
  
  name: "John Doe" (Custom Claim)
    - User's full name
    - Application-specific data
  
  iat: 1516239022 (Issued At)
    - Token creation time
    - Unix timestamp: Jan 18, 2018 01:30:22 UTC
    - Used for token age calculation
  
  exp: 1735000000 (Expiration)
    - Token expiry time
    - Unix timestamp: Dec 24, 2024 00:00:00 UTC
    - Status: VALID (not expired yet)

---

SIGNATURE (Verification Data):
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Signature Explanation:
  - Created by: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
  - Purpose: Verify token integrity
  - Cannot be decoded (one-way hash)
  - Requires secret key to verify
  - Prevents tampering with header/payload

Token Status:
  ✓ Valid Structure (3 parts separated by dots)
  ✓ Valid Base64URL encoding
  ✓ Valid JSON in header and payload
  ✓ Not Expired (exp > current time)
  ⚠️ Signature NOT verified (decode only)

Security Notes:
  - This tool DECODES but does NOT VERIFY
  - Signature verification requires secret key
  - Never trust decoded data without verification
  - Check expiration before using token
  - Validate issuer (iss) and audience (aud) claims

Use Cases:
  ✓ Debug authentication issues
  ✓ Inspect token claims
  ✓ Check token expiration
  ✓ Understand JWT structure
  ✓ Troubleshoot API authorization

Key Changes:

The decoder reveals JWT structure without cryptographic verification—decoding is reading base64url-encoded JSON, while verification requires the secret key to validate the signature. JWTs consist of three base64url-encoded parts: header (algorithm metadata), payload (claims/data), and signature (integrity proof). The header specifies signing algorithm—HS256 uses HMAC with SHA-256 requiring symmetric secret, RS256 uses RSA with public/private keys. The payload contains claims: registered claims (sub, exp, iat, iss, aud) defined by RFC 7519, and custom claims (name, role, email) defined by applications. The 'exp' claim (expiration) is critical—expired tokens should be rejected even if signature is valid. The 'iat' claim (issued at) enables token age limits. The signature prevents tampering—modifying header or payload invalidates the signature, detectable during verification. Base64url encoding (not standard base64) replaces + with -, / with _, and removes padding = for URL-safety. Developers use JWT decoders to debug authentication failures, inspect token claims without backend access, verify token expiration times, and understand why APIs reject tokens. The tool emphasizes that decoding ≠ verification—a decoded token may have valid JSON but invalid signature, making it untrustworthy. Production systems must verify signatures using libraries (jsonwebtoken for Node.js, PyJWT for Python) before trusting token data.

Frequently Asked Questions

How do I decode a JWT token?

Simply paste your JWT token (the long string starting with "eyJ") into the decoder input area. The tool automatically detects, validates, and decodes the token, displaying the header, payload, signature, and expiration status instantly.

Is the JWT decoder free?

Yes! The JWT decoder is completely free with unlimited use and no registration required. Decode as many tokens as you need without any restrictions or sign-up process.

Is it safe to decode JWT tokens online?

Absolutely! All decoding happens client-side in your browser using JavaScript. Your JWT tokens never leave your device, are not sent to any servers, and are not logged or stored anywhere. It's 100% private and secure.

What information can I see from a decoded JWT?

The decoder displays the complete token structure: Header (algorithm and token type), Payload (all claims including user data, roles, permissions), Signature (raw signature string), Issued time, Expiration time, and validity status showing if the token is expired or still valid.

How do I check if my JWT token is expired?

Paste your token into the decoder and it will automatically check the "exp" (expiration) claim against the current time. Expired tokens show a clear indicator with the exact expiration date and time, marked with . Valid tokens show .

What JWT algorithms are supported?

The decoder supports all standard JWT algorithms including HS256, HS384, HS512 (HMAC), RS256, RS384, RS512 (RSA), ES256, ES384, ES512 (ECDSA), PS256, PS384, PS512 (RSA-PSS), and more. The algorithm type is displayed in the decoded header.

Can I decode JWT tokens from Auth0, Firebase, or AWS Cognito?

Yes! The decoder works with JWT tokens from any authentication provider including Auth0, Firebase, AWS Cognito, Okta, Azure AD, Google OAuth, and custom JWT implementations. Any valid JWT token can be decoded regardless of issuer.

What does "Invalid JWT" mean?

"Invalid JWT" means the token format is incorrect. A valid JWT must have exactly 3 parts separated by dots (header.payload.signature), with each part being Base64URL encoded. Common issues include: incomplete tokens, extra characters, wrong encoding, or corrupted token strings.