JWT Decoder — Inspect JSON Web Tokens
Decode and inspect JSON Web Tokens instantly. View header, payload claims, expiration status, and signature — all client-side.
Paste JWT Token
About JWT Decoder
JSON Web Tokens (JWTs) are the backbone of modern authentication — used in OAuth 2.0, OpenID Connect, SSO, API authorization, and session management across virtually every web platform. Our JWT Decoder lets you instantly inspect any JWT by splitting it into its three parts: header (algorithm and type), payload (claims like user ID, roles, expiration), and signature. All decoding happens entirely in your browser — your tokens never leave your device, making it safe to inspect even production tokens.
How to Use JWT Decoder
Paste Your JWT
Copy a JWT from your browser DevTools, API response, authorization header, or log file and paste it into the input field. The tool accepts the full token string (three dot-separated base64url segments).
Inspect Header and Payload
The decoder instantly splits the token and displays the header (algorithm, type) and payload (all claims) as formatted JSON. Timestamps like exp and iat are shown as both Unix values and human-readable dates.
Check Expiration Status
The tool automatically evaluates the exp claim against the current time and shows whether the token is valid, expired, or has no expiration set — helping you diagnose auth issues instantly.
Common Use Cases
Debug Authentication Issues
Inspect JWT claims to debug login failures, missing permissions, incorrect roles, and expired sessions. See exactly what claims your auth server is issuing and compare them against what your application expects.
Verify Token Claims Before Integration
When integrating with a new API or identity provider (Auth0, Okta, Firebase), decode their JWTs to verify that the expected claims (sub, iss, aud, roles, scopes) are present and correctly formatted.
Diagnose Token Expiration Problems
Quickly determine if a JWT has expired, when it was issued, and when it expires. Essential for debugging "401 Unauthorized" errors, token refresh issues, and clock skew problems between services.
API Development & Testing
During API development, inspect JWTs your server generates to verify that token creation, claim assignment, algorithm selection, and expiration settings are all configured correctly before deploying.
Security Auditing
Review JWTs in your system to check for security concerns: overly long expiration times, sensitive data in the payload, weak algorithms (none, HS256 when RS256 is expected), or missing audience claims.
Incident Response & Troubleshooting
During production incidents, quickly decode tokens from logs or error reports to understand the user context, permissions, and token state at the time of the issue.
Why Use Our JWT Decoder?
Instant Decoding - Paste a JWT and see header, payload, and signature broken down immediately with syntax-highlighted JSON
100% Private - Your tokens never leave your browser; all decoding is pure client-side base64 parsing with zero network requests
Expiration Check - Automatically evaluates the exp claim and shows a clear valid/expired/no-expiration status indicator
Universal Compatibility - Works with JWTs from any provider: Auth0, Firebase, AWS Cognito, Okta, Keycloak, Supabase, or custom auth servers
Human-Readable Timestamps - Converts Unix timestamps (exp, iat, nbf) to readable date-time strings so you do not have to calculate them manually
Developer-Friendly - Color-coded sections, formatted JSON output, and one-click copy make it fast to use during debugging sessions
Key Features
Decode header, payload, and signature sections
Expiration status indicator (valid / expired / no-expiration)
Issued-at and not-before timestamp display
Algorithm detection (HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, EdDSA)
Pretty-printed JSON output with syntax highlighting
Human-readable timestamp conversion for exp, iat, and nbf claims
All processing in the browser — tokens never leave your device
Works with any JWT provider (Auth0, Firebase, Cognito, Okta, Keycloak, custom)
One-click copy of decoded header or payload
Color-coded token sections for easy visual parsing
100% Client-Side Processing
Your data never leaves your browser
All processing happens in your browser using JavaScript. Your data is never sent to our servers or any third party. Safe for sensitive data, API keys, and production configs.
Frequently Asked Questions
Quick answers to common questions about jwt decoder
A JWT is a compact, URL-safe token format defined by RFC 7519 for securely transmitting information between parties. It consists of three base64url-encoded parts separated by dots: the Header (specifies the signing algorithm and token type), the Payload (contains claims — data like user ID, roles, and expiration time), and the Signature (cryptographic proof that the token has not been tampered with). JWTs are the standard for authentication and authorization in modern web applications and APIs.
Yes, decoding a JWT is completely safe. Decoding simply means base64url-decoding the header and payload — it does not require or expose the secret key used for signing. The JWT payload is not encrypted, just encoded, so anyone with the token can read the claims. Our tool runs entirely in your browser with zero server requests, so your tokens are never transmitted anywhere. That said, never share JWTs publicly or in URLs, as they contain user data and grant access until they expire.
This tool decodes and displays JWTs but does not perform signature verification. Verifying a signature requires the secret key (for HMAC algorithms like HS256) or the public key (for asymmetric algorithms like RS256 or ES256). For server-side signature verification, use libraries like jsonwebtoken (Node.js), PyJWT (Python), jwt-go (Go), or nimbus-jose-jwt (Java).
Standard registered claims include: "sub" (subject — typically the user ID), "iss" (issuer — the service that created the token), "aud" (audience — the intended recipient service), "exp" (expiration time as a Unix timestamp), "iat" (issued at — when the token was created), "nbf" (not before — the token is invalid before this time), and "jti" (JWT ID — a unique identifier for the token). Applications commonly add custom claims like "role", "email", "permissions", "org_id", and "scope".
The "exp" claim contains a Unix timestamp (seconds since January 1, 1970 UTC). If this timestamp is in the past relative to your current system clock, the token is expired. Common causes include: the token lifetime being too short (e.g., 5 minutes), clock skew between the issuing server and your machine, the token being issued a long time ago without refresh, or timezone misconfiguration. Compare the "iat" and "exp" claims to understand the intended token lifetime.
HS256 (HMAC-SHA256) uses a shared secret key for both signing and verification — simpler but requires the secret to be shared with all verifiers. RS256 (RSA-SHA256) uses an asymmetric key pair: the private key signs and the public key verifies — ideal for distributed systems where verifiers should not have the signing key. ES256 (ECDSA-SHA256) also uses asymmetric keys but with elliptic curve cryptography, producing smaller signatures than RSA with comparable security.
Yes. JWTs follow the RFC 7519 standard, so this tool works with tokens from any provider: Auth0, Firebase Authentication, AWS Cognito, Okta, Azure AD, Google Identity, Keycloak, Supabase, and any custom JWT implementation. The decoded header and payload structure will vary based on the provider, but the three-part format is universal.
Avoid putting sensitive information in JWT payloads because they are only base64-encoded, not encrypted. Never include passwords, credit card numbers, API secret keys, or personally identifiable information (PII) beyond what is strictly necessary. Keep tokens lean — include only the claims needed for authorization decisions (user ID, roles, expiration). For sensitive data, use encrypted JWTs (JWE) or keep the data server-side and reference it by ID.
Common causes of invalid token errors: the string is not a valid JWT (it must have exactly three dot-separated segments), the base64url encoding is corrupted (often happens when tokens are truncated in logs or URLs), or extra whitespace and newline characters were included when pasting. Make sure you copy the complete token string including all three parts.
Learn More
{ }
JWT Security Best Practices
Learn essential JWT security practices: algorithm selection, token lifetime, claim validation, and common vulnerabilities to avoid.
< / >
Working with API JSON Responses
Best practices for handling JSON API responses, including authentication tokens and authorization headers.
Related JSON Tools
JSON Formatter
→
Format and prettify decoded JWT payload JSON
JSON Schema Validator
→
Validate JWT payload structure against an expected schema
JSON Tree Viewer
→
Explore decoded JWT payload as an interactive tree
JSONPath Query
→
Extract specific claims from decoded JWT payloads using JSONPath
JSON Diff
→
Compare two JWT payloads side by side to spot differences