JWT Debugger

Decode and inspect JSON Web Tokens (JWT), check HS256/384/512 signatures, or create and sign a test token with your own secret.

About this tool

A JWT debugger for the token sitting in your Authorization header or a login response, and a generator for test tokens. In Decode mode, paste a token and the header and payload appear as readable JSON immediately, so you can check the claims (sub, exp, iat and others) and the signing algorithm; add a secret to check an HS256, HS384 or HS512 signature. In Encode mode, edit a header and payload, enter a test secret and the tool signs a token with HMAC. Everything runs in your browser, so tokens and secrets are not sent to a server.

How to use it

  1. Decode: paste a JWT into the input box. The header and payload are decoded and displayed immediately as readable JSON.
  2. Review the claims (like sub, exp, and iat) in the payload.
  3. Optional: type the secret under "Check the signature" to see whether an HS256, HS384 or HS512 token was signed with it. Tick "Secret is Base64-encoded" if your secret is stored that way.
  4. Encode: switch to Encode, edit the header and payload JSON, pick HS256, HS384 or HS512, and enter a test secret.
  5. Use "Add iat / exp (+1h)" to stamp the current time and a one-hour expiry, then Copy the signed token.

FAQ

Can this tool verify the token's signature?

For HS256, HS384 and HS512 tokens, yes: enter the shared secret under "Check the signature" and it reports valid or invalid. Tokens signed with RS256, ES256 and similar algorithms need the issuer's public key, which this tool does not handle, so it tells you it cannot check them. Decoding itself never needs a secret.

Is decoding a JWT the same as it being valid?

No. Decoding just reads the Base64URL-encoded claims. It does not confirm the token has not been tampered with or that it has not expired. Only signature verification (and your server checking exp, aud and iss) confirms a token is genuine.

Is it safe to paste a real production JWT or secret here?

Everything happens client-side and nothing is sent anywhere, but a real production secret should never be pasted into any web page. Use a test secret or a token from a test environment, and rotate any secret you have pasted somewhere you do not control.

How does the encoder sign a token?

It writes the header and payload as compact JSON, Base64URL-encodes each, joins them with a dot, and computes an HMAC of that string with your secret using SHA-256, SHA-384 or SHA-512 (HS256, HS384, HS512). The Base64URL-encoded result becomes the third part. The browser's built-in Web Crypto API does the HMAC, so no library is involved.

Why can I not create an "alg": "none" token?

A token with alg none has no signature, and a server that accepts it will accept anything an attacker types. This tool refuses to create one so a test token cannot be mistaken for a safe pattern. Choose HS256, HS384 or HS512 and a test secret instead.

What is the difference between HS256 and RS256?

HS256 (and HS384, HS512) uses one shared secret both to sign and to verify, so every service that checks the token can also forge one. RS256 uses a private key to sign and a public key to verify, so verifiers cannot mint tokens. This tool signs the HS family only, because RS and ES signing need a private key you should not paste into a web page.

How should I set the expiry claim?

exp is a Unix timestamp in seconds, not milliseconds. "Add iat / exp (+1h)" sets iat to now and exp to one hour later. Keep access-token lifetimes short and check exp on the server; the decoder shows the number as-is, so convert it with the Timestamp Converter if you want to read it.

How is this different from jwt.io?

Both decode a JWT, check HMAC signatures and create HS256 tokens. This tool runs entirely in your browser without loading a third-party page, and it signs the HMAC algorithms only; jwt.io also handles RSA and ECDSA keys. For a side-by-side comparison, see the JWT.io alternative post.

Related tools

Guides & comparisons

← All tools · Web & API · Blog · Cheat sheets · FAQ