How to Decode JWT Tokens Locally
JWT decoding is one of the fastest ways to understand what your app is sending to an API. A local JWT decoder helps you inspect the header, payload, and signature structure without exposing secrets to a third-party service.
What a JWT actually contains
A JWT is usually split into three base64url segments: header, payload, and signature. The header tells you which algorithm was used, while the payload often contains user identity, issuer, audience, scopes, and expiration details.
When authentication breaks, the problem is often visible in the token itself: the exp value is stale, the aud claim does not match, or the environment issued a token with a different issuer.
- Check alg, typ, iss, aud, sub, exp, iat, and nbf
- Compare staging and production tokens side by side
- Spot malformed base64url segments before debugging the backend
How to decode a JWT locally
- Paste the token into a browser-based JWT decoder.
- Read the header first to confirm the expected algorithm.
- Inspect the payload for claims, timestamps, roles, and permissions.
- Copy the decoded JSON into your bug report or pull request.
Security checks that matter
- Never paste production secrets into an unknown website.
- Use local decoding for troubleshooting access tokens and ID tokens.
- Verify expiration, audience, and issuer before blaming the API.
- Treat decoded claims as sensitive when they include email or account data.
Conclusion
Local JWT decoding keeps authentication debugging private, fast, and repeatable. It is the safest way to inspect claims, diagnose expiration issues, and understand why a token works in one environment but fails in another.
Recommended FullConvert tools
Use these related tools when you want to apply the workflow from this guide directly in your browser.
FAQ
Can I decode a JWT without verifying the signature?
Yes. Decoding is for inspection only. It helps you read claims, but it does not prove the token is authentic or unmodified.