How to use it
- Choose the algorithm (HS256, RS256, ES256, EdDSA…).
- Write the payload in JSON; the iat and exp buttons set the issued-at and expiry times.
- Enter the secret (HS) or the private key as PEM or JWK.
- Click “Sign token,” then open it in the decoder or copy it.
Which algorithm should you use?
| Algorithm | Key | When |
|---|---|---|
| HS256/384/512 | shared secret | the same server issues and verifies |
| RS256/384/512 | RSA key pair | widespread; the OAuth/OpenID default |
| PS256/384/512 | RSA key pair | the modern (PSS) take on RS |
| ES256/384/512 | EC key pair (P-256/384/521) | short signatures, fast |
| EdDSA | Ed25519 key pair | the most modern: fast and secure |
For HS, RFC 7518 says the secret must be at least as long as the hash: 32 bytes for HS256. We warn you if it's shorter.
Key formats
Private keys can be PEM (-----BEGIN PRIVATE KEY-----, plus the older RSA PRIVATE KEY and EC PRIVATE KEY forms) or JWK. Make a test key locally with OpenSSL:
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out key.pem
openssl genpkey -algorithm ed25519 -out key.pem
We tested the engine against the RFC 7515 and RFC 8037 example tokens and against Node.js's own crypto: all 13 algorithms match in both directions.
Security
- The key never goes into the shareable link, and we don't store it (not even in localStorage).
- A JWT payload is not secret: anyone who gets the token can read it. Don't put passwords or card numbers in it.
- Only use production keys when you must; make a separate key pair for testing.
Check the finished token in the JWT decoder with the public key.
Frequently asked questions
How do I create a JWT?
Enter the header, payload and key; the encoder Base64URL-encodes them and signs the result.
Is my key sent anywhere?
No. Signing happens in your browser's WebCrypto engine.
What key format does RS256 need?
PEM (PRIVATE KEY or RSA PRIVATE KEY) or JWK.
Does EdDSA work?
Yes. Ed25519 is supported in current Chrome, Firefox and Safari.