Whitespace changes the signature
Even pretty-printing the same JSON changes the bytes you sign—tiny spacing tweaks create a totally different signature.
"typ": "JWT" will be set automatically if missing.Tip: Press Ctrl/Cmd + Enter to create a JWT. You can also drop a .json file into the payload box.
This encoder assembles a JWT by JSON-encoding your header and payload, Base64URL-encoding both, and signing the byte string header.payload (when applicable) using the Web Crypto API.
Everything runs locally in your browser—no uploads. For highly sensitive secrets or keys, consider using the offline bundle or a dedicated local environment.
Even pretty-printing the same JSON changes the bytes you sign—tiny spacing tweaks create a totally different signature.
alg none omits the signature entirely. It’s handy for debugging but shouldn’t leave local/dev environments.
HS256 means everyone verifying also knows the secret; RS256 lets many services verify with just the public key.
Many teams mint access tokens for 5–15 minutes and rely on refresh tokens to keep sessions alive.
A kid header points verifiers to the right key in a JWK set—without it, they may brute-try every candidate.