Protocol comparison

Which VPN Protocol Should You Use?

ProofKit nodes offer VLESS Reality on every node and, on most, Hysteria2, XHTTP and olcRTC as well. They reach the same node but hide your traffic in different ways, so each one gets stopped in different places. Here is how they compare and how to switch when one stops working.

Several transports1 subscription URLPay per GBSwitch in the app
Transports
Several
Default
Reality
Needs UDP
Hysteria2
Video call
olcRTC

01 /At a glance

 VLESS RealityHysteria2XHTTPolcRTC
Looks likeAn HTTPS visit to a real websiteRandom UDP bytes, no headerWeb requests to a real websiteA video call
Runs overTCP, port 443UDP, port 443 by defaultTCP, its own port (8444 by default)WebRTC, through the video service
Your device connects toA ProofKit nodeA ProofKit nodeA ProofKit nodeThe video service only
SpeedFast, lowest latencyFast, best on lossy linksClose to Reality, some overheadSlowest: what a call can carry
Stopped byA blocked node address; allowlist-only networksBlocked or throttled UDP; a blocked node addressNetworks open only on 80/443; a blocked node addressBlocked video services; a full room
2-hop routeYesYesYesNot needed
AppsGhostlane, Happ, Hiddify, V2RayNG, Streisand, NekoBox, V2RayNGhostlane, Happ, Hiddify, V2RayNGXray-core apps: Ghostlane, Happ, V2RayNG, V2RayNGhostlane

On a narrow screen the table scrolls sideways. Every transport ends at the same exit node, and websites see that node's IP address whichever one you use.

02 /VLESS Reality: the default

Every node offers it and nearly every app runs it. The connection is a real TLS 1.3 handshake on port 443 that borrows a large website's name and certificate; a probe that knocks on the node gets that website. It has the lowest latency and is the right first choice. It fails when the node's address is blocked or only approved services are reachable. More on VLESS Reality

03 /Hysteria2: when UDP gets through

QUIC over UDP with Salamander, which scrambles every packet so no QUIC header or server name is visible. It copes best with lossy mobile links and gets through where long TCP sessions are throttled. It does not connect at all where UDP is blocked, which is common on mobile and corporate networks. More on Hysteria2

04 /XHTTP: TCP with a different shape

The same REALITY handshake as Reality, but the traffic moves as separate HTTP requests and responses instead of one long stream, for networks that flag long, steady TLS sessions. It needs an Xray-core app and uses its own TCP port, so it fails where only ports 80 and 443 are open. It is not fronted by a CDN: your app connects to the node. More on XHTTP

05 /olcRTC: when little else gets through

Your app joins a video call on a major video-conferencing service and the node sits in the same call, so your device never contacts the node. It works where only approved services are reachable, and it carries UDP, so calls and games work. It is the slowest of these, each node takes only a few olcRTC users at a time, and it needs an app that implements olcRTC, such as Ghostlane. More on olcRTC

06 /How to choose and switch

  1. Start with Reality.
  2. If Reality is slow or keeps getting cut and UDP works on your network, try Hysteria2.
  3. If UDP is blocked too, try XHTTP.
  4. If none of them connect, or only a few approved services are reachable, use olcRTC. If foreign addresses are blocked outright, a 2-hop route through an entry node also helps the first three.

You do not need a new link to switch. In the dashboard's Subscription URL block, set Transports in subscription to All and every route appears once per transport.

The list for Happ, Hiddify and V2RayNG carries Reality, Hysteria2 and XHTTP; the list for Ghostlane carries olcRTC too.

07 /One app for Reality, Hysteria2, XHTTP and olcRTC

Each transport fails in a different place, so the setup that helps is the one where the next transport is a tap away. Ghostlane, an open-source client, runs Reality, Hysteria2, XHTTP and olcRTC in one app, and of the apps in the table it is the only one that runs olcRTC. On Android and on a computer its Smart connect checks an exit's transports before connecting and uses the first that gets through, ending on olcRTC in the same country.

Ghostlane open source

One app for VLESS Reality, Hysteria2, XHTTP and olcRTC, on iPhone, iPad, Android, macOS, Windows and Linux.

Download on the App Store Get it on Google Play

If you already use Happ, Hiddify, V2RayNG or Streisand, keep it: it goes on working for the transports it runs (the Apps row of the table says which), and the guides for Hiddify and V2RayNG cover the setup. Ghostlane setup, step by step

08 /What about WireGuard and OpenVPN?

Both are fast, well-studied VPN protocols, but neither was built to hide. Each opens with a fixed, recognisable handshake, and filters in several countries block them by that signature. ProofKit therefore does not offer them to your device. WireGuard appears only inside a 2-hop route, as the default tunnel between the entry and exit nodes (other tunnel types are used where it is blocked); your traffic inside it is already encrypted by the transport you connected with.

09 /What each transport costs

The transport changes how your traffic looks. Reality, Hysteria2 and XHTTP cost the same: the node's per-GB price plus the 20% network fee, locked when you connect, from your TON deposit in escrow. olcRTC costs the same until 20 November 2026; from then on it has one network-wide price per GB, read when the traffic moves and starting at 0.0208 TON (about $0.03). The olcRTC page lists the steps. Unused balance can be withdrawn.

// faq

Common questions

Which protocol is best against DPI?

It depends on what your network blocks. Reality survives signature matching and active probing and is the best first choice. Hysteria2 helps where TCP is throttled but UDP works. XHTTP helps where long TLS sessions are flagged. olcRTC works where only approved services, such as major video-call services, get through.

Which apps run which protocol?

Ghostlane, an open-source client, runs Reality, Hysteria2, XHTTP and olcRTC. Reality also runs in nearly every other app: Happ, Hiddify, V2RayNG, Streisand, NekoBox, V2RayN. Hysteria2 also runs in Happ, Hiddify and V2RayNG. XHTTP needs an Xray-core app such as Happ, V2RayNG or V2RayN. olcRTC needs an app that implements it, and of these only Ghostlane does.

Do I have to pick one protocol up front?

No. Set Transports in subscription to All and your app gets every transport of every route as separate entries, so you can switch in the app without a new link. Some apps can also test the entries and pick a working one.

Why doesn't ProofKit offer WireGuard or OpenVPN?

Both start with a fixed handshake that filters can recognise, and several countries block them that way. ProofKit uses WireGuard only between the entry and exit nodes of a 2-hop route, where your traffic is already encrypted by your transport.

Is one protocol more expensive than another?

Reality, Hysteria2 and XHTTP cost the same: the node's per-GB price plus the 20% network fee, locked when you connect. olcRTC costs the same until 20 November 2026; from then on it has one network-wide price per GB, read when the traffic moves and starting at 0.0208 TON (about $0.03).

// ready to try it

Test them on your own network

Connect to a node, set your subscription to All, and try each transport where you actually use the internet. You pay only for the traffic that goes through.

~/proofkit — one route, set to All
# entries in your app
<node> Direct
<node> Direct · Hysteria2
<node> Direct · XHTTP
<node> via <entry> # 2-hop