Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including jwk-to-pem with all npm packages installed. Try it out:

var jwkToPem = require("jwk-to-pem")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

jwk-to-pem v2.0.3

Convert a JSON Web Key to a PEM


Build Status Coverage Status

Convert a json web key to a PEM for use by OpenSSL or crytpo.


npm install jwk-to-pem --save


var jwkToPem = require('jwk-to-pem'),
    jwt = require('jsonwebtoken');

var jwk = { kty: 'EC', crv: 'P-256', x: '...', y: '...' },
    pem = jwkToPem(jwk);

jwt.verify(token, pem);


key typesupport level
RSAall RSA keys
ECP-256, P-384, and P-521 curves


jwkToPem(Object jwk[, Object options]) -> String

The first parameter should be an Object representing the jwk, it may be public or private. By default, either of the two will be made into a public PEM. The call will throw if the input jwk is malformed or does not represent a valid key.

Option: private Boolean (false)

You may optionally specify that you would like a private PEM. This can be done by passing true to the private option. The call will throw if the necessary private parameters are not available.


  1. Fork the repository. Committing directly against this repository is highly discouraged.

  2. Make your modifications in a branch, updating and writing new unit tests as necessary in the spec directory.

  3. Ensure that all tests pass with npm test

  4. rebase your changes against master. Do not merge.

  5. Submit a pull request to this repository. Wait for tests to run and someone to chime in.

Code Style

This repository is configured with EditorConfig and ESLint rules.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free