jwtdecode
Paste any JWT and see the header, payload, and all claims as formatted JSON. Expiry detection, human-readable timestamps, algorithm name — no server, no storage, no signup.
npm i -g @v0idd0/jwtdecode
The signature is binary data — it cannot be decoded without the secret key or public key. Use a server-side library to verify authenticity.
three moments where jwtdecode helps.
debug auth failures
verify claim structure
check token age
use it in scripts, pipes, and pre-commit.
npm global install
$ npm i -g @v0idd0/jwtdecode
node 14+ on linux / macos / windows. zero runtime deps.
decode from stdin
$ echo "$TOKEN" | jwtdecode
Prints formatted header and payload JSON to stdout. Exit 0 on success, 1 on invalid token.
pipe to jq
$ echo "$TOKEN" | jwtdecode --payload | jq '.exp'
--header or --payload outputs only that part as raw JSON — pipe-friendly for CI scripts.
common questions.
Is it safe to paste a JWT here?
Yes — jwtdecode runs entirely in your browser. No data is sent anywhere. The token never leaves your device. Refresh the page and it is gone.
Can jwtdecode verify the signature?
No. The header and payload are just Base64url-encoded JSON, so they decode trivially. The signature is binary and requires the HMAC secret or RSA public key to verify. Use a server-side library (jsonwebtoken, PyJWT, etc.) for signature verification.
What do exp, iat, and nbf mean?
exp (expires at) — Unix timestamp after which the token is invalid. iat (issued at) — when the token was created. nbf (not before) — the token is invalid before this time. jwtdecode shows all three as human-readable dates and computes whether the token is currently valid.
What is the difference between HS256 and RS256?
HS256 uses a single shared secret (HMAC-SHA256) — whoever verifies needs the same secret. RS256 uses an RSA key pair — the private key signs, the public key verifies. RS256 is preferred for APIs consumed by third parties because they never need the private key.
Can I decode without a library?
Yes. Split the token string on ., take parts 0 and 1, replace - with + and _ with /, pad to a multiple of 4 with =, then base64-decode and parse as JSON. That is exactly what this page does.
other dev tools by vøiddo.
comparison
jwtdecode vs jwt.io — privacy, analytics, and features compared
power user?
use this daily? tools.voiddo Pro · $9 one-time
supports 66 free tools · Pro license via Paddle · one flat price, no subscription