Skip to content
SmaftyTools

JWT Decoder

Decode JWT tokens online — view the header, payload and expiry instantly. Fully client-side, your token never leaves the browser.

About JWT Decoder

The JWT Decoder is a free jwt decoder and jwt token viewer that splits a JSON Web Token into its header and payload and pretty-prints both as readable JSON, so you can inspect claims, signing algorithms and expiry times while debugging authentication flows. It works as a client-side jwt debugger — paste a token, read every claim, done.

JWTs show up everywhere in modern auth: OAuth access tokens, API session tokens, single sign-on assertions, and custom application tokens. When a login flow breaks, an API call gets a 401, or a token expires earlier than expected, the fastest way to understand why is to actually look inside the token, and decoding base64url by hand is tedious. This tool does that instantly, and also decodes well-known time claims (exp, iat, nbf) into human-readable dates, flagging an expired token with a clear warning instead of leaving you to convert Unix time in your head. Custom claims specific to your application — roles, permissions, tenant IDs — are decoded and displayed just like standard claims, so you can confirm an access token actually carries the scopes your API expects before chasing a bug elsewhere in the stack.

It correctly handles the URL-safe Base64 alphabet that JWTs use (- and _ instead of + and /) and tolerates missing padding, both common causes of 'invalid token' errors in naive decoders. A leading 'Bearer ' prefix, often copied along with the token from an Authorization header, is stripped automatically.

Importantly, this tool decodes only — it does not and cannot verify the signature, since that requires the server's signing secret or private key. A token can be decoded and read perfectly while still being invalid, expired or tampered with; decoding tells you what a token claims, not whether those claims are trustworthy. Everything happens locally, since JWTs often carry live session credentials.

How to Use the JWT Decoder

  1. Paste your JWT (a 'Bearer ' prefix is stripped automatically).
  2. Read the decoded header and payload as formatted JSON.
  3. Check the time claims panel for issue and expiry dates.

Features

  • Instant header + payload decoding with pretty-printed JSON
  • Human-readable exp / iat / nbf dates with expiry warning
  • Handles URL-safe Base64 and missing padding
  • 100% client-side — tokens never leave your device

Examples

Decoding a standard JWT

Input

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Output

Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"1234567890","name":"John Doe","iat":1516239022}
iat → Jan 18, 2018, 01:30:22 UTC

Spotting an expired token

Input

{"exp": 1000000000}

Output

Expired — exp claim decodes to September 9, 2001, 01:46:40 UTC (in the past)

Frequently Asked Questions

Does this tool verify the JWT signature?

No. It decodes the header and payload so you can inspect them. Signature verification requires the signing secret or public key and should happen server-side.

Is it safe to paste a real token here?

The token is processed entirely in your browser and never transmitted. Still, treat live production tokens like passwords — avoid pasting them on shared machines.

Why does the tool say my token is invalid?

Usually because the string was truncated when copied, is missing one of its three dot-separated segments, or has a 'Bearer ' prefix pasted mid-token. Make sure you've copied the complete header.payload.signature string.

Is the JWT Decoder free?

Yes, the JWT Decoder is completely free with no usage limits. No signup, no account and no installation required.

Is my data safe?

Yes. All processing happens locally in your browser using JavaScript — nothing you type is uploaded or stored on our servers.