RSA & SSH Key Pair Generator

Generate RSA, ECDSA, or Ed25519 key pairs in PEM and OpenSSH formats — entirely in your browser.

Handling the private key:

  • Generation uses the browser's Web Crypto API and nothing is transmitted — but a key generated in a browser tab has still been in a browser tab.
  • For a real SSH key protecting real infrastructure, generate it with ssh-keygen on the machine that will use it, where it can be written straight to disk with a passphrase.
  • This tool is well suited to test fixtures, JWT signing keys for a development environment, and understanding key formats.
  • Private keys here are unencrypted PKCS#8 — there is no passphrase on them.

Your Data Never Leaves Your Device

Every tool runs entirely in your browser. Nothing you type is uploaded, stored, or logged on our servers.

100% Client-Side

The Key Pair Generator produces RSA, ECDSA, and Ed25519 key pairs using the browser's Web Crypto API, and exports them in the forms different tools expect: PKCS#8 PEM for the private key, SPKI PEM for the public key, the single-line OpenSSH format that goes in authorized_keys, and JWK for JOSE libraries.

The OpenSSH output is built from the exported key material rather than converted by a library, following RFC 4251's wire format — including the detail that trips most hand-rolled implementations: integers are signed, so a modulus whose leading byte has the high bit set needs a 0x00 prefix, and omitting it produces a key OpenSSH silently rejects. A word of caution on use: keys generated in a browser tab suit test fixtures and development signing keys, but for a real SSH key guarding real infrastructure, run ssh-keygen on the machine that will hold it.

FAQ

Prefer ssh-keygen on the machine that will use the key, so the private key is written straight to disk with a passphrase and never exists in a browser. This tool is a good fit for test fixtures, development signing keys, and learning the formats.

PEM is the BEGIN/END block used by TLS, JWT libraries, and most SDKs. The OpenSSH line is the single-line ssh-rsa AAAA... form that goes in authorized_keys. They encode the same public key in different wire formats.

Ed25519 for SSH where supported — short keys, fast, no parameter choices to get wrong. ECDSA P-256 where you need broad compatibility with smaller keys. RSA 2048 or higher when something in the chain only speaks RSA, which is still common for JWT and older systems.

Yes for most purposes today, and it is the common default. Use 3072 or 4096 where a compliance regime requires it or the key has a long lifetime, bearing in mind larger keys make every signature and handshake slower.

The exported private keys are unencrypted PKCS#8, because Web Crypto does not implement passphrase-based PKCS#8 encryption. If you need an encrypted private key, generate it with ssh-keygen or openssl instead.

No. Generation and export happen entirely in your browser via the Web Crypto API, and the key never leaves the page.