Hysteria2 Explained: QUIC Performance and Network Requirements

Learn how QUIC and congestion control affect Hysteria2 performance, what to expect on high-loss and long-distance links, and what to check when UDP is restricted.

At a glance

Hysteria2 is a QUIC-based proxy protocol worth testing on networks with available UDP, high round-trip latency, or random packet loss—but it is not guaranteed to be faster than other transports. This guide is for iPhone and iPad users of Shadowrocket who already have their own provider and configuration. It covers transport basics, parameter checks, routing checks, and comparison tests. Users on other platforms can apply the same principles; exact steps depend on the client.

1. How Hysteria2, QUIC, and UDP fit together

In Shadowrocket, Hysteria2 is a connection protocol option—not a speed boost switch or a service plan. Connecting requires a server that supports the protocol, along with the correct address, port, authentication details, and certificate settings. Changing the Type of an existing connection that uses another protocol does not convert it to Hysteria2.

At the transport layer, Hysteria2 uses QUIC, which runs over UDP. UDP itself does not provide in-order delivery or retransmission. QUIC builds on it to provide encryption, acknowledgments, loss detection, reliable streams, and congestion control. So “runs over UDP” does not mean lost web content will never be retransmitted, nor that every application request becomes unreliable.

UDP
QUIC uses UDP at the transport layer, so the network must allow the relevant UDP port
TLS 1.3
QUIC includes an encrypted handshake, but the server certificate still needs to be verified
443
An example of a commonly used deployment port; the actual value must match the server configuration

Hysteria2 can carry both TCP and UDP proxy traffic, but they have different application semantics. Reliable byte streams, such as web traffic, travel over QUIC streams; UDP forwarding typically uses QUIC DATAGRAM, which does not provide the same retransmission guarantees as reliable streams. Judge reliability by the traffic being carried—not just by whether “UDP” appears in the connection name.

2. Why it can be faster: independent streams and congestion control

Assess speed in terms of handshake time, time to first byte, and sustained throughput. QUIC combines transport and encryption handshakes, which can reduce some connection setup round trips. DNS lookup, certificate verification, server processing, and the destination site's response still take time. A fast connection setup does not guarantee faster large-file downloads.

A higher bandwidth value does not simply mean “faster.” For example, if actual stable download capacity is about 50 Mbps but the sending target is set to 500 Mbps, this may cause queueing, extra packet loss, and higher latency. These numbers illustrate how settings relate; they are not test results from this site. Check the current client and server documentation for field names, units, and automatic negotiation behavior.

Bottom line: consider throughput and latency together

If increasing the bandwidth setting barely changes download speed but noticeably worsens page load times, voice latency, or network responsiveness on other devices, revert the setting and remeasure the link's stable usable bandwidth.

3. Which networks may benefit, and what to check first

High latency extends feedback cycles, while random packet loss may cause some congestion control strategies to reduce their sending rate. That makes Hysteria2 worth testing on long-distance links with some random packet loss and a working UDP path. But the cause of packet loss matters: random loss from wireless interference calls for a different assessment than loss caused by congestion at the network's egress.

Network conditionsWhat you may noticeWhat to check first
Long distance, random packet lossSustained transfers may be steadier, while short requests are still affected by round-trip latencyCompare time to first byte and sustained throughput on the same network and at the same time
Low latency, low packet lossThe difference may be small; server egress could also be the bottleneckKeep stable settings; don't infer speed from the protocol name
UDP blockedHandshake times out; TCP websites work, but Hysteria2 cannot connectCheck that UDP is allowed on the server, then test again on another network
UDP throttledConnection succeeds but sustained transfers are very slow, or slow down after a whileDistinguish network-operator policies, server limits, and wireless congestion
Path MTU issueSmall requests work, but large transfers stall or time out repeatedlyAsk the network administrator to check large UDP packets and path MTU; don't change multiple settings blindly

QUIC Initial datagrams must be at least 1,200 bytes. If the path cannot carry UDP datagrams of that size, the handshake may be affected. A successful ping alone does not rule this out: the protocol, packet size, and path policies used by ping are not equivalent to those of an actual QUIC connection.

UDP 443 and TCP 443 are separate traffic types that may be allowed or blocked independently. If a website opens over HTTPS, that only suggests the relevant TCP service may be reachable; it does not prove UDP 443 is open. If the server actually uses UDP 8443, enter 8443 in the client. Changing the port to 443 will not make the connection work by itself.

4. Check and test an existing configuration in Shadowrocket

The steps below use the Home screen on iPhone and iPad. Save your current working configuration first, then add the Hysteria2 settings you already have. If a subscription you already use manages the configuration, check the imported settings first to avoid mistaking a temporary manual change for a persistent one after an update. This guide does not provide, sell, or recommend connection services or subscriptions.

  1. Check the parameters

    Have the server address, UDP port, authentication password, and any required SNI and optional obfuscation parameters ready. Use the port configured on the server. The certificate domain can differ from the connection address, but it must meet certificate verification requirements.

  2. Add a connection

    Go to Home → tap “+” in the upper-right corner → Type, select Hysteria2, enter your existing settings, and save. If you already use a subscription, go to Home → “+” → Type → Subscribe to import it, then check the protocol and port on the generated entry.

  3. Check the certificate

    Check the SNI and certificate domain against the values provided by the server, and make sure the device clock is correct. If certificate verification fails, check the domain, validity period, and certificate chain first; disabling verification is not a routine fix.

  4. Isolate routing

    On Home, select the connection you want to test, temporarily set Global Routing to Proxy, then turn on the connection toggle at the top. Send a request to a fixed destination that you are allowed to test. Restore the previous Global Routing setting when you are done.

  5. Keep conditions consistent

    Note the Wi-Fi or cellular network in use, test time, and observed behavior. If Settings → On Demand is enabled, make sure automatic connections won't interfere with manual disconnects or switching. Restore the original setting after testing.

Connectivity Test on Home can give you an initial indication of reachability and latency, but it cannot replace a sustained download, time-to-first-byte check, or real-time application test. A low latency reading only reflects the response on that test path. It does not show that every website uses the same connection or prove that throughput is higher.

5. How Global Routing and rules affect tests

Hysteria2 determines how the selected proxy connection transports traffic; Global Routing determines how requests are routed. If a rule sends a test request to DIRECT, selecting a Hysteria2 entry on Home does not mean that request's speed measures Hysteria2. Confirm which route the request uses before comparing protocol behavior.

Config

Recommended

Let the rules in your current configuration determine the request path. After checking the configuration, use it for everyday connections and verify with rule matching that the request under test goes through PROXY.

Best for: everyday rule-based routing and verifying a specific rule match

Proxy

Route requests handled by the client through the proxy to temporarily reduce interference from routing rules. If the connection fails, still check the protocol settings and network reachability.

Best for: temporarily isolating rule effects and checking the selected connection

Direct

Use a direct path without the selected proxy connection. This can establish a baseline when the destination allows direct access, but the result says nothing about the quality of the route from the proxy server to the destination.

Best for: checking the direct connection baseline between your local network and the destination

For example, in the active configuration under Config, the Rule snippet below routes example.com and its subdomains through PROXY, sends the specified private IP ranges through DIRECT, and handles all other requests with FINAL. This is only a rule syntax example; it does not include a working server. Check the selected connection to confirm the actual egress used by PROXY.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
FINAL,DIRECT

Rules are matched in order, so keep FINAL at the end. The example uses example.com to illustrate suffix matching; do not use it as a speed test destination. To check your own business domain, understand the existing rules before editing the relevant conditions, then save and enable the correct configuration. If the configuration is not enabled or Global Routing is still set to Direct, editing rules will not produce the expected result.

6. How to run a repeatable comparison test

A reliable comparison changes as few variables as possible. Servers may differ completely in location, egress, load, and route, so you cannot attribute the difference between downloads from two different servers to the protocol alone. When possible, compare the same server, similar times, the same destination, and the same device. If these conditions cannot be controlled, limit your conclusion to “the performance of these two connections under current conditions.”

Bottom line: connect first, then compare speed

For a handshake timeout, check UDP reachability first. For a certificate error, check SNI and the certificate. Once connected, evaluate sustained throughput and latency. Keep the current Hysteria2 settings only if repeated tests show a consistent improvement for your actual use.

Hysteria2 is most suitable when the server is configured correctly, the UDP path is available, and the sending strategy matches link capacity. It can improve some transfers affected by packet loss and latency, but it cannot fix an incorrect password, an invalid certificate, or a blocked network path. For more configuration syntax, see the Rules Reference. For your first connection and VPN configuration permissions, follow the Getting Started Guide step by step.

Download Shadowrocket for all platforms