SSH Key Generator
Generate an Ed25519, RSA, or ECDSA SSH key pair in the browser, get the OpenSSH public key and SHA-256/MD5 fingerprints, inspect an existing public key, or build an equivalent ssh-keygen command. Runs locally, no upload.
"Generated locally" reduces network exposure, but doesn't make a page immune to a compromised browser, a malicious extension, or altered JavaScript. This tool also offers a ssh-keygen command builder for exactly that case.
Configure the key
Ed25519 is the default for a new key; use RSA when you need compatibility.
Ed25519 has no configurable size. The browser will confirm support when you generate.
This only changes the instructions after generation, not the key.
This tool generates OpenSSH without a passphrase. For a protected key, generate it in a terminal or add a passphrase afterward with `ssh-keygen -p`.
Why not ask for a passphrase here? OpenSSH's encrypted private key format uses a specific KDF; implementing that correctly needs more than the Web Crypto API offers natively. Rather than pretend a generic encrypted export is the same as a protected OpenSSH identity, this tool is upfront about the limitation.
Key pair
Copy the public key. Treat the private one as a secret.
No key generated yet
Choose the algorithm and generate the pair. The browser will self-test the signature before unlocking downloads.
How it works
Enter your input
Fill in the values, paste your text, or upload the file this tool works with.
See results instantly
Most tools update live as you type; a few use a single button. Either way, the result appears right on this page.
Use your results
Copy, download, or share what the tool produces — you're always in control of the output.
This tool is still being fine-tuned, so you may run into the odd error. Spotted one? Let us know so we can fix it.
What is SSH Key Generator?
ProntoUso's SSH Key Generator creates a real SSH key pair using the Web Crypto API, encodes it in the same OpenSSH format ssh-keygen produces, and signs a test payload with the new key before showing any result — all without the key material leaving your device.
How to generate an SSH key pair (Ed25519, RSA, ECDSA)
Generate an Ed25519, RSA, or ECDSA SSH key pair in the browser, get the OpenSSH public key line, check SHA-256/MD5 fingerprints, inspect an existing public key, or build the equivalent ssh-keygen command to run locally instead.
Choosing an algorithm
Ed25519 is the recommended default for a new key: it's compact, fast, and supported by every current SSH client and server. RSA (2048, 3072, or 4096 bits) exists for compatibility with older systems that don't support Ed25519 — 4096 bits is the simplest safe choice, 3072 matches OpenSSH's current default, and 2048 is a legacy floor. ECDSA (P-256 or P-384) covers environments that specifically require it.
What actually gets generated
The key pair is created with `crypto.subtle.generateKey`, then encoded by hand into the exact wire formats ssh-keygen uses: the OpenSSH public key line (`ssh-ed25519 AAAA... comment`), the unencrypted `openssh-key-v1` private key container, and a PKCS#8 PEM export for other cryptographic tooling. Before any of it is shown, the tool signs a random payload with the private key and verifies it with the public key — if that self-test fails, nothing is displayed.
Why there's no passphrase option
OpenSSH's encrypted private key format uses a specific key-derivation function (bcrypt_pbkdf) that needs more than what the Web Crypto API provides out of the box. Rather than encrypt the key with something that only resembles OpenSSH's real scheme, this tool generates an unencrypted private key and says so plainly — add a passphrase afterward with `ssh-keygen -p`, or generate the key in a terminal from the start if you need one immediately.
Fingerprints, and why they don't change with the comment
The SHA-256 and MD5 fingerprints are computed over the public key's binary blob — the same bytes `ssh-keygen -lf` hashes — not over the full text line. That's why adding or editing the comment at the end of a public key never changes its fingerprint: the comment isn't part of what's hashed.
Inspecting an existing public key
The inspector accepts a single OpenSSH public key line, decodes its base64 blob, cross-checks the type declared inside the blob against the type prefix in the text, and reports the key size or curve, comment, and both fingerprints. It refuses any input containing "PRIVATE KEY" — there's no legitimate reason to paste private key material into a key inspector.
Generating the key in a terminal instead
The command builder produces the exact `ssh-keygen` invocation for the algorithm, comment, and filename you choose — useful when you'd rather the private key never be created inside a browser tab at all. ssh-keygen prompts for the passphrase itself, directly in the terminal; it never passes through this page.
Generated locally, but read this before production use
Key generation, encoding, and fingerprinting run entirely in your browser via the Web Crypto API — nothing is uploaded, and the private key is hidden by default until you choose to reveal it. That said, local generation reduces network exposure, not every risk: a compromised browser, a malicious extension, or tampered JavaScript could still see key material during generation. For a highly privileged production identity, prefer running ssh-keygen locally or a hardware-backed key.
Frequently Asked Questions
Which SSH key should I generate for GitHub or GitLab?
Ed25519, if your client and the account you're adding it to both support it — nearly all current setups do. RSA 4096 remains available for older systems that require RSA specifically.
What do I do with the public key?
Add it to your Git provider's SSH key settings, or append it to a server's `~/.ssh/authorized_keys` file. The public key is meant to be shared; the private key is not.
Why are the SHA-256 and MD5 fingerprints different?
They're the same public key blob hashed with two different algorithms. OpenSSH shows SHA-256 by default today; MD5 sticks around for comparing against older tooling or documentation that still prints it.
Is it safe to generate an SSH key in a browser?
The key material can be created without leaving your device, which is meaningfully better than a form that submits it to a server. It still depends on the integrity of the page, browser, and any installed extensions, though — for a highly privileged production identity, generating locally with ssh-keygen or using a hardware-backed key is the safer choice.
Why doesn't the generated private key have a passphrase?
OpenSSH's passphrase-encrypted private key format relies on a specific key-derivation function that the Web Crypto API doesn't provide, and this tool won't fake that protection with something else. Add a passphrase afterward with `ssh-keygen -p -f <file>`, or generate the key with ssh-keygen from the start if you need a passphrase immediately.
Can I paste a private key into the inspector to check it?
No — the inspector only accepts a public key line and rejects anything containing "PRIVATE KEY" text. Checking a key's type, size, or fingerprint never requires the private half.
What does the self-test after generation actually check?
Right after the key pair is created, the tool signs a random value with the new private key and verifies that signature with the matching public key. If that round trip fails for any reason, the tool shows an error instead of a key you can't actually trust.
Related Tools
- AvailableLocal
Password Generator
Generate strong passwords with browser cryptography.
- AvailableLocal
Hash Generator & File Checksum
Compute SHA-1, SHA-256, SHA-384, and SHA-512 hashes.
- AvailableLocal
EXIF Viewer and Remover
Inspect common photo metadata and download a clean copy.
- AvailableLocal
Content Security Policy Generator
Build a Content-Security-Policy header from a form.
- AvailableLocal
X.509 Certificate Decoder
Decode PEM or DER certificates locally in the browser.
- AvailableLocal
Email Header Analyzer
Organize raw email headers into fields, route, and reported auth results.
- AvailableServer
Password Breach Checker
Check if a password has appeared in a known data breach.
- AvailableServer
Security Headers Scanner
Scan a site's HTTP response headers and grade its security posture.
- AvailableLocal
HMAC Generator
Generate HMAC hashes with a secret key.
- AvailableLocal
Percentage Calculator
Calculate percentages, discounts, tax, changes, and totals instantly.