Developer Security

JWT Decoder

Paste a JSON Web Token to decode its header and payload, view standard claims and expiry, and see the algorithm -- all locally in your browser.

Decoding happens entirely in your browser -- the token is never sent to any server. This tool does not and cannot verify the signature (that requires the signing key), and it never asks you for one. Never paste production or live session tokens into any online tool, including this one.

What this tool does

The JWT Decoder splits a JSON Web Token into its three segments -- header, payload, and signature -- Base64URL-decodes the header and payload, and pretty-prints them as JSON. It also pulls out standard registered claims into a readable table, converting Unix timestamp claims like exp, iat, and nbf into human-readable dates and flagging whether the token has expired.

Why security and dev teams use it

JWTs are used everywhere in modern authentication and API authorization, and debugging login flows, expired sessions, or unexpected claims often means inspecting a token by hand. Rather than writing a quick script or trusting an unknown third-party site with a session token, this tool lets you inspect a JWT instantly and locally.

How it works

A JWT has the shape header.payload.signature, where the header and payload are JSON objects encoded with Base64URL (a URL-safe Base64 variant using - and _ instead of + and /, with padding stripped). This tool restores standard Base64 padding, decodes each segment, and parses the result as JSON. The signature is displayed as-is because verifying it would require the secret or public key used to sign the token -- something this tool never has access to.

Step by step

  1. 1Paste a JWT into the input box, or click Load sample token to see it in action.
  2. 2Review the decoded header for the signing algorithm and token type.
  3. 3Review the decoded payload and the standard claims table for issuer, subject, audience and timing.
  4. 4Check the expired/valid indicator based on the exp claim, if present.
  5. 5Copy any section you need with the copy buttons.

Common mistakes

  • Assuming a decodable JWT is a valid, trusted one -- decoding proves nothing about authenticity without signature verification.
  • Treating JWT contents as private -- the payload is plainly readable by anyone who has the token, since it's only encoded, not encrypted.
  • Pasting real production or session tokens into online decoders, exposing live credentials to unnecessary risk.
  • Confusing an expired token (exp claim in the past) with an invalid signature -- this tool only checks the former.

Security considerations

This tool never verifies signatures and never requests a signing key -- it is strictly a decoder for inspection and debugging. Because JWT payloads are visible to anyone holding the token, never place sensitive secrets (passwords, full card numbers, etc.) directly in claims. And because pasting a live token anywhere carries some risk if the token is still valid, prefer test or expired tokens when exploring a tool like this one.

Frequently asked questions

Does this tool verify the JWT signature?

No. Verifying a signature requires the secret key or public key used to sign the token, which this tool never asks for or has access to. It only decodes the header and payload so you can inspect their contents -- it cannot tell you whether the token is authentic or has been tampered with.

Is it safe to paste a production JWT here?

You should avoid it. JWTs often carry session identifiers or claims tied to real accounts, and even though decoding happens entirely in your browser, best practice is to only paste test tokens or tokens you generate yourself for debugging, never live production tokens.

Why does the payload show readable data -- isn't a JWT encrypted?

Standard JWTs (JWS) are signed, not encrypted. The header and payload are just Base64URL-encoded JSON, so anyone who intercepts a token can read its claims. Only encrypted JWTs (JWE) hide the payload contents, and this tool decodes the far more common signed format.

Why did decoding fail on my token?

A valid JWT needs exactly three dot-separated segments, and the first two must be valid Base64URL-encoded JSON. Extra whitespace, a copy-paste truncation, or a token that isn't actually a JWT (such as an opaque API key) will all produce a clear error instead of a result.