Dev Tool

JWT Token Decoder & Debugger — Free Online, No Login

Paste any JWT token to decode it — header, payload, claims, and expiry all laid out clearly. Nothing leaves your browser.

AllOmnitools Editorial Team

Decode Token

Tip: press Ctrl+Enter to decode instantly

How to decode a JWT token online

Paste your token into the box and hit Decode. The tool splits it into the three parts — header, payload, signature — and formats each as readable JSON. The header tells you the algorithm used. The payload has all the claims: who the user is, when it expires, what roles they have. The signature is shown as-is since verifying it requires your server's secret key.

What's actually inside a JWT

A JWT looks like three base64url strings joined by dots: header.payload.signature. That's it. The "encoding" makes it look cryptic but there's no encryption — paste the first two parts into any base64 decoder and you get plain JSON straight away.

The header typically just says what algorithm signed it (HS256, RS256, etc). The payload is where the actual data lives — usually sub (the user ID), iat (when it was issued), exp (when it expires), and whatever custom claims the server added. The signature is the only part that proves the token hasn't been tampered with, and verifying that needs the server's key — this tool can't do that.

Common claims and what they mean

Claim Meaning Type
subSubject — usually the user IDRegistered
issIssuer — who created the tokenRegistered
audAudience — who the token is forRegistered
expExpiry — Unix timestamp when token stops being validRegistered
iatIssued at — Unix timestamp when token was createdRegistered
nbfNot before — token isn't valid until this timeRegistered

Why your token might be rejected even though it looks fine

  • Expired — the exp timestamp is in the past. Check it here and you'll see exactly when it expired.
  • Wrong audience — your server checks aud matches the expected value, and it doesn't
  • Clock skew — server and client clocks differ by more than the tolerance (usually a few seconds)
  • Tampered payload — someone changed a claim and the signature no longer matches
  • Wrong algorithm — server expects RS256 but token was signed with HS256

Complete Developer Toolkit

JWT decoding sits at the center of API authentication debugging. After decoding a token, use our JSON formatter to pretty-print and validate the decoded header and payload — JWT claims like iss, sub, exp, and aud are standard JSON objects. Our Base64 encoder lets you manually encode or decode any individual JWT segment — JWTs are three Base64url-encoded parts separated by dots. Our API response simulator generates mock API responses containing JWT tokens so you can test your frontend authentication flow without a live auth server.

When debugging JWT-protected API calls, our URL encoder safely encodes token strings for use in query parameters or Authorization headers. The regex tester helps you write patterns to extract JWT tokens from log files or HTTP headers. Our UUID generator creates the jti claim values used to uniquely identify tokens and prevent replay attacks. For checking SSL certificates on the servers issuing your JWTs, our SSL expiry checker verifies your HTTPS is valid. The diff checker is handy for comparing two JWT payloads side by side to spot claim differences between token versions.

How to Use This Tool

  1. 1 Paste your JWT token into the input field.
  2. 2 Hit Decode JWT — or just press Ctrl+Enter.
  3. 3 Check the status badge to see if the token is still valid or has expired.
  4. 4 Read through the Header and Payload panels. Copy either one with the copy button.

FAQ

Paste the token here and hit Decode. The header and payload are base64url-decoded and formatted as JSON automatically. You'll see all the claims laid out clearly within a second.