Local SSH utility

Universal SSH Key Converter & Format Doctor

Generate, inspect, and convert Ed25519, RSA, and ECDSA keys between OpenSSH, PEM/PKCS, and PuTTY PPK without uploading key material.

Workspace

Key settings

Algorithm

Recommended - Fast and compact. Ed25519 guide

Compare algorithms
  • Ed25519: recommended for modern OpenSSH clients. Ed25519 guide
  • RSA: broad compatibility for older systems or an RSA requirement. RSA guide
  • ECDSA: for destinations requiring a National Institute of Standards and Technology (NIST) curve. ECDSA guide

Check the destination documentation before replacing an existing key. Changing algorithms creates a new SSH identity; conversion preserves the existing one.

Fixed Ed25519 parameters — no size or curve selection needed.

Destination

OpenSSH · Current SSH client format.

Advanced formats

Private-key protection

Protect the private key

Runtime memory only
Destination protection

Passphrases are cleared after each attempt and after five minutes of inactivity. They are never reused for another conversion.

Generation can take a few seconds for 4096-bit keys.

Ready. No key material is stored.
Output appears after an explicit action

Generate a new SSH key or convert a supported private key. Nothing is copied or downloaded automatically.

Public key

Safe to add to servers and authorized_keys.

Private key

Shown only after Generate or Convert.

Treat this output like a password. Save it only to a trusted device.

Field guide

Choose the format your destination actually accepts

An SSH algorithm and any selected curve define the identity; OpenSSH, PKCS#8, PKCS#1, SEC1, and PuTTY PPK are containers for that identity. Converting a container does not rotate the key, change its algorithm or curve, or alter the matching public fingerprint. Format Doctor recognizes a wider set of inputs so you can separate a format mismatch from an algorithm, encryption, integrity, or destination-policy problem.

01

Modern OpenSSH private key

BEGIN OPENSSH PRIVATE KEY

Current OpenSSH versions use their own private-key envelope. Use it for contemporary command-line SSH clients unless the receiving product documents a different requirement. This converter handles Ed25519, RSA, and ECDSA OpenSSH keys either unencrypted or protected with bounded bcrypt-PBKDF and AES-256-CTR.

02

PKCS#1, PKCS#8, and SEC1 PEM

BEGIN RSA / EC / ENCRYPTED PRIVATE KEY

PKCS#1 is RSA-specific and SEC1 EC PEM is ECDSA-specific. PKCS#8 is an algorithm-neutral container common in Java and modern key-management workflows and supports all three algorithms here. The interface exposes only protection profiles implemented for the selected algorithm.

03

PuTTY PPK v2 and v3

PuTTY-User-Key-File-3: ssh-rsa

PPK is the PuTTY-family private-key container. PPK v3 with Argon2id is the normal preset; PPK v2 remains available for an older destination. Import validates the documented Private-MAC before conversion and rejects excessive KDF parameters before expensive work. Output preserves the Ed25519, RSA, or ECDSA public identity and SHA-256 fingerprint.

What happens in this browser

Generate uses browser cryptography for RSA and the pinned curve implementation for Ed25519 and ECDSA. Convert normalizes supported containers, authenticates protected formats, checks the public/private relationship, derives the OpenSSH public blob again, and refuses to expose output unless the SHA-256 fingerprint is preserved. Bcrypt and Argon2 work runs in bounded, cancellable browser workers.

There is no application server, upload endpoint, account, telemetry pipeline, or database. The static app shell must first be downloaded and may later check this origin for updates, but key actions initiate no network requests. Keys and passphrases are not placed in cookies, Web Storage, IndexedDB, URLs, logs, analytics, service-worker messages, or caches. Clear removes UI references, terminates workers, revokes download URLs, and asks the crypto layer to wipe tracked byte arrays. JavaScript strings are garbage-collected, so no browser tool can promise perfect deterministic memory zeroization.

Compatibility checklist before conversion

  1. Read the target product’s exact header or format requirement instead of relying only on a generic error.
  2. Confirm it accepts the selected algorithm; for RSA confirm the key size, and for ECDSA confirm the curve.
  3. Work on a copy before running any command that rewrites a private-key file.
  4. Keep the original protected until the converted file has been tested and its public fingerprint compared.
  5. Apply restrictive file permissions after downloading; on Unix-like systems, chmod 600 ./private-key is a common baseline.

Format conversion does not make an incompatible algorithm or curve compatible. Use Generate when moving between RSA, Ed25519, and ECDSA because that creates a separate SSH identity. DSA, Ed448, hardware-backed identities, post-quantum hybrids, and certificates remain diagnostic-only.

