WireGuard config generator

Generate matching server and client WireGuard configurations, including fresh X25519 keypairs and an optional preshared key. All keys are generated inside your browser and never leave it: nothing is uploaded, logged or stored. Download the .conf or scan the QR code with the WireGuard mobile app.

Keys never leave your browser. The X25519 keypairs and the optional preshared key are generated locally by your browser's built-in Web Crypto API. This page sends nothing to any server: no analytics on what you type, no logging, no storage. Close the tab and the keys exist only in the configs you copied or downloaded. You can verify this in devtools: the Network tab stays empty while you work.
server takes .1, the client .2
0.0.0.0/0, ::/0 routes everything through the tunnel
seconds; 0 disables; 25 keeps NAT mappings alive
unsure? use the MTU / MSS calculator

Notes on the security model

WireGuard keys are Curve25519 (X25519) keypairs. This page asks your browser's Web Crypto API to generate them, which means no third-party cryptography library is downloaded or trusted: the same code that protects your TLS sessions generates the keys. The QR code is drawn by a small, version-pinned library served from this site with an integrity hash, and it never sees the network.

The preshared key is an optional extra: WireGuard mixes it into the handshake as a symmetric secret, so even if Curve25519 were broken some day (for example by a large quantum computer), recorded traffic would still not decrypt without the preshared key. The tradeoff is operational: it is one more secret to distribute to both ends, which is why many setups skip it.

Generating keys in a browser is convenient but not the gold standard: on a hardened server you would run wg genkey so the private key never exists outside that machine. For a homelab, a VPS or a road-warrior phone setup, browser generation with keys that never leave the page is a reasonable middle ground, and strictly better than the sites that upload your keys to render the config server-side.