$ Decode JWT tokens safely
Inspect JWT header and payload locally. No token upload, no external API calls.
JWT token
Paste a JWT to decode its header and payload.
Decoded output
Paste a JWT token to see its contents.
Why this tool exists
Vultio JWT Decoder splits a JSON Web Token into its three parts and decodes the header and payload sections directly in your browser.
JWTs are base64url-encoded JSON objects. Decoding them reveals claims like user ID, roles, expiry time, and the signing algorithm — useful for debugging authentication flows without needing a backend.
That makes this tool valuable when login succeeds in one environment but fails in another, when an API says a token is expired, or when a role-based access check behaves differently than expected.
The key distinction is that decoding helps you inspect structure and claims, not prove trust. Seeing a payload is useful for debugging, but it does not verify the signature or guarantee the token was issued by the system you think it was.
Common use cases
Example input / output
Minimal token
Read expiry and issuer claims
Spot a role mismatch
Common errors
cause:The input is not a valid JWT. JWTs always have exactly three dot-separated segments.
fix:Ensure you copied the complete token including all three parts. Check for accidental truncation or line breaks.
cause:The first segment contains characters outside the base64url alphabet or is otherwise corrupted.
fix:Double-check that you copied the full, unmodified token. Avoid URL-decoding the token before pasting it here.
cause:The decoded bytes are not a JSON object, which suggests the token is malformed or uses an unusual encoding.
fix:Verify the token source. Standard JWTs always have JSON objects as header and payload.
cause:Decoding only reveals claims. The token may still be expired, signed with the wrong key, issued for the wrong audience, or rejected by server-side verification logic.
fix:After decoding, verify exp, nbf, aud, iss, and the signing/verification path in the actual auth stack rather than assuming a readable payload means a valid token.
cause:Any string that looks like a JWT can be decoded. Human-readable claims do not prove authenticity on their own.
fix:Treat decoded output as inspection data only. Use proper JWT verification on the server or trusted tooling when authenticity matters.
How developers use it in practice
When auth suddenly breaks, exp, iat, and nbf are often the fastest clues. A token can be perfectly structured and still rejected because a clock, lifetime, or refresh flow is wrong.
A side-by-side claim comparison often reveals missing audience values, different issuers, or altered role scopes much faster than reading auth middleware logs alone.
Showing the exact header and payload shape helps frontend, backend, and support teams align on what the token is supposed to contain without sharing signing secrets.
When not to use this tool
Limits and implementation notes
The browser can decode base64url JSON locally, but trust still depends on cryptographic verification in the real auth system.
Knowing that aud or scope exists is useful, but only your application documentation can tell you whether the values are correct for a specific route or action.
If a provider uses introspection endpoints, encrypted tokens, or custom envelope formats, decoding alone will not answer the whole debugging question.
Related guides
Standards & references
Related tools
Frequently asked questions
Does JWT Decoder verify signatures?
No. This tool decodes the JWT header and payload only. It does not validate the signature, expiry, or issuer. For security-critical verification, use a proper JWT library.
Is my JWT token sent to a server?
No. The token is decoded entirely in your browser using Base64 decoding. No token data is transmitted anywhere.
What claims can I inspect?
You can inspect all standard claims including iss (issuer), sub (subject), aud (audience), exp (expiry), iat (issued at), and any custom claims in the payload.
How do I know if my JWT is expired?
The exp claim is a Unix timestamp. Compare it to the current time to determine if the token has expired. The decoder shows the raw exp value you can check.
What JWT algorithms are supported?
The decoder reads any JWT regardless of algorithm (HS256, RS256, ES256, etc.) since it only decodes the header and payload, not verifies the signature.