When you'd use this
Debugging authentication on staging, reproducing a 401 reported by QA, spinning up a fresh token after a key rotation, or confirming that a received token was signed with a particular secret.
Two modes
- Sign — Provide extra header fields, the payload, a secret, and
an algorithm. The token comes out immediately. The header's
algandtypare filled in automatically. - Verify — Paste a token and a secret, and the recomputed signature is compared with the one in the token. Header and payload are shown alongside.
Supported algorithms
HS256 · HS384 · HS512 (HMAC), handled directly by the Web Crypto API. No external library is used. Asymmetric algorithms like RS256 and ES256 are intentionally omitted — PEM key parsing and import work add bundle and UI cost while the search demand is overwhelmingly HS-family.
alg: none is the unsecured JWT defined in RFC 7519 §6.1. Sign mode
will produce one for debugging or learning, but verify mode
unconditionally rejects alg=none tokens. Several libraries have
historically accepted them by mistake (the "alg=none attack"); this
tool blocks the bypass explicitly.
Secrets stay on the page
Sign and verify both run in the browser, so secrets and payloads never leave it. Production keys can still leak through screenshots or browser memory — keep this for staging or debugging keys, and follow your org's policy for production material.
When this isn't the right tool
- Asymmetric algorithms (RS256, ES256, EdDSA) — not supported.
Use a server library like
joseorjsonwebtoken. - Production key handling — discouraged. Rotate and store keys via HSM or a dedicated secret management system (KMS).
- JWE encryption — only JWS (signed) is covered. JWE encrypted tokens are out of scope.
Secrets stay on the page
HMAC sign and verify both run through the Web Crypto API. Secrets and payloads never leave the browser. RFC 7519 compliant — `alg: none` tokens are explicitly rejected during verification (alg=none attack guard).