Engineering

Tailscale vs WireGuard: What's the Real Difference?

WireGuard is a VPN protocol; Tailscale is a managed mesh built on it. We compare raw WireGuard, Tailscale's coordination layer, and self-hosted Headscale on speed, security, NAT traversal, and cost.

Illustration contrasting a single raw WireGuard tunnel with a coordinated Tailscale mesh network
Illustration: Edgewisely
TL;DR - WireGuard is a VPN protocol; Tailscale is a managed mesh network built on it. If you run Tailscale, you are already running WireGuard — specifically the userspace wireguard-go implementation. - The real comparison is raw/self-managed WireGuard vs Tailscale's coordination layer: automatic key distribution, NAT traversal (DERP relays), ACLs, SSO, and MagicDNS. - Performance: in-kernel WireGuard hit 11.8 Gbit/s vs wireguard-go's 8.36 Gbit/s baseline in Tailscale's own benchmark — though optimized wireguard-go later reached 13.0 Gbit/s. - Cost: WireGuard is free (GPLv2). Tailscale's free Personal plan covers up to 6 users; paid plans start at $8/user/month. You can self-host the control plane with Headscale.

WireGuard and Tailscale are not competing products. WireGuard is a VPN protocol and Linux kernel module; Tailscale is a managed mesh-VPN service built on WireGuard. So "Tailscale vs WireGuard" really means raw WireGuard you configure by hand vs Tailscale's automation on top of it — key distribution, NAT traversal, access control, and identity. Pick raw WireGuard for control and raw speed; pick Tailscale to skip the manual wiring.

Is Tailscale just WireGuard?

No — Tailscale uses WireGuard for encryption but adds the entire coordination layer WireGuard leaves out. WireGuard moves encrypted packets between peers you have already configured. It does nothing to help those peers find each other, exchange keys, or punch through NAT.

WireGuard's own site is explicit: "All issues of key distribution and pushed configurations are out of scope of WireGuard." Peers exchange public keys manually, like SSH keys, and you hand-write each peer's endpoint and allowed IPs.

Tailscale fills exactly that gap. Its coordination server acts as a key directory — its engineering post calls it "essentially, a shared drop box for public keys." Each device uploads its public key and location, downloads its peers' public keys, and configures WireGuard automatically. Critically, "the private key never, ever leaves its node," so Tailscale cannot decrypt your traffic.

What is WireGuard?

WireGuard is a fast, minimal VPN protocol written by Jason A. Donenfeld, shipped in the Linux kernel with version 5.6 and announced on 30 March 2020 ("Linux 5.6, which contains our first release of WireGuard"). It runs in the kernel on Linux and ships for Windows, macOS, BSD, iOS, and Android.

Its cryptography is fixed, not negotiable: the Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, and HKDF. The kernel components are GPLv2; other tooling is MIT, BSD, or Apache 2.0.

What you get is a raw tool. You define peers, keys, and endpoints yourself. There is no dashboard, no identity layer, no automatic discovery. For a handful of static servers that is fine. For 50 laptops roaming between networks, it is a configuration-management job.

What is Tailscale, and how does it work?

Tailscale is a managed mesh VPN that turns WireGuard into a zero-config private network. It builds on wireguard-go, the userspace Go implementation of WireGuard, and layers coordination, identity, and access control on top.

Its data plane is a true peer-to-peer mesh; its control plane is hub-and-spoke and, per Tailscale, "carries virtually no traffic." The pieces that matter for infrastructure access:

  • NAT traversal. Tailscale handles hole-punching so devices connect directly in most cases, without manual configuration.
  • DERP relays. When a direct connection fails (UDP blocked, strict NAT), encrypted traffic falls back through DERP servers that "blindly forward already-encrypted traffic" and cannot read it. This adds latency; direct connections do not.
  • ACLs. A policy layer on top of WireGuard expressing access by users, groups, and tags.
  • SSO/MFA, MagicDNS, subnet routers, exit nodes, and Tailscale SSH for identity-based access to internal services.

That identity layer is why teams reach for Tailscale over hand-managed keys: access follows your Okta or Microsoft Entra ID login, not a config file you redistribute every time someone joins or leaves.

Tailscale vs raw WireGuard: the differences that matter

Dimension Raw WireGuard Tailscale
What it is VPN protocol + kernel module Managed mesh VPN on wireguard-go
Encryption WireGuard (Noise, Curve25519, ChaCha20) Same WireGuard crypto
Key distribution Manual, out of scope Automatic via coordination server
NAT traversal None — you set endpoints Automatic, DERP relay fallback
Access control Firewall / allowed-IPs by hand ACLs by user, group, tag
Identity / SSO None SSO + MFA via your IdP
DNS Manual MagicDNS
Runs in Kernel (Linux) Userspace (wireguard-go)
Peak throughput (bench) 11.8 Gbit/s kernel 8.36 Gbit/s baseline; 13.0 Gbit/s optimized
Cost Free (GPLv2) Free up to 6 users; $8+/user/mo
Self-hostable control plane N/A (no control plane) Yes, via Headscale

Is Tailscale faster than WireGuard?

Usually no, but the gap is smaller than you'd expect and can invert. Raw in-kernel WireGuard avoids userspace overhead, so it is typically faster. In Tailscale's own benchmark on a bare-metal i5-12400 with 25Gb NICs, in-kernel WireGuard hit 11.8 Gbit/s single-stream versus wireguard-go's 8.36 Gbit/s baseline.

