JWK / JWK Set Generator
Generate a JSON Web Key (JWK, RFC 7517) and a JWK Set ({"keys":[...]}) for OAuth 2.0 / OIDC. Supports EC (P-256/P-384/P-521/secp256k1), Ed25519 (OKP), and symmetric oct keys, with optional kid, use, and alg. Generated in your browser and never transmitted.
Input
Optional. Tells consumers what the key is for.
JWA identifier written into the JWK. Blank uses the key's canonical alg (ES256 for P-256, EdDSA for Ed25519, HS256 for oct). It must match the key type — an Ed25519 key cannot carry alg RS256.
The kid lets clients pick the right key from a JWK Set.
Output
Safe to publish: every private member is stripped. This is the only output that should ever leave your server.
Contains the private key ("d"/"k"). Treat it like a password — never publish or commit it.
Guides
Generate a JSON Web Key (JWK) and a ready-to-publish JWK Set (JWKS) in your browser. A JWK is the JSON representation of a cryptographic key defined by RFC 7517; a JWK Set is simply {"keys":[ ... ]}, the format OAuth 2.0 and OpenID Connect servers expose at /.well-known/jwks.json so clients can verify signed JWTs.
This tool produces real keys using audited elliptic-curve and hashing primitives, encodes every field as unpadded base64url exactly as the spec requires, and gives you both the bare JWK and the JWK Set wrapper in one step.
How to use it
- Pick a key type.
- EC — Elliptic Curve keys for ECDSA. Choose the curve: P-256 (
ES256, the JWT default), P-384 (ES384), P-521 (ES512), or secp256k1 (ES256K, used by Bitcoin/Ethereum). - OKP — an Ed25519 key for modern, fast EdDSA signatures.
- oct — a symmetric key (for HMAC such as
HS256, or AES) of a configurable bit length.
- EC — Elliptic Curve keys for ECDSA. Choose the curve: P-256 (
- Set the optional metadata. Add a
use(sigfor signing,encfor encryption), analgidentifier, and akid(key ID). - Click Generate JWK. Copy or download the JWK and the JWK Set.
What is a kid and which strategy should I use?
The kid lets a client select the correct key from a set. The recommended option is the RFC 7638 thumbprint — a SHA-256 hash of the key's canonical public members. It is stable, collision-resistant, and derived purely from the key material, so the same key always yields the same kid. You can also enter a custom kid (e.g. prod-2026-01) or omit it entirely.
Should I include the private key?
For EC and OKP keys, the private component is the d member. Turn Include private key off to strip d and produce a public JWK that is safe to publish in your JWKS. Keep the private version on your signing server only. Symmetric oct keys have no public/private split — the k member is the secret, so never publish an oct key.
What's the difference between a JWK and a JWK Set?
A JWK describes one key. A JWK Set wraps one or more keys as {"keys":[...]}. Publishing a set (rather than a lone key) lets you rotate keys smoothly: add the new key alongside the old one, let clients pick by kid, then retire the old key.
Which algorithm should I choose?
ES256 (EC P-256) is the most widely supported asymmetric JWT algorithm. EdDSA (Ed25519) is faster and produces compact signatures where supported. HS256 (a 256-bit oct key) is simplest but requires both parties to share the same secret. RSA algorithms (RS256/PS256) are intentionally not offered here — use an RSA-specific generator if you need them.
Privacy
Every key is generated entirely in your browser and is never uploaded, logged, or transmitted anywhere. Generation uses your device's cryptographically secure random number generator; nothing leaves the page. That said, treat any output containing a d or k member like a password: don't paste private keys into untrusted services or commit them to source control.