DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

ZeroTier vs Tailscale: Which Mesh VPN to Use?

Quick Verdict

Tailscale is easier to set up and has better tooling. ZeroTier gives you more control over networking. For most self-hosters, Tailscale's MagicDNS, ACLs, and zero-config NAT traversal make it the better choice. Choose ZeroTier if you need virtual Layer 2 networking, want a fully self-hosted controller, or need features like multicast and custom Ethernet bridging.

Overview

Both ZeroTier and Tailscale create encrypted mesh networks across your devices, but they take fundamentally different approaches.

Tailscale builds on WireGuard to create a Layer 3 mesh VPN. It handles IP-level routing with automatic peer-to-peer connections, MagicDNS for name resolution, and centralized ACLs. The coordination server manages key exchange and device discovery.

ZeroTier creates a virtual Layer 2 Ethernet network. Your devices act as if they're on the same physical switch, supporting broadcast, multicast, and protocols that require L2 connectivity. It uses its own encryption stack (Salsa20/Poly1305, Curve25519) rather than WireGuard.

The key difference: Tailscale operates at Layer 3 (IP routing). ZeroTier operates at Layer 2 (Ethernet switching).

Feature Comparison

Feature ZeroTier Tailscale
Network layer Layer 2 (virtual Ethernet) Layer 3 (IP routing)
Encryption Salsa20/Poly1305, Curve25519 WireGuard (ChaCha20-Poly1305)
Mesh topology Full mesh (P2P) Full mesh (P2P)
NAT traversal Automatic (port prediction, hole-punching) Automatic (STUN/DERP)
DNS Manual or ZTNET MagicDNS (automatic)
ACLs Flow rules (L2/L3/L4) HuJSON policies (L3/L4)
Multicast/broadcast Yes (virtual L2) No (L3 only)
SSO integration No (account-based) Yes (Google, Microsoft, GitHub, etc.)
Self-hosted controller Yes (open source, with caveats) Yes (Headscale)
Authentication Account + network join approval SSO (Google, Microsoft, GitHub)
Exit nodes Via routing rules One-click toggle
Subnet routing Yes Yes
Free tier devices 10 (1 network) 100 (3 users)
Client platforms Windows, macOS, Linux, iOS, Android, FreeBSD Windows, macOS, Linux, iOS, Android
Resource usage ~30-50 MB RAM ~30-50 MB RAM
Protocol overhead Higher (L2 encapsulation) Lower (L3 only)
Peer discovery Planet/Moon root servers Coordination server + DERP relays
Cost (paid) $18-179/mo $5-18/user/mo

Installation Complexity

Tailscale: Install the client, log in via SSO, device joins your network. Adding a new device takes under 2 minutes. No network ID to remember, no approval flow unless configured.

ZeroTier: Install the client, run zerotier-cli join <network-id>, then approve the device in the web controller (my.zerotier.com or self-hosted). Slightly more steps but still straightforward.

For self-hosted controllers, ZeroTier has the edge — ZTNET provides a full-featured controller UI. Tailscale's self-hosted option (Headscale) is less feature-complete but actively improving.

Winner: Tailscale for standard usage. ZeroTier if self-hosting the controller is a priority.

Performance and Resource Usage

Both create direct peer-to-peer connections when possible, falling back to relay servers when NAT traversal fails. Performance is similar in practice.

Metric ZeroTier Tailscale
Throughput (LAN) Good (L2 overhead) Excellent (WireGuard kernel)
Throughput (WAN) Good Excellent
Latency (direct) Low Low
Latency (relayed) Moderate Moderate
RAM usage ~30-50 MB ~30-50 MB
CPU usage Low Low

Tailscale has a slight edge on Linux because WireGuard can run as a kernel module. ZeroTier's L2 encapsulation adds marginal overhead.

Community and Support

Metric ZeroTier Tailscale
GitHub stars 14,000+ N/A (clients are open source)
License MPL-2.0 (core), proprietary (controller since 1.16) BSD-3 (client), proprietary (server)
Company ZeroTier, Inc. Tailscale Inc.
Documentation Good Excellent
Community Moderate (forums) Large (active community, blog)
Commercial support Paid plans Paid plans

Important licensing note: ZeroTier 1.16.0 moved the network controller code to a commercial source-available license. The core client remains MPL-2.0, but building with the controller requires ZT_NONFREE=1 and changes the license to proprietary for commercial use.

Use Cases

Choose ZeroTier If...

  • You need Layer 2 networking (multicast, broadcast, ARP)
  • You want to bridge physical networks at Layer 2
  • You want a fully self-hosted controller (ZTNET)
  • You need advanced flow rules for traffic filtering
  • You're connecting IoT devices that require L2 protocols
  • You want more granular network-level control

Choose Tailscale If...

  • You want the easiest possible setup
  • You need MagicDNS for automatic hostname resolution
  • You want SSO integration (Google, GitHub, Microsoft)
  • WireGuard-level performance matters
  • You need polished ACLs with a simple policy language
  • You want exit node functionality with one click
  • You want Funnel for exposing services publicly

Final Verdict

Tailscale wins on ease of use, documentation, and modern tooling. MagicDNS, SSO, and the polished ACL system make it the better choice for most self-hosters connecting their devices and services.

ZeroTier wins on networking flexibility. Layer 2 support, flow rules, and the ability to self-host the full controller give it an edge for advanced networking scenarios.

For the typical self-hoster who wants secure remote access to their services, Tailscale is the better choice. For network engineers who need virtual L2 bridging or complete control over the coordination layer, ZeroTier offers capabilities Tailscale doesn't.

FAQ

Is ZeroTier as secure as Tailscale?

Both use strong encryption. ZeroTier uses Salsa20/Poly1305 with Curve25519. Tailscale uses WireGuard's ChaCha20-Poly1305 with Curve25519. Both are well-audited. As of ZeroTier 1.16, hello packets are also encrypted, closing a previous metadata exposure gap.

Can I self-host both?

Yes. ZeroTier's controller can be self-hosted via ZTNET (with some licensing caveats since 1.16). Tailscale's coordination server can be self-hosted via Headscale.

What's the deal with ZeroTier's license change?

ZeroTier 1.16.0 moved the network controller code from open source to a commercial source-available license. The core client remains MPL-2.0. Personal and non-profit use of the controller is still free, but commercial use requires a license.

Can ZeroTier and Tailscale coexist?

Yes. They use different network interfaces and don't conflict. You can run both on the same device.

Related

Top comments (0)