How Format Doctor reaches a result

The Doctor first applies a strict size limit and checks for incomplete, mismatched, or multiple containers. It then parses the text envelope and, where available, the SSH public-key blob. A parsed result means the relevant structure and public identity were decoded consistently. A structural result means the container and selected metadata are recognizable, but private integrity or full cryptographic validity was not established.

This distinction matters for encrypted OpenSSH keys and PuTTY PPK files. Their public sections can reveal an algorithm, key size or curve, and fingerprint without exposing private components. Diagnose deliberately does not ask for a passphrase. Convert authenticates a supported protected container and checks public/private consistency before serialization.

Use compatibility profiles as context, not a promise

The General profile reports format facts without assuming a destination. Modern OpenSSH, Legacy MFT, Java/PKCS, and PuTTY-family profiles add likely compatibility questions and safer next steps. A named product note is linked to the documentation reviewed for that rule and includes its review date.

No profile can guarantee acceptance. Product version, enabled algorithms, import screen, server configuration, and organizational policy can all matter. Use the diagnosis as evidence for the next check, compare fingerprints before and after any conversion, and keep the original protected until the destination accepts the copy.

Protection profiles, limits, and offline use

The secure presets select reviewed combinations rather than arbitrary cryptographic knobs. OpenSSH uses bcrypt and AES-256-CTR; encrypted PKCS#8 exports PBES2 with PBKDF2-HMAC-SHA-256 and AES-256-CBC; PPK v3 exports Argon2id with AES-256-CBC and HMAC-SHA-256. PPK v2, RSA PKCS#1, and ECDSA SEC1 remain compatibility choices. See the OpenSSH private-key protocol, PuTTY PPK specification, and Web Crypto specification.

Inputs above the published size or KDF work limits fail safely instead of being silently clamped. After one successful load, the service worker stores only versioned static routes, scripts, styles, icons, and crypto workers. It never receives or caches workspace state. Updates wait until the user has cleared keys and passphrases. Installation availability depends on the browser; the cached/offline-ready indicator is the truthful readiness signal.

FAQ

Practical questions

Does the key leave my browser?

No application code uploads your key. Initial loading, offline-cache installation, and update checks may request static files from this site, but Generate, Convert, Diagnose, Copy, Download, and Clear do not initiate network requests with key material. Browser extensions, managed-device software, clipboard tools, and the operating system remain outside the application security boundary.

Which key formats are supported?

The converter imports and exports Ed25519, RSA, and ECDSA OpenSSH, PKCS#8, and PuTTY PPK v2/v3 keys using the protection profiles shown in the interface. PKCS#1 PEM is available only for RSA, while SEC1 EC PEM is available only for ECDSA. Format Doctor additionally recognizes public-key containers, DSA, certificates, unsupported ciphers, and excessive KDF parameters.

Which protected private keys can be converted?

Supported Ed25519, RSA, and ECDSA profiles include OpenSSH bcrypt with AES-256-CTR, PKCS#8 PBES2/PBKDF2 with approved AES-CBC profiles, PPK v2 AES-256-CBC, and PPK v3 Argon2 with AES-256-CBC. AES-based traditional PEM applies to RSA PKCS#1 and ECDSA SEC1. Unsupported ciphers, KDFs, versions, algorithms, and excessive parameters are identified without an unsafe conversion.

How do I convert an OpenSSH private key to PEM?

Open Convert and paste or drop a supported OpenSSH private key. Choose PKCS#8 for Java and general crypto tooling. For an RSA key that specifically needs PKCS#1, open Advanced formats and choose RSA PKCS#1 PEM. If the input is protected, enter its passphrase locally when prompted. Work on a copy, preserve the original, and compare the displayed SHA-256 fingerprint before using the downloaded result.

How do I convert a PPK file to OpenSSH or PEM?

Open Convert and paste or drop a supported Ed25519, RSA, or ECDSA PuTTY PPK v2 or v3 file. Enter the passphrase locally if it is protected, then choose a destination valid for the detected algorithm. The converter validates the PPK Private-MAC and checks that the public fingerprint is preserved before exposing output.

Should I choose ECDSA P-256, P-384, or P-521?

Use the curve required by the destination. P-256 normally has the broadest ECDSA compatibility, P-384 suits a documented higher-security policy profile, and P-521 is for a specialized requirement. Choose Ed25519 for a new key when the destination supports it and does not require ECDSA.

What format starts with BEGIN OPENSSH PRIVATE KEY?

