Free tools · SSH keys

SSH key format converter.

Turn a PuTTY .ppk private key into OpenSSH or legacy PEM format — or convert back — for Linux servers, Git and CI. Converted locally, never uploaded.

Your key

Add the key file.

Choose a file, drop it anywhere on this panel, or paste its contents. PPK, OpenSSH, legacy PEM and SSH-1 inputs are detected automatically. Nothing starts until you press a button, and everything runs on your device.

Choose a key fileor drag and drop it here
Passphrase (only for encrypted keys)
Output format
Protect converted key (optional passphrase)
Repeat output passphrase

Key material is wiped from this page after 10 minutes without interaction.

How it works

Three steps, all on your device.

PuTTYgen normally does this conversion on your own machine. This tool does the same work inside the page, so an encrypted key and its passphrase never travel over the network.

01

Add your key

Choose the file, drop it on the panel, or paste its contents into the text area. PPK, OpenSSH and SSH-1 inputs are detected automatically.

02

Enter the passphrase

Only needed when the key file is encrypted. Leave it empty otherwise.

03

Convert and save

Copy the converted key or download it, then place private keys in ~/.ssh with chmod 600.

Questions

Converting PPK keys, answered.

If you manage servers by hand, see the engineering services behind this tools series.

Is my private key uploaded anywhere?

No. The conversion runs entirely in your browser using JavaScript and WebCrypto. The page makes no network requests with your key — you can verify this in your browser's developer tools or disconnect from the network after the page loads.

Which PPK files are supported?

PPK versions 1, 2 and 3 with RSA, DSA, ECDSA (NIST P-256/384/521), Ed25519 and Ed448 keys. Passphrase-protected PPKv2 and PPKv3 (Argon2) files are decrypted locally when you supply the passphrase. Ed448 converts to PEM only, because OpenSSH itself has no ssh-ed448 user-key format.

How do I save and use the converted key on Windows or Linux?

Download the private key and its .pub file. In Windows PowerShell, create $HOME\.ssh, move the private key there, restrict its ACL, and connect with ssh -i $HOME\.ssh\id_key user@host. On Linux, run mkdir -p ~/.ssh, move the private key to ~/.ssh/id_key, run chmod 700 ~/.ssh and chmod 600 ~/.ssh/id_key, then connect with ssh -i ~/.ssh/id_key user@host. To install the public key on an already reachable Linux server, use ssh-copy-id -i ~/.ssh/id_key.pub user@host; never share the private key.

The tool says my passphrase is wrong. What now?

Double-check caps lock and the exact passphrase set in PuTTYgen. If the file was edited by hand, its integrity check will fail; re-export it from PuTTYgen (Conversions menu) and try again.

The tool says my key file could not be parsed. What is missing?

Usually an incomplete paste. PuTTYgen wraps the key data across several lines — copy the whole file from the PuTTY-User-Key-File header down to and including the Private-MAC line, without rewording or re-wrapping lines. Loading the .ppk file directly instead of pasting avoids this entirely.

My converted file differs from my existing key file, yet both show the same public key. Is that normal?

Yes. Every OpenSSH private key file embeds freshly generated random check values, so two files holding the same key never have identical bytes. The public key is the identity: if it matches, both files log in as the same key.

The converted key still does not log me into my server. Why?

Conversion preserves the key but cannot grant access: the server must trust it. Append the public key line to ~/.ssh/authorized_keys for the right user, set chmod 700 ~/.ssh and chmod 600 ~/.ssh/authorized_keys, then connect with ssh -i <converted-file> user@host. If it still fails, ssh -v shows whether the server accepts or rejects the offered key.

Can I paste my private key into a chatbot to debug a conversion failure?

No — treat any private key shared that way as exposed and generate a replacement. This converter is safe to use because it runs locally in your browser, but chat logs are not a safe place for key material. When asking for help, share only the error message and the public key line, never the private section.

Can the converted key be passphrase-protected?

Yes. Fill in both output passphrase fields before converting and the tool emits a bcrypt + aes256-ctr protected OpenSSH key, the same format ssh-keygen produces — ssh will ask for that passphrase on every use. The same fields protect PPK output when converting back from OpenSSH (AES-256-CBC with Argon2 for v3, SHA-1 derivation for v2). Leave both fields empty for a traditional unprotected key file.

Which PPK version should the reverse conversion emit?

