ECDSA & Ed25519 Key Generator
Generate a modern elliptic-curve key pair, Ed25519 or ECDSA P-256, P-384 or P-521, in your browser, in OpenSSH, PEM and JWK formats. The private key never leaves your device.
ECDSA & Ed25519 Key Generator
Keys are generated by your browser's Web Crypto API and never leave this page. Nothing is uploaded or stored. For long-lived server keys you can also run ssh-keygen on the machine that will use them.
Generated by your browser's Web Crypto API. Keys never leave this page.
Scratchpad auto-saved
How it works — in four simple steps
No signup and nothing to install — it all runs in your browser.
Pick a curve
Ed25519 for SSH, P-256 for TLS/JWT.
Add a comment
It labels the SSH public key.
Generate
Elliptic-curve keys are near-instant.
Copy or download
Then protect the private key.
Ed25519 is the best default for new SSH keys.
Features
Ed25519 and three NIST curves
Ed25519, P-256, P-384 and P-521.
OpenSSH formats
Public key line and openssh-key-v1 private key.
PEM and SEC1
PKCS#8, SPKI and SEC1 (BEGIN EC PRIVATE KEY) with curve parameters.
JWK
For JOSE/JWT libraries (ES256, ES384, ES512, EdDSA).
Fingerprint
SHA-256 fingerprint as ssh-keygen shows it.
Sign and verify
Confirm the key pair works.
About the ECDSA & Ed25519 Key Generator
Elliptic-curve keys give the security of large RSA keys in a fraction of the size. A 256-bit curve key is roughly as strong as 3072-bit RSA, with faster signing and much shorter public keys. Ed25519 is the recommended choice for new SSH keys: it's fast, has small 32-byte keys, and its design avoids the random-number pitfalls that have broken some ECDSA implementations. ECDSA P-256 is the NIST curve used widely in TLS certificates, WebAuthn and JWT (ES256), with P-384 and P-521 for higher security levels.
The key is generated by your browser's Web Crypto API, the same native cryptography used for HTTPS. Ed25519 support depends on the browser, and current Chrome, Edge, Firefox and Safari have it. You get the OpenSSH public key (ssh-ed25519 AAAA… or ecdsa-sha2-nistp256 AAAA…) for authorized_keys and GitHub, the OpenSSH private key for ssh, and PKCS#8, SEC1 (BEGIN EC PRIVATE KEY, with the curve included so OpenSSL can read it), SPKI and JWK versions for code and JWT libraries, plus the SHA-256 fingerprint ssh shows.
The private key isn't passphrase-protected. Add a passphrase with ssh-keygen -p -f id_ed25519 and keep the file at chmod 600. A quick sign-and-verify test confirms the pair works. ECDSA signatures are randomised, so each signature differs, while Ed25519 signatures are deterministic.