But after UDP GSO/GRO and checksum optimizations, wireguard-go reached 13.0 Gbit/s on that same hardware — past the kernel implementation. For almost any dev or infrastructure workload over the internet, your link, not the implementation, is the bottleneck. Latency only rises when Tailscale must relay via DERP; direct peer connections do not add a hop.

Is Tailscale more secure than WireGuard?

They share identical packet encryption, so the security question is about everything around the packets. WireGuard gives you the cryptography and nothing else — no identity, no access policy, no record of who connected. You build that yourself.

Tailscale adds SSO, MFA, ACLs, and device management, which for a team is a meaningful security upgrade over hand-managed keys — the same shift toward identity-based access that zero-trust tools like Zscaler and Netskope sell at the network edge. The tradeoff: you take a dependency on Tailscale's coordination server. Tailscale notes your private key never leaves the device, so a control-server compromise cannot decrypt traffic, but it could in principle enroll a rogue node. Self-host the control plane with Headscale if that dependency is unacceptable.

Do I still need WireGuard if I use Tailscale?

No separate install. Tailscale bundles wireguard-go, so the WireGuard protocol is already doing your encryption — you don't configure or install it yourself. You would only reach for raw WireGuard if you want in-kernel performance, zero third-party dependencies, or a setup simple enough that manual peer config isn't a burden (a few fixed servers, for instance).

Is Tailscale free, and can I self-host it?

Yes to both, with limits. Tailscale's Personal plan is free forever for up to 6 users (non-commercial), with paid Standard at $8/user/month and Premium at $18/user/month. For teams who want Tailscale's client experience without depending on Tailscale's servers, Headscale is a BSD-3-Clause open-source reimplementation of the coordination server. NetBird is another open-source, WireGuard-based alternative.

What this means for you

  • Solo dev or homelab with a few static boxes: Raw WireGuard. Free, in-kernel, no external dependency. The manual config is a one-time cost.
  • Small team accessing GPU boxes, inference servers, and databases across clouds: Tailscale free or Standard. The ACLs, SSO, and NAT traversal pay for themselves the first time a machine moves networks — and it sits cleanly in front of your Kubernetes clusters and internal dashboards.
  • Security-sensitive org that can't depend on a vendor control plane: Tailscale clients plus self-hosted Headscale, or NetBird. You keep the automation and own the coordination server.
  • Maximum throughput on a trusted LAN: In-kernel WireGuard still wins at baseline — but benchmark your real link before optimizing for numbers your WAN will never hit.

Frequently Asked Questions

Is Tailscale just WireGuard?

No. Tailscale uses the WireGuard protocol (via userspace wireguard-go) for encryption, but adds everything WireGuard leaves out: automatic key distribution, NAT traversal, DERP relays, ACLs, SSO, and MagicDNS. WireGuard explicitly puts key distribution and configuration "out of scope." Tailscale is the coordination layer; WireGuard is the transport underneath it.

Is Tailscale faster than WireGuard?

Usually slightly slower, because it runs in userspace. In Tailscale's own test, in-kernel WireGuard reached 11.8 Gbit/s versus wireguard-go's 8.36 Gbit/s baseline — though optimized wireguard-go later hit 13.0 Gbit/s. In practice your internet link is the bottleneck, not the implementation. Tailscale adds latency only when it must relay traffic through DERP.

Is Tailscale more secure than WireGuard?

Packet encryption is identical. Tailscale is more secure operationally for teams — it adds SSO, MFA, ACLs, and device management that raw WireGuard lacks. The tradeoff is a dependency on Tailscale's control server. Your private keys never leave your devices, so Tailscale cannot decrypt traffic. Self-host with Headscale to remove the vendor dependency entirely.

Do I still need WireGuard if I use Tailscale?

No. Tailscale includes wireguard-go, so WireGuard is already handling encryption without any separate install or config. You only choose raw WireGuard instead when you want in-kernel speed, no third-party coordination server, or a setup small enough that manual peer configuration isn't a maintenance burden.

Is Tailscale free, and can I self-host it?

Tailscale's Personal plan is free forever for up to 6 users (non-commercial use); paid plans start at $8/user/month. You can self-host the coordination server with Headscale, a BSD-3-Clause open-source implementation of the Tailscale control server, or use NetBird, another open-source WireGuard-based mesh. The WireGuard protocol itself is always free under GPLv2.

Editor's note — sources

  • WireGuard (wireguard.com) — protocol and kernel module, author, cryptography, GPLv2, and "key distribution... out of scope."
  • WireGuard for Linux 5.6 announcement (lists.zx2c4.com, 30 March 2020) — first release shipped in kernel 5.6.
  • How Tailscale works (tailscale.com/blog/how-tailscale-works) — wireguard-go, coordination server as key drop box, private key never leaves the device, DERP relays.
  • Tailscale pricing (tailscale.com/pricing) — Personal free up to 6 users, Standard $8/user/mo, Premium $18/user/mo.
  • Tailscale, "More throughput" (tailscale.com/blog/more-throughput) — kernel 11.8 Gbit/s vs wireguard-go 8.36 baseline / 13.0 optimized.
  • Headscale (github.com/juanfont/headscale) — BSD-3-Clause self-hosted implementation of the Tailscale control server.

Get Edgewisely in your inbox

Business stories that matter, free. Enter your email — no password, no account to set up.
jamie@example.com
Subscribe