Version 3 (Argon2 key derivation) unless you still run PuTTY older than 0.75, which only reads version 2. The version radio appears automatically when the input is detected as an OpenSSH key.

What does Inspect key do?

It verifies the file's integrity and shows its type, size in bits, comment, fingerprint and key-derivation parameters without producing any private key output — useful for checking a key before converting it or for confirming which key a file holds.

Which key types and formats are supported?

Inputs: PuTTY PPK versions 1–3 (RSA, DSA, ECDSA P-256/384/521, Ed25519, Ed448), OpenSSH private keys (unencrypted or bcrypt-protected), legacy PEM (PKCS#1, DSA, SEC1, RSA PKCS#8, EdDSA PKCS#8 with public key), and unencrypted SSH-1 RSA files. Outputs: modern OpenSSH (optionally passphrase-protected), legacy PEM (including Ed448), and PPK versions 2 or 3, protected or not. Ed448 cannot become OpenSSH — no such format exists — but otherwise every input reaches every compatible output.

How do I rescue an SSH-1 or Ed448 key for modern use?

Choose the migration target after loading the file: SSH-1 RSA migrates to OpenSSH, PPK or legacy PEM carrying the identical RSA keypair (verified mathematically on import), and Ed448 PEM files with a public key convert back to PPK. The result carries a warning banner explaining the trade-offs; short RSA keys under 2048 bits are flagged separately.

Why does the tool show warnings for some keys?

Old formats still convert, but you should know their trade-offs: DSA is capped at 1024 bits and deprecated, PPK version 1 has a weak integrity check, legacy PEM has weaker password protection than OpenSSH, unprotected key files work for anyone holding them, and SSH-1 is cryptographically broken with no modern server support. The advisories appear above the result, next to the converted key.

What key should I generate today?

Ed25519 with an OpenSSH private key file and a passphrase — it is fast, compact and widely supported. Use RSA-3072 or larger only where Ed25519 is unavailable. Avoid DSA, SSH-1 and unprotected key files for anything that matters. The SSH key generator and PPK generator on this site create such keys locally in your browser.

Can I generate a new key here instead of converting?

Use the dedicated tools: the SSH key generator emits fresh OpenSSH keys and the PPK generator emits fresh PuTTY files, both with version, passphrase and randomness options. This converter focuses on converting keys you already have.

Does waving the mouse really make a generated key stronger?

Mostly it makes generation yours: the keypair itself always comes from your browser's audited secure generator, which needs no help. Your movements are hashed and additionally mixed into salts, padding and check values on the generator pages. It is the same ritual PuTTYgen uses, stated honestly — skip it any time and the key is just as strong.

Can I convert between key types, e.g. Ed25519 to RSA or DSA?

No — and neither can PuTTYgen. Conversion only re-wraps the same mathematical key in a different file container; Ed25519, Ed448, RSA, DSA and ECDSA are different math, so changing type or size always means generating a new keypair (ssh-keygen -t ed25519) and registering its public key wherever the old one was trusted. This tool converts every PuTTYgen key type between file formats, but never between algorithms.

Can I convert between OpenSSH and legacy PEM without PuTTY?

Yes. Drop a PKCS#1, DSA, SEC1 or RSA PKCS#8 PEM file onto the tool and it converts to modern OpenSSH format, with an optional comment and passphrase. Passphrase-protected PEM files are refused — browsers cannot compute their legacy ciphers — so strip the passphrase first. PKCS#8 Ed25519 cannot convert because the format carries no public key; convert from the PPK or OpenSSH original instead.

Can I change or remove an OpenSSH key passphrase?

Yes. Load the OpenSSH key, choose the OpenSSH target, and set new output passphrase fields: empty strips protection, a new value re-protects. You can also replace the comment at the same time. The key material itself never changes, so the fingerprint stays identical.

What about SSH-1 keys and Ed448?

Unencrypted SSH-1 RSA files convert to PKCS#1 PEM directly, or migrate to OpenSSH and PPK carrying the same RSA keypair; passphrase-protected SSH-1 cannot be read here because browsers lack 3DES — and even modern PuTTY and OpenSSH dropped SSH-1 entirely. Ed448 converts to PKCS#8 PEM for OpenSSL-compatible tooling and back to PPK, but OpenSSH itself has no Ed448 user-key format, so there is no OpenSSH output for it.