That header identifies the modern OpenSSH private-key container, which can hold RSA and other SSH algorithms and may be encrypted. It is different from PKCS#1 RSA PEM, whose header is BEGIN RSA PRIVATE KEY, and PKCS#8, whose common headers are BEGIN PRIVATE KEY or BEGIN ENCRYPTED PRIVATE KEY.

What is the difference between PKCS#1, PKCS#8, OpenSSH, and PPK?

PKCS#1 is an RSA-specific private-key structure. PKCS#8 is an algorithm-neutral private-key container commonly used by Java and modern key tooling. OpenSSH has its own private-key container for OpenSSH clients, while PPK is the PuTTY-family container. A conversion repackages the same supported SSH identity without changing its public fingerprint.

Should I choose RSA 2048, 3072, or 4096 bits?

Choose the policy required by the destination. RSA 2048 remains broadly compatible, 3072 is the recommended RSA choice for a new key in this tool, and 4096 is available for destinations with that policy. Larger keys take more time and space, and a larger key does not solve a format mismatch.

Why does the public key stay the same after conversion?

Conversion re-encodes the same private key in a different container. It does not generate a new identity or change its algorithm. Compare the SHA-256 fingerprint before and after conversion to verify that the public identity did not change.

How do I check whether a public key matches a private key?

Diagnose each key and compare its SHA-256 SSH fingerprint when the public identity can be derived. Matching fingerprints indicate the same SSH public identity. The converter derives the public blob from supported private material and refuses to expose converted output if the fingerprint changes.

Why might a destination still reject the converted key?

The destination may require a different algorithm, key size, encryption state, public-key format, PKCS#8, PuTTY PPK, a certificate, or a product-specific import workflow. Format conversion cannot make an unsupported algorithm or policy compatible.

How should I protect a downloaded private key?

Save it only to a trusted device, restrict file access, and keep the original until the converted key is verified. On Unix-like systems, chmod 600 is a common baseline. Follow your organization policy for storage, backup, rotation, and incident response.

What exactly does Clear remove?

Clear removes key values, passphrase fields, diagnostic details, filenames, pending download URLs, and runtime conversion state. It also terminates active KDF workers and asks the crypto layer to wipe tracked byte arrays. JavaScript strings are garbage-collected, so a browser application cannot promise deterministic physical memory zeroization.

Does the tool work offline?

Yes, after one successful online load completes the static app-shell cache. The status dock reports when the tool is ready offline. Supported browsers may also offer installation. Static-asset installation and update checks use same-origin requests; cryptographic actions remain local and cached data never includes pasted keys, generated keys, passphrases, clipboard data, or downloads.

What is the difference between PPK v2 and PPK v3?

PPK v3 is the modern PuTTY format and supports Argon2-based passphrase protection with HMAC-SHA-256 integrity. PPK v2 is retained for compatibility with older PuTTY-family software and uses older protection and integrity choices. Prefer PPK v3 unless the destination explicitly requires v2.

What does Format Doctor inspect?

It inspects the text container, public-key blob where available, algorithm identifier, encryption marker, key size or curve, version, comment, and SHA-256 fingerprint where that fingerprint can be derived safely. It does not upload the input or attempt to authenticate with the key.

What is the difference between parsed and structural?

Parsed means the relevant key structure and public identity were decoded consistently. Structural means the container header and selected metadata were recognized, but private integrity or cryptographic validity was not established. Diagnose can report an encrypted PPK structurally without a passphrase; Convert validates its Private-MAC before any private components reach the conversion router.

Does a compatibility finding guarantee that a product will accept my key?

No. Findings explain common container and algorithm expectations using the selected profile. Product version, policy, enabled algorithms, import screen, and server configuration can still change the result. Named-product notes are qualified and linked to the documentation reviewed for that guidance.

Can Format Doctor recover a missing private key from a public key?

No. Public keys are designed to be shared and cannot be reversed into their matching private keys. The Doctor can identify and fingerprint a public key, but conversion and private-key download actions remain unavailable for public-only input.

Can Format Doctor inspect Ed25519 or ECDSA keys?

Yes. Format Doctor identifies common Ed25519, ECDSA, DSA, and RSA public or private-key structures and reports safely derivable metadata. Generate and Convert support Ed25519, RSA, and ECDSA P-256/P-384/P-521; DSA remains diagnostic-only.

Privacy boundary

Your work stays on this device

Everything you give a tool—and everything it creates—remains inside your browser.

Your tool content does not go out.Files, pasted text, keys, configuration values, and results stay inside your browser.
Never uploaded by the toolsFilesPasted textPasswords and keysResults