How to Read and Debug JSON Web Tokens

Published 2026-05-28

Decode and inspect JSON Web Tokens privately in your browser. See header, payload, and expiration.

Try JWT Decoder free →

The problem

You're debugging an auth flow and need to see what's inside a JWT. The token is a long eyJ... string — three base64url-encoded parts separated by dots. You need to check the claims, see when it expires, verify the issuer.

The obvious move is to paste it into an online decoder. But JWTs often contain sensitive data — user IDs, email addresses, roles, permissions, session identifiers. Pasting that into someone else's server means sending your auth data to a third party. For a token that's literally your proof of identity, that's a bad trade.

How it works

  1. Paste your JWT into the input field — the full eyJhbG... string.
  2. See the decoded header — algorithm (HS256, RS256, etc.) and token type.
  3. Read the payload — all claims displayed as formatted JSON with standard claims labeled: issuer, subject, audience, expiration.
  4. Check expiration — the tool shows whether the token is valid or expired, with a human-readable countdown.
  5. Copy header or payload — one-click copy buttons for the decoded JSON.

Your data never leaves your browser. All processing happens locally.

Why I built it

I decode JWTs constantly — debugging OAuth flows, checking token expiration in API responses, verifying claims match what I expect. Every existing decoder either uploads the token to a server or is buried in ads. For something that handles auth data, I wanted a tool I'd trust with production tokens. This one never sends your data anywhere.

Tips and reference

JWTs use seven registered claims defined in RFC 7519. Here's what each one means:

ClaimNameDescription
issIssuerWho issued the token (e.g. your auth server URL)
subSubjectWho the token is about — usually a user ID
audAudienceIntended recipient — the API or service this token is for
expExpirationUnix timestamp when the token expires
nbfNot BeforeToken is not valid before this Unix timestamp
iatIssued AtWhen the token was created
jtiJWT IDUnique identifier to prevent token replay

Important: JWTs are signed, not encrypted. Anyone can read the payload — the signature only proves it hasn't been tampered with. Never put secrets in a JWT payload. And signature verification requires the secret or public key, which this tool doesn't have — it shows you the contents, not whether the signature is valid.


Built with vanilla HTML/JS. No frameworks, no backend, loads instantly.

Related tools

Joe — Software engineer with 20+ years of experience. Built ToolRack to provide fast, private tools without the bloat.