JWT Decoder

Decode any JSON Web Token instantly — header, payload, and timestamps.

Ad placeholder (leaderboard)

JWT decoder

This tool splits any JSON Web Token into its header, payload claims, and raw signature, decoding the readable parts so you can inspect exactly what a token contains. It’s for developers debugging auth flows, checking why a token is rejected, or confirming which claims and expiry an identity provider issued — all without a network request.

How it works

A JWT is three Base64URL-encoded segments joined by dots. The tool splits on ., then decodes the first two segments with a Base64URL-safe atob (it first swaps -/_ back to +// and restores padding), and runs JSON.parse on the result to show the header and payload as key-value pairs. The signature is shown raw. When “Decode timestamps” is on, numeric time claims (exp, iat, nbf, auth_time, updated_at) are read as Unix seconds and converted with new Date(value * 1000) to a readable UTC string. An exp earlier than the current time is highlighted in red as expired.

Example

The token below (HS256, demo only):

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJleHAiOjE3MDAwMDAwMDB9.sig

decodes to a header of {"alg":"HS256","typ":"JWT"} and a payload of {"sub":"123","exp":1700000000}. With timestamps on, exp: 1700000000 shows as 2023-11-14 22:13:20 UTC and is flagged expired.

What the tool does and does not do

ActionSupported
Decode header (alg, typ)Yes
Decode payload claimsYes
Convert exp / iat / nbf to datesYes
Flag expired tokensYes
Verify the signatureNo (needs the server-side secret/public key)

Decoding happens entirely in your browser, so this is safe to use with real tokens — your token never leaves your device.

Ad placeholder (rectangle)