If you've set up a VPN recently, you've probably met WireGuard - it's the protocol now powering most modern VPN apps and built right into Linux. But what is it, and why did it take over so fast? In short: WireGuard is a VPN protocol that does more with less - tiny codebase, modern cryptography, and configuration simple enough to fit on a napkin. Here's a plain-English explanation.
The short answer
- WireGuard is a modern VPN protocol - the tech that creates the encrypted tunnel between your device and a server.
- It's small (~4,000 lines), fast, and secure, with fixed state-of-the-art cryptography.
- Configuration is just a public/private key pair per peer - far simpler than OpenVPN or IPsec.
- It's built into the Linux kernel and ideal for self-hosting your own VPN.
How WireGuard works
A VPN protocol's job is to build an encrypted tunnel and decide what goes through it. WireGuard does this with a key-pair model: every device (peer) has a private key and shares its public key, exactly like SSH keys. Two peers that know each other's public keys can establish a tunnel - no certificates, no username/password, no complex negotiation.
Traffic is encrypted with a fixed, modern cipher suite (ChaCha20-Poly1305) and key exchange via Curve25519. Because the cryptography is fixed, there are no weak options to accidentally enable and nothing to "downgrade" - a frequent source of trouble in older protocols. WireGuard runs over UDP (on a default port of UDP 51820) and is connectionless by design, which is part of why it reconnects so smoothly when you switch networks.

The cryptography, briefly
WireGuard's security comes from a small, fixed set of modern primitives - each with one job, none of them optional:
- Curve25519 - the key exchange (Diffie-Hellman) that lets two peers agree on a shared secret from their key pairs.
- ChaCha20 - the cipher that actually encrypts your data; fast in software, no special CPU instructions needed (great on phones and routers).
- Poly1305 - the authenticator that detects any tampering with a packet.
- BLAKE2s - the fast hash function used internally.
These are wired together with the Noise protocol framework, a well-studied design for secure handshakes. The tunnel is set up in a 1-RTT handshake (one round trip), and keys are rotated regularly for forward secrecy. Because the suite is fixed, there's no "cipher negotiation" step - the classic weak point that lets attackers downgrade older protocols.
Why it took over
- Speed. Less overhead than OpenVPN/IPsec, especially on mobile and on reconnect.
- Auditability. ~4,000 lines vs tens of thousands - small enough to actually review.
- Simplicity. A config file is a handful of lines; key management is just key pairs.
- Kernel integration. Merged into the Linux kernel (5.6+), so it runs efficiently and ships everywhere.
That combination is why providers and self-hosters alike standardised on it. If you're choosing a protocol, see our deep dive on WireGuard vs OpenVPN - which to choose.
Where WireGuard actually runs
The same protocol ships in a few forms, which is handy to know when something behaves differently across devices:
- In the Linux kernel - the native, fastest implementation, merged since kernel 5.6. This is what a VPS or Raspberry Pi server uses.
- wireguard-go - a userspace version in Go, used where there's no kernel module (older systems, some containers). Correct but slower.
- BoringTun - a userspace implementation in Rust (originally from Cloudflare), used by some apps and on platforms without kernel support.
- iOS, Android, Windows, macOS - the official apps wrap one of these so the same key-based config works everywhere.
For everyday use you don't pick one - the app or OS does - but it explains why a kernel-backed server outperforms a phone acting as a server.
The honest limits
WireGuard isn't magic. Raw WireGuard uses UDP, which some restrictive networks (and a few countries) block or throttle - there, you need obfuscation or a TCP fallback. By default it also assigns each peer a static internal IP and can retain some connection state, which is why privacy-focused commercial providers add their own no-logging layer on top. None of this is a flaw so much as a design trade-off favouring speed and simplicity.
The best part: run your own
Because WireGuard is so lightweight, you don't need a commercial VPN to use it. A cheap VPS comfortably runs a personal WireGuard server, so your traffic passes through a machine you control and no company logs it. A Contabo VPS at €5.50/month is plenty for one. Beginner-friendly tools like PiVPN make it a 10-minute job - start with our best self-hosted VPN guide and WireGuard config templates.
The bottom line
WireGuard is the modern default for VPNs because it's fast, lean, secure and simple: a few thousand lines of code, fixed strong cryptography, and key-based config anyone can manage. Its trade-off is UDP visibility on hostile networks, solved with obfuscation or a TCP fallback. Best of all, its simplicity makes self-hosting your own VPN genuinely easy - the most private option, because then no third party sees your traffic at all.
★ Nuremberg GDPR datacenter · ✓ Dedicated IPv4 included · 200+ Mbps guaranteed
Self-host your VPN on your own VPS → ContaboFull root access · public IPv4 · pick your region→


