dev tools · vøiddo

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
3
parts decoded
6
alg types shown
0
server calls
0
storage
paste jwt token

                  

                  
Signature (raw Base64url)
The signature is binary data — it cannot be decoded without the secret key or public key. Use a server-side library to verify authenticity.

common uses

three moments where jwtdecode helps.

debug auth failures

paste the token from the Authorization header
See if exp has passed, check sub and roles claims, confirm iss matches your expected issuer — before writing a single line of code.

verify claim structure

paste a token from your staging environment
Check that your auth server is including the expected custom claims (tenant, permissions, plan) before wiring them up on the backend.

check token age

paste a token that “should still be valid”
jwtdecode shows iat as a human-readable date and computes time-to-expiry so you can confirm the issue time matches what your server logged.
also a cli

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.

faq

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.

comparison

jwtdecode vs jwt.io — privacy, analytics, and features compared

see comparison →

power user?

use this daily? tools.voiddo Pro · $9 one-time

supports 66 free tools · Pro license via Paddle · one flat price, no subscription