JWKS Generator
Generate a fresh signing key and the matching JWKS (JSON Web Key Set) entirely in your browser. Pick an algorithm, and the tool creates an RSA or EC key pair with the Web Crypto API, derives a stable kid from the RFC 7638 thumbprint, and gives you two things: the public JWKS to publish at your /.well-known/jwks.json endpoint, and the private JWK to keep secret and sign tokens with. The private key is generated locally and never leaves the page.
How to use the JWKS Generator
Choose a key type. RSA with RS256 is the most widely supported and the safe default for OIDC and most JWT libraries; EC keys (ES256/384/512) are smaller and faster if your verifier supports them; PS256 is RSA-PSS, a more modern RSA padding. Click Generate key and the tool produces a brand-new key pair locally.
Copy the public JWKS and serve it at your /.well-known/jwks.json (or your identity provider's keys endpoint) so verifiers can fetch the public key by its kid. Keep the private JWK secret — load it into your signing service to mint tokens. Both keys share the same kid, computed as the RFC 7638 thumbprint, so a verifier can match a token's header to the right key. Generate a new key whenever you rotate.
What is a JWKS
A JSON Web Key Set (JWKS) is a JSON document containing a list of public keys, each expressed as a JSON Web Key (JWK). It is the standard way an issuer publishes the keys used to verify its signed tokens. An OpenID Connect provider, for example, exposes a JWKS at a well-known URL; when a relying party receives a JWT, it reads the kid from the token header, looks up the matching key in the JWKS, and verifies the signature with it. This indirection is what makes key rotation possible without redeploying every verifier.
Each JWK is an object describing one key. The shared members are kty (key type — RSA or EC), use (sig for signing), alg (the algorithm, such as RS256 or ES256), and kid (the key identifier). An RSA public key adds the modulus n and exponent e; an EC public key adds the curve crv and coordinates x and y. A private JWK carries the additional secret parameters (d, and for RSA the prime factors), which must never be published.
The kid here is derived from the RFC 7638 JWK thumbprint: the key's required members are serialised as canonical JSON with sorted keys and no whitespace, hashed with SHA-256, and base64url-encoded. Because the thumbprint is computed deterministically from the public key material, the same key always produces the same kid, and two different keys effectively never collide — which makes it an ideal, stable identifier for rotation and caching.
Common use cases
- Standing up an OIDC or JWT issuer. Generate the signing key and the JWKS to publish at your keys endpoint.
- Key rotation. Mint a new key with a fresh kid and add it to your JWKS alongside the old one during a rollover.
- Local development and testing. Create throwaway keys to sign and verify tokens without a full identity provider.
- Learning the JWK format. See exactly how RSA and EC keys are represented and how the kid thumbprint is built.