100% Client-Side WASMZero Remote NetworkVerified Spec

JWT Decoder

Interactive Studio

Decode a JSON Web Token's header and payload — entirely in your browser, without verifying the signature. Instant feedback with zero server storage.

Loading tool…

About JWT Decoder

A JSON Web Token is three base64url-encoded segments joined by dots: a header describing the signing algorithm and token type, a payload carrying the actual claims (like a user ID or expiration time), and a signature that ties the two together. This decoder splits the token on its dots, base64url-decodes the header and payload segments, and pretty-prints each as JSON — it does not touch the signature segment at all.

That last point matters more than it sounds: decoding a JWT and verifying a JWT are entirely different operations. Anyone can decode a JWT's header and payload without any secret, because base64url is an encoding, not encryption — the claims inside are readable by design, not confidential. Verifying that a token is authentic and hasn't been tampered with requires re-computing the signature with the issuer's secret or public key and comparing it to the signature segment, which this tool intentionally does not do, since that key is something only the issuing server should hold.

This is useful for debugging an auth flow — checking what claims and expiration a token actually carries, confirming a backend is issuing the fields you expect, or inspecting a token pasted from browser devtools — but it should never be treated as proof that a token is valid or unmodified.

How to use JWT Decoder

  1. Paste the full token, three parts joined by dots.
  2. The header and payload are decoded and pretty-printed.
  3. Check claims such as sub, iat and exp. Expiry is shown as a date.

Worked examples

Input: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkFkYSIsImV4cCI6MTg5MzQ1NjAwMH0

Result: Header {"alg":"HS256","typ":"JWT"}, payload {"sub":"1234","name":"Ada","exp":1893456000}, where exp is 1 January 2030 UTC. This example has no signature part.

Background

A JWT has three base64url-encoded parts: header, payload and signature. Base64url is an encoding, not encryption, so anyone holding a token can read its claims.

This tool only decodes. It does not verify the signature, so a decoded token is not proof that the token is genuine. Signature verification must happen on your server with the right secret or public key. Tokens are decoded in your browser, but avoid pasting live production tokens into any tool you do not trust.

Common mistakes

  • Assuming a token is valid because it decodes. Decoding does not check the signature.
  • Putting secrets in the payload. It is readable by anyone.
  • Reading exp in milliseconds. JWT time claims are in seconds.

Frequently Asked Questions

Does this verify the signature?
No — this only decodes the header and payload. Signature verification requires the secret or public key and isn't performed.
Is my token sent anywhere?
No — decoding happens entirely in your browser using base64url decoding.
If anyone can decode a JWT, is it safe to put sensitive data in the payload?
No — the payload is only encoded, not encrypted, so anyone who obtains the token can read its claims. Never put passwords, secrets, or other confidential data directly in a JWT payload.
Why does decoding fail on a token that looks correct?
The most common cause is that the string isn't a JWT at all, or has been truncated or had characters altered — a valid JWT must have exactly three dot-separated segments where the first two decode to valid JSON.

Fast, local-first developer micro-tools with zero tracking or latency.

Browse All Tools
Local-First Architecture: Toolium parses payloads exclusively in browser memory. Zero network telemetry.
⌘C Copy⌘K Palette