JWT Decoder

Decode a JSON Web Token's header and payload instantly in your browser, with issue/expiry times shown as human-readable dates. This is a decoder, not a verifier — it never checks the signature against a key.

Encoded Token
Header
Payload
Signature
Not verified — shown as-is, never checked against a key.

Decode, Not Verify

Reads the header and payload only. Signature verification is intentionally out of scope, so it's never claimed.

Human-Readable Timestamps

iat, exp, and nbf claims are shown as real dates, with expired tokens flagged clearly.

Local Processing

Your token never leaves your browser. Privacy first decoding.

How to Decode a JWT

  1. Paste the token — straight from an Authorization header is fine, a leading "Bearer " prefix is stripped automatically.
  2. Click Decode.
  3. Read the three panes: Header (algorithm and type), Payload (the claims), and Signature (shown as-is, never verified).
  4. Check the timestamp bar above the panes — iat, nbf, and exp claims are converted to human-readable dates, with expired tokens flagged.

Example: Reading a Token’s Claims

Input — JWT (header.payload.signature)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTg0MTIiLCJuYW1lIjoiUHJpeWEgU2hhcm1hIiwiaWF0IjoxNzUxMzU1ODQwLCJleHAiOjE3ODI4OTE4NDB9.k7VuVYnMxY0aBQCsLZgLnc0mPd0BFO1AlG3KxlXITEo

Payload pane shows

{
  "sub": "user-8412",
  "name": "Priya Sharma",
  "iat": 1751355840,
  "exp": 1782891840
}

This sample’s exp claim resolves to July 1, 2026 — already in the past, so the decoder flags the token as Expired. That’s the single most common answer to "why did my API start returning 401?"

What the three segments actually are

A JWT is three Base64url-encoded segments joined by dots: a JSON header naming the signing algorithm, a JSON payload carrying the claims, and a binary signature over the first two. The first two are merely encoded, not encrypted — anyone holding the token can read them, which is exactly what this tool does.

Decoding is not verification

Reading a token tells you what it claims, not whether those claims are trustworthy — that requires checking the signature against the issuer’s key, which deliberately isn’t done here (your tokens never leave the browser, and no key material is ever requested). Never treat a merely-decoded token as authenticated input on a server.

Frequently Asked Questions

Related Tools