ForestVPN vs WireGuard: measured, Oct 2026
ForestVPN against the WireGuard protocol and the three ways to run it, on the same hardware: throughput, CPU, memory, latency, and where we lost.
Last updated October 8, 2026
How we compared. Our own numbers are measured, on the hardware and software named below, and the method is published in the throughput post. Everything about WireGuard is quoted from its own pages, with the date we read them. WireGuard is a protocol and open-source software you run yourself; ForestVPN is a service with apps that uses the same handshake. The fair comparison is the implementation, not the product, so the measured rows compare our tunnel core with the WireGuard implementations. We did not run any WireGuard service.
Comparison matrix
| Feature | ForestVPN | WireGuard | Checked |
|---|---|---|---|
| What it is | A VPN service: apps for iPhone, iPad, Mac, Apple TV, Android, Android TV, Windows and Linux, plus a router container | A protocol and open-source software; you run both ends | 2026-10-08 [1] |
| Handshake | Noise_IKpsk2, unmodified | Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s | 2026-10-08 [2] |
| Platforms with an official client | iPhone, iPad, Mac, Apple TV, Android, Android TV, Windows, Linux | Windows, macOS, iOS, Android, Linux, FreeBSD, OpenBSD, OpenWrt | 2026-10-08 [1] |
| Routers | A RouterOS 7 container, live. See the router feature | OpenWrt is on its install page; RouterOS 7 ships its own WireGuard-protocol server, which we measured | 2026-10-08 [1] |
| Throughput on two MikroTik routers | 122 Mbit/s | 66.8 Mbit/s (RouterOS's own tunnel) | 2026-09-01, ours |
| Throughput in our lab, one core pinned | 1535 Mbit/s | 1376 (kernel module), 1228 (wireguard-go), 1427 (boringtun) | 2026-08-31, ours |
| Price | Free; Premium from $7.99 a month (pricing) | You pay for the server you run it on | 2026-10-08 |
| What is kept | An itemised list on the security page | WireGuard is software: what is logged depends on whoever runs your server | 2026-10-08 |
| Independent audit | None published on this site | The protocol has been formally verified by several groups | 2026-10-08 [3] |
Architecture and performance
ForestVPN's tunnel core started as boringtun, Cloudflare's userspace Rust implementation. It keeps the WireGuard handshake as it is and adds what surrounds it: roaming, MTU handling and fallback transports. The exits it talks to are ours.
We measured the core against the implementations people actually run: the Linux kernel module, wireguard-go, and boringtun.
- On two MikroTik routers, over a real gigabit LAN: 122 Mbit/s against 66.8 Mbit/s for the router's own tunnel, at 0.53 against 1.10 percent of CPU per Mbit/s. The two sides used different traffic generators because no single one runs on both, so each is also shown against its own no-tunnel ceiling: our core kept 65 percent of its ceiling, the router's tunnel 30 percent.
- In a four-VM lab, with both Rust cores pinned to one thread so the comparison is of datapaths and not of defaults: 1535 Mbit/s for our core against 1376 for the kernel module, 1427 for
boringtunand 1228 forwireguard-go. Peak memory was 3.5 MB for ours and 34.8 MB forwireguard-go.
Where we lost, both in the open: round-trip time on the routers was 1.22 ms for our core against 0.92 ms for the kernel tunnel, because our path pays a container network hop and a scheduling turn that an in-kernel path does not. And user-mode CPU in the lab was 0.347 s per Gbit against boringtun's 0.290, a trade for lower system CPU (0.549 against 0.787).
These figures are dated and predate a crypto-crate update that we have not re-run the full comparison against. The harness and the raw results are not public; the post says so and says which part of the thread-count trap anyone can reproduce with public tools.
Encryption and security
Both use the same handshake and, for the handshake, the same primitives: Curve25519, ChaCha20 with Poly1305, BLAKE2s and HKDF. We have not changed the handshake. That matters because the formal analyses of WireGuard cover that protocol and not variants of it, so keeping it unmodified keeps those results about our handshake too.
A proof about a protocol is not a proof about an implementation. No independent verification of our code is published, and we do not claim one. The name of our protocol, Quantum, does not mean it resists quantum computers. Post-quantum key exchange (ML-KEM-1024, mixed into the handshake's existing pre-shared-key slot, so the handshake messages stay unmodified) is built and running on a test server, and it rolls out across our servers as they are upgraded. We will say "post-quantum" without qualification once every server has it.
Sign-in and accounts
WireGuard has no accounts. You generate a key pair per device, exchange public keys, and keep the configuration yourself. ForestVPN has an account number instead of an email and a password; the number is what a subscription attaches to, and how it works is on its own page.
Setup and platforms
WireGuard's official clients cover the platforms in the matrix above, and running it as a service means you set up the server, its firewall and its addresses. ForestVPN's apps connect with no configuration; the exits are run for you. If you want a tunnel to a machine you own, WireGuard is the more direct tool; if you want an exit you did not have to build, that is what ForestVPN sells.
Cost
You pay for the machine you run the other end on. ForestVPN's Free plan has no card and no expiry, and Premium is priced on the pricing page.
Where WireGuard is better
- You can read and run all of it. Its code and its design papers are public; ours are not. If your threat model needs a tunnel with no service operator in the middle, you want WireGuard.
- Its protocol has published formal verification by several independent groups [3]. We have none for our implementation.
- The kernel path has lower latency on a router, 0.92 ms against our 1.22 ms in the measurement above.
- More platforms are supported by the official clients: FreeBSD and OpenBSD are on its install page [1], and are not on ours.
- You choose the exit. With WireGuard you pick the machine and the country; ForestVPN's public locations are ones we run.
The bottom line
If what you want is the protocol, run it. If what you want is a working tunnel, with a status you can read and a fallback when the direct path is blocked, without building the other end, that is the product. On the same routers and the same lab our core moved more traffic for less CPU and memory, and lost on latency; we publish both.
Sources
- WireGuard installation, read 2026-10-08.
- WireGuard protocol and cryptography, read 2026-10-08.
- WireGuard formal verification, read 2026-10-08.
- Throughput per CPU cycle, our measurements of 2026-08-31 and 2026-09-01.
Corrections
None so far. If something on this page about WireGuard is wrong, write to support@fvpn.net with the source and we will check it within three working days and fix it or reply with ours.