Protocol comparison

Which VPN Protocol Should You Use?

ProofKit offers three user transports that share the same routes, the same pay-per-GB billing, and the same non-custodial TON escrow. This is a plain-English guide to VLESS Reality, Hysteria2, and XHTTP, and when each one is the right pick against deep packet inspection.

VPN protocols comparedVLESS Reality vs Hysteria2XHTTP vs Realitybest anti-DPI protocolQUIC vs TCP VPN
Protocol
VLESS Reality
Route
Direct or 2-hop
Payment
TON · pay/GB
Escrow
Non-custodial

01 /VLESS Reality: the universal default

Reality runs over TCP and makes the first handshake look like an ordinary TLS 1.3 connection to a real website, defeating DPI signatures and active probing. It has the best latency, the widest client support, and works anywhere TCP works. It is the right default for most users. Its one weakness is that a raw tunnel is a single long flow that L4 behavioral analysis can sometimes flag. See the VLESS Reality VPN page for the deep dive.

02 /Hysteria2: throughput where UDP is open

Hysteria2 runs over QUIC/UDP with Salamander obfuscation that XORs the entire packet, hiding the SNI completely. It usually offers higher throughput at slightly higher latency, and it survives where TCP transports are throttled but UDP is allowed. The tradeoff: it needs an Xray-core client, and it is the wrong pick on networks that throttle UDP or QUIC. See the Hysteria2 VPN page.

03 /XHTTP: stealth that stays on TCP

XHTTP wraps VLESS in HTTP-shaped, padded request/response transactions under REALITY camouflage, so the flow looks like a browser hitting a site and beats behavioral DPI that plain Reality-TCP can trip. It stays on TCP, so it works where UDP is throttled, and it can be fronted by a CDN. Its SNI is on the wire, so it uses a same-region camouflage domain. See the XHTTP VPN page.

04 /A quick way to choose

Start with VLESS Reality. If your network throttles your Reality tunnel but allows UDP, try Hysteria2 for more throughput. If UDP is blocked or you need to beat behavioral DPI on TCP, use XHTTP. You do not have to commit: your subscription bundles every transport a route supports, and an Xray-core client can url-test and auto-select the fastest one that works.

05 /Same economics on every transport

Whichever protocol you choose, billing is identical: pay per measured GB in non-custodial TON escrow, no monthly subscription, and optional 2-hop routing where an entry node forwards encrypted traffic to the exit. You are choosing a stealth and speed profile, not a different pricing plan.

// faq

Common questions

Which ProofKit protocol is best against DPI?

It depends on the network. VLESS Reality defeats DPI signatures and active probing on TCP and is the universal default. Hysteria2 hides the whole packet over UDP and helps where TCP is throttled. XHTTP beats behavioral DPI while staying on TCP and can be fronted by a CDN. The marketplace lets you switch between them.

Do I have to pick one protocol up front?

No. Your subscription bundles every transport a route supports, and an Xray-core client can url-test and auto-select the fastest working one. An advanced Xray JSON profile can also add hands-off Reality-to-Hysteria2 failover.

Is one protocol more expensive than another?

No. All three transports share the same pay-per-GB pricing, the same 2-hop options, and the same non-custodial TON escrow. The protocol only changes the stealth and speed profile, not the price.

Which clients support all three?

Xray-core based clients such as Happ, v2rayNG, and v2rayN support all three transports, including Hysteria2 and XHTTP. VLESS Reality on its own also works with a wider set of clients like Hiddify, Streisand, and NekoBox, but for Hysteria2 and XHTTP you specifically need an Xray-core client.

// ready to try it

Browse nodes by protocol

Pick a route by country, price, uptime, and proof status. Pay only for traffic you actually use. Unused TON balance is withdrawable from the escrow, subject to pending charges.

~/proofkit — quick start
$ proofkit auth --wallet
→ signed in as UQAv4F…D9Q
$ proofkit connect --auto
→ session live · 0.0046 TON/GB
proof sha256:c0a4e1ad…b7f9