Skip to content

JWT Decoder, Generator & Verifier

Inspect, sign, and verify JSON Web Tokens. Decode JWT headers and payloads without a key, generate signed tokens with HS256/HS384/HS512, and verify signatures — all in your browser. Nothing is sent to any server.

All operations run entirely in your browser. Your secret key is never transmitted.

JWT Structure

A JWT is three Base64url-encoded parts separated by dots:

eyJhbGci….eyJzdWIi….SflKxwRJ…
PartColorContains
HeaderRedAlgorithm (alg), token type (typ)
PayloadPurpleClaims: iss, sub, aud, exp, iat, nbf, jti and custom fields
SignatureCyanHMAC or RSA signature — verifies authenticity

Standard Claims

ClaimNameDescription
issIssuerWho issued the token (e.g. your auth server URL)
subSubjectWho the token is about (usually the user ID)
audAudienceWho the token is intended for
expExpirationUnix timestamp after which the token is invalid
nbfNot BeforeUnix timestamp before which the token is not yet valid
iatIssued AtUnix timestamp when the token was issued
jtiJWT IDUnique identifier for the token (prevents replay attacks)

Supported Algorithms

  • HS256 (HMAC SHA-256) — The most common algorithm. Uses a shared secret that both issuer and verifier must know.
  • HS384 (HMAC SHA-384) — Same as HS256 but with a 384-bit hash for higher security margin.
  • HS512 (HMAC SHA-512) — Highest-security HMAC option; use when extra key strength is needed.

RS256, ES256, and other asymmetric algorithms are not yet supported — they require a public/private key pair.

Security Notes

  • Never use alg: none. An unsigned JWT can be forged by anyone.
  • Always validate exp. A valid signature does not mean the token is current — always reject expired tokens server-side.
  • Keep secrets strong. HS256 keys should be at least 256 bits (32 bytes) of random entropy. Avoid predictable strings.
  • Store tokens securely. Prefer HttpOnly cookies overlocalStorage to protect against XSS.

Frequently Asked Questions

Is JWT decoding the same as verification?

No. Decoding simply reads the Base64url-encoded data — anyone can decode a JWT without the secret. Verification checks the signature using the secret key, confirming the token has not been tampered with.

Can I decode a JWT from any provider?

Yes. The Decode tab reads any well-formed JWT regardless of how it was issued. It will show the header, payload, and whether the token is expired — but it cannot verify the signature without the secret.

Is my secret key safe?

All signing and verification happens locally using the browser's SubtleCrypto API. Nothing is ever sent to a server.