AmneziaWG: How the WireGuard Fork Slips Past DPI and What It Breaks

Of 543 consumer VPNs in our data, 76 say they do not offer it. Below: the services that rank highest for it.

9consumer VPNs offer it
458do not say

AmneziaWG is an open-source fork of WireGuard that keeps the original cryptography but changes what the packets look like on the wire, making the tunnel far harder for deep packet inspection to fingerprint and block. Both ends must speak the modified dialect, and the price is losing compatibility with stock WireGuard apps.

What AmneziaWG actually is

The project is a protocol, not a VPN company. Its reference code is a fork of WireGuard-Go (the userspace implementation), with a separate Linux kernel module and command-line tools. A config looks like an ordinary WireGuard .conf with extra lines in the [Interface] section; strip them and you are back on plain WireGuard. Inside the tunnel nothing changes: the Noise_IK handshake, Curve25519 keys and ChaCha20-Poly1305 encryption are untouched, so WireGuard's security analyses still apply.

Why filters spot plain WireGuard

WireGuard's weakness is its tidiness. Every message opens with a fixed type value (1 initiation, 2 response, 3 cookie reply, 4 transport data), and the handshake messages always arrive at fixed sizes: 148 bytes for initiation, 92 for response, 64 for a cookie reply. The WireGuard protocol description documents this layout. A censor writes one rule matching that type on that length and drops every handshake.

The obfuscation parameters, one by one

Parameter What it does Must match the server?
Jc, Jmin, Jmax count and size range of junk packets sent before each handshake no, client only
S1, S2 random padding on the handshake initiation and response yes
S3, S4 padding on the cookie reply and transport data (newer versions) yes
H1–H4 replacement type values for the four message kinds yes
I1–I5 up to five packets imitating another UDP protocol like QUIC or DNS no, client only

The junk packets carry no data, which is why their size range need not match the server; the README suggests setting Jc to 4–12. Two pitfalls: keep Jmax below the system MTU, because fragmented decoys look suspicious, and never set S2 to S1 + 56, since then the padded initiation and response would come out the same length and could not be told apart by size. The four header values must differ, with non-overlapping ranges, so each side can still tell the four message kinds apart.

Version differences worth knowing

Version 1.0 stamps one fixed number per header value. Version 2.0 accepts ranges with a random value per packet, adds S3 and S4 padding and supports signature packets (I1–I5). After 2.0, the newest releases add header protection over the remaining fixed fields, randomised timers, content padding and an option to stop sending cookie replies, all aimed at defeating statistical analysis. Junk packets precede every handshake in every version, the I1–I5 packets do too once they are configured (version 2.0 era), and WireGuard starts a new handshake about every two minutes to rotate keys. A 2.0 config will not load in a 1.0-only client, and some routers and panels still ship only the older parameter set.

The cost: no plain WireGuard client on the other end

Send a standard WireGuard handshake to an obfuscated server and it lands as noise. No error, no reply; the peer simply never answers. Every device needs an AmneziaWG-aware app with identical S and H values. A completed handshake with no traffic usually means an MTU mismatch (lower the interface MTU), while a wrong padding or header value leaves the server silent from the start.

Where AmneziaWG helps and where it gives up

It was built against Russia's DPI systems and also gets used in other filtered networks such as Iran. UDP is the only transport, so it fails on networks that pass only TCP. The server stays silent to active probes rather than masquerading as a website, which is a fight VLESS with Reality wins. Obfuscation hides that a tunnel exists, not what the provider logs, and a full internet shutdown defeats everything.

How VPNRadarLab counts AmneziaWG support

Of 543 consumer VPNs in the database, 9 say they offer AmneziaWG, 76 say they do not, and 458 publish nothing either way; silence means undisclosed, not missing. Support adds 1 point out of 10.5 in the censorship bypass sub-score, which counts for 15% of the main score and 40% on protocol pages. The ranking of services and apps that support AmneziaWG covers consumer subscriptions, decentralised VPNs, client apps, self-hosted panels, router hardware and a VPS host.

AmneziaWG FAQ

Is AmneziaWG a VPN service?

No. It is a protocol; providers, client apps and self-hosted panels build on it.

Is AmneziaWG slower than WireGuard?

The kernel module runs close to the original; the userspace Go builds behind the desktop and mobile apps burn more CPU. No independent benchmark publishes numbers.

Can I turn a WireGuard config into an AmneziaWG one?

Yes, if you control the server: add matching padding and header lines on both sides, keep the junk and signature settings in the client only.

Does AmneziaWG make me more anonymous?

No. It hides the tunnel's fingerprint; the provider logs exactly what it logged before.

The short version

AmneziaWG keeps WireGuard's cryptography unchanged and alters the traffic's shape: decoy packets, random padding and shuffled header values make the handshake look like noise. Use it when plain WireGuard keeps getting cut off and UDP still passes. Copy the server's parameter values exactly, keep J and I settings on the client, mind the MTU, and remember it will not survive active probing or a TCP-only network. For the side-by-side view, see AmneziaWG vs WireGuard.

Top services: AmneziaWG

  1. CitadelVPN8.55
  2. Xeovo VPN5.05
  3. NymVPN4.49
  4. L×Box4.38
  5. 3X-UI4.09

See the ranking: AmneziaWG