← All Tools

Private RSA Key Generator🔒 100% local

Generate key pairs. Privacy-first, no server uploads, no tracking.

Related Tools

API ClientAPI Key RedactorAspect Ratio Scaler

Guidance and inspection rather than generation, despite the name. Paste a PEM block, a JWK or an ssh-rsa/ssh-ed25519 public key and the page names the format, explains the header, counts base64 characters to estimate the DER size, estimates a JWK modulus in bits and lists findings. Type a bit size instead and it prints the equivalent symmetric strength, a warning and the openssl and Node commands to create the key on your own machine.

How to use it

  1. Enter '2048' (or 3072, 4096) for size guidance, 'help' for the full local recipes, or paste a key to inspect.
  2. Press Process.
  3. Read the Format and Findings block. Public keys are what you should paste; the page flags private key material loudly if you paste it anyway.

Worked example

2048becomesRequested RSA size: 2048 bits Equivalent symmetric security: ~112-bit ⚠ 2048-bit is the current minimum. Acceptable for TLS today, but plan a migration to 3072+ or Ed25519. Generate it (run locally — never in a web page): openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -aes256 -out private.pem && chmod 600 private.pem openssl rsa -pubout -in private.pem -out public.pem Or with Node (add your own passphrase from an env var): node -e "const c=require('crypto');const {privateKey,publicKey}=c.generateKeyPairSync('rsa',{modulusLength:2048,publicKeyEncoding:{type:'spki',format:'pem'},privateKeyEncoding:{type:'pkcs8',format:'pem',cipher:'aes-256-cbc',passphrase:process.env.PASS}});require('fs').writeFileSync('private.pem',privateKey,{mode:0o600})" Safer alternative for almost every use case: Ed25519. openssl genpkey -algorithm ED25519 -out ed25519.pem Smaller keys, faster operations, no parameter choices to get wrong. Storage rules: • private.pem must be chmod 600 and never committed — add *.pem to .gitignore. • Prefer a KMS/HSM or your platform secret store over a file on disk. • Rotate on any suspected exposure. A leaked private key cannot be "revoked" from past traffic.

Nothing is generated - the output is advice plus the commands you would run locally, and the warning tells you 2048 is the floor rather than a target.

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEx user@hostbecomesFormat: OpenSSH public key Type: ssh-ed25519 Comment: user@host Key family: ed25519 Verify the fingerprint (SHA-256 of the blob, the modern default): ssh-keygen -lf <(echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEx …") ssh-keygen -lvf id_ed25519.pub # -v also prints the randomart box Findings: • ed25519 — the recommended choice: fast, small, no parameter pitfalls. Rules that prevent key incidents: 1. Private keys never leave the machine that uses them. Not in chat, not in a pastebin, not in a "validator". 2. Public keys are safe to share — that is their purpose. 3. Encrypt private keys at rest (PKCS#8 + AES-256, or a KMS). 4. Ed25519 over RSA for anything new: fewer parameters, no weak-size trap, faster. 5. Plan for rotation from day one — a key you cannot replace is a key you cannot protect. This tool performed no network requests and stored nothing. All analysis is string/format inspection only — it cannot and does not recover private key material.

A sample key line: the analysis is string based, so the type prefix and the comment are read literally and no key material is ever decoded.

When to use it

What it does not do