WireGuard Key Generator
Generate a WireGuard keypair + config, in your browser.
Runs entirely in your browser — nothing you enter is uploaded, logged, or tracked.
This produces the same thing as running `wg genkey | wg pubkey`: a Curve25519 (X25519) private key, its public key, and an optional pre-shared key — generated with your browser’s native WebCrypto, never sent anywhere. It can also assemble a complete client config you can drop into WireGuard. Keys are random per click; close the tab and they’re gone.
Build a client config from these keys
Frequently asked questions
Are these real WireGuard keys?
Yes. The private key is a clamped Curve25519 scalar and the public key is its X25519 base-point multiplication — exactly what `wg genkey`/`wg pubkey` produce, generated with native WebCrypto.
Is anything uploaded?
No. Generation happens entirely in your browser with crypto.subtle; no key ever leaves your device.
What is the pre-shared key for?
An optional symmetric key shared between two peers for an extra (post-quantum-ish) layer on top of the X25519 handshake. Put the same PSK on both ends.
My browser says X25519 isn’t supported.
In-browser X25519 needs a recent browser (Chrome/Edge 133+, Safari 17+, recent Firefox). The tool tells you honestly rather than generating a fake key — update your browser or use the `wg` CLI.