Proxy Protocols · Clash documentation

Hysteria

Configure Hysteria 1.x outbound proxies in the Clash ecosystem using current Mihomo fields, including authentication, transport modes, bandwidth, port hopping, and QUIC parameters.

  • auth-str
  • Bandwidth
  • Port hopping
  • QUIC
  • obfs
Proxy Protocols

First confirm that this is Hysteria 1.x

type: hysteria corresponds to Hysteria 1.x. It is built on QUIC, but its protocol format is completely incompatible with Hysteria2; the client and server must use the same protocol generation.

A valid Hysteria node requires at least a name, type, server, port, and valid up and down. Whether authentication may be empty depends on the server, but when authentication is enabled you must provide the matching auth-str or auth

nameRequired
The node name used by policy groups.
type: hysteriaRequired
Explicitly selects a Hysteria 1.x outbound; it is not an alias for Hysteria2.
server / portRequired
The server address and base port. The official configuration still requires port even when ports is used.
up / downRequired
Enter valid, nonzero upload and download rates. A missing value or one parsed as 0 prevents the node from being created.

Authentication and transport mode

Hysteria 1.x accepts authentication as either a plain string or a Base64 field. The transport mode controls how QUIC packets are sent on the wire and must match the server's capabilities.

auth-strAuthentication
Enter the server authentication string directly. This is the most common format and the easiest to verify.
authAuthentication
Enter the Base64-encoded authentication bytes. When both this and auth-str are present, the current implementation gives auth priority.
protocolDefault: udp
Options are udp, wechat-video, and faketcp. If omitted, udp is used.
obfsOptional
Enter the Hysteria 1.x XPlus obfuscation string, not Hysteria2's salamander or gecko type.
obfs-protocolCompatibility field
Supports compatibility with some Stash configurations. When present, it overrides protocol. Standard configurations should use protocol.

Bandwidth and congestion control

up and down provides the rate input for Hysteria 1.x Brutal congestion control. Without a unit, the value is interpreted as Mbps; explicitly use a format such as 30 Mbps .

These values are neither the advertised bandwidth of your service plan nor settings where higher is always faster. Values above the current link's achievable rate cause persistent congestion.

Hysteria bandwidth fields
FieldDirectionGuideline
upClient uploadDo not exceed the stable upload rate of the current network
downClient downloadsDo not exceed the stable download rate of the current network
UnitBoth fieldsExplicitly use Mbps; a value without a unit is also treated as Mbps

Port hopping

Hysteria 1.x can switch among multiple UDP ports.ports accepts a single port, a range, or combinations separated by commas or slashes, but the base port still cannot be omitted.

portRequired
Keep one base server port even when ports is also configured.
portsOptional
For example, 1000,2000-3000,4000. The server firewall and forwarding rules must open the same set of UDP ports.
hop-intervalDefault: 10 seconds
Controls the port-switching interval. Hysteria 1.x uses whole seconds.

TLS and QUIC parameters

Hysteria 1.x requires TLS 1.3. Unless the server explicitly requires it, do not copy Hysteria2's h3 ALPN. When alpn is omitted, the current core uses hysteria

sniTLS
Sets the server name that matches the certificate; when omitted, uses server.
alpnDefault: hysteria
Override only when the server uses a different ALPN. Do not enter h3 merely because the protocol is based on QUIC.
skip-cert-verifyRisk
Skips certificate validation. Use only for testing or self-signed deployments that explicitly require it.
name-cert-verify / fingerprintTLS
Specify the certificate-name validation target and pin the certificate fingerprint, respectively.
recv-window-connAdvanced
Adjusts the receive window for an individual QUIC stream; usually keep the default.
recv-windowAdvanced
Adjusts the receive window for the entire QUIC connection. Increasing it blindly only uses more memory.
disable-mtu-discoveryAdvanced
Disables path MTU discovery. Use only after confirming an MTU issue on the platform or link.
fast-openDefault: false
Reduces connection setup latency but changes when destination reachability is confirmed.

Hysteria and Hysteria2 field comparison

Both protocol generations use UDP and QUIC, but their authentication, obfuscation, and bandwidth semantics differ. Generate a new node when migrating instead of mechanically renaming fields.

Configuration differences between Hysteria 1.x and Hysteria2
AreaHysteria 1.xHysteria2
Authenticationauth-str or authpassword
Transport modeudp、wechat-video、faketcpQUIC over UDP; does not use protocol
Bandwidthup and down Must be validOptional by direction; enables Brutal when provided
Obfuscationobfs Stringsalamander or gecko plus obfs-password
CompatibilityConnects only to Hysteria 1.x serversConnects only to Hysteria2 servers

Base example and common misconfigurations

The example below depends on matching authentication, SNI, and bandwidth limits from the server. When alpn is omitted, the Hysteria 1.x default is used.

  • Using Hysteria2's passwordobfs-password or salamander field by mistake.
  • Omitting up or down, or setting either value to 0, prevents the node from being created because the rate is invalid.
  • Setting ALPN to h3 while the server still uses the Hysteria 1.x default, hysteria.
  • Removing port after enabling ports, which violates the current Hysteria configuration requirements.
YAML
proxies:
  - name: hysteria-v1
    type: hysteria
    server: server.example.com
    port: 443
    auth-str: replace-with-server-auth
    protocol: udp
    up: "30 Mbps"
    down: "200 Mbps"
    sni: server.example.com
    skip-cert-verify: false