Oct 2, 2026 · Protocols · About 9 min read

Shadowrocket Supported Protocols: Shadowsocks, VMess, VLESS, Trojan, Hysteria2 & WireGuard

A quick guide to protocols you can add in Shadowrocket, including Shadowsocks, VMess, VLESS, Trojan, HTTP, SOCKS5, WireGuard, and Hysteria2, with key transport details and settings.

In this guide

Shadowrocket supports several protocols, but the protocol type must match your existing server configuration. Changing Type cannot convert one proxy into another. This guide is for users who already have their own provider and subscription. It explains the difference between protocols, transports, and routing, then covers eight common types, their settings, and a practical order for importing, testing, and troubleshooting connections.

1. Supported protocols and settings at a glance

In Shadowrocket, choose a protocol from Home → tap “+” in the top-right corner → Type. The table below covers eight types discussed in this guide; it is not a complete list of every option in the app. Refer to the current add-server screen for the fields available. Choose a protocol based on your existing connection details, not on assumptions about its speed.

8 types
Protocol types covered here—not the total number supported by the app
443
Common example ports for TLS services; use the values in your connection details
4 options
Proxy / Direct / Config / Scene in Global Routing
Protocol Transport Settings to check first
ShadowsocksUses a specified encryption method to protect proxy traffic; can support TCP and UDP forwardingServer address, port, encryption method, and password; check the plugin settings too if one is used
VMessAuthenticates with credentials such as a UUID and can use different transport methodsServer address, port, UUID, encryption options, transport, and TLS
VLESSAuthentication is separate from the outer transport; the protocol itself does not encrypt dataServer address, port, UUID, transport, and the related security settings
TrojanCommonly deployed with TLS and password authenticationServer address, port, password, SNI, and certificate verification
HTTPUses an HTTP proxy; HTTPS destinations typically establish a tunnel with CONNECTServer address, port, optional username and password, and TLS settings for the proxy connection
SOCKS5A general-purpose proxy protocol that can support TCP and UDP if both ends allow itServer address, port, optional username and password, and UDP support
Hysteria2Based on QUIC and runs over UDPServer address, port, authentication details, SNI, certificate settings, and optional obfuscation parameters
WireGuardAn encrypted tunnel over UDP that identifies peers with keysPrivate key, peer public key, endpoint, tunnel addresses, and optional preshared key

Bottom line: choose Type to match your server details

First confirm the protocol specified in your existing connection details, then enter each setting. A server address and port alone are not enough to recreate a connection. If authentication, transport, or security settings are missing, get the original details rather than cycling through Type options.

2. Protocol, transport, TLS, and routing are different layers

The protocol defines how the client and server authenticate and handle data. TCP, UDP, and WebSocket describe transport methods or how traffic is carried. TLS provides encryption and identity verification for the relevant connection. Global Routing determines how requests are routed. These can all appear in one configuration, but changing one layer will not automatically fix another.

Home is for managing connections and records, Config is for configuration files, and Settings is for app settings. With Config routing, check the rules in the active configuration to see where traffic goes. With Scene, check the selected scene. Settings → On Demand controls condition-based connection triggers; it does not convert protocols or configure proxy authentication.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

The rules above are syntax examples, not a usable server configuration. DOMAIN-SUFFIX matches domain suffixes, IP-CIDR matches address ranges, GEOIP uses IP geolocation data, and FINAL handles traffic that did not match earlier rules. Rules are generally evaluated from top to bottom. These keywords cannot replace a proxy password, UUID, or key.

3. Shadowsocks, VMess, VLESS, and Trojan: key differences

Shadowsocks: check the encryption method and password together

A correct Shadowsocks password does not mean the connection settings are complete; the encryption method must also match the server. Do not substitute a method just because its name looks similar to one in your settings. If your existing details specify a plugin, check whether the app provides the corresponding options and verify the plugin’s mode, Host, or path. Plugin settings are not a general-purpose TLS switch.

VMess and VLESS: the same UUID does not make them interchangeable

Both protocols may use a UUID, but their authentication and data handling differ. For VMess, check the UUID, encryption options, and transport settings required by the server. If authentication fails, also check the device’s date and time. VLESS does not encrypt data by itself; connection security depends on the outer security and transport settings. A UUID is not an encryption setting.

Trojan: check TLS as well as the password

A typical Trojan configuration includes a server address, port, password, and SNI. Port 443 is a common choice, not a requirement. If the certificate name differs from the connection address, check the SNI specified by the server rather than disabling certificate verification. A wrong password and a certificate verification failure occur at different stages.

4. Hysteria2, WireGuard, HTTP, and SOCKS5: what to check

Hysteria2 and WireGuard both rely on UDP, but they are different protocols. Hysteria2 is based on QUIC; check its authentication, TLS, and any optional obfuscation settings. WireGuard uses public and private keys and tunnel addresses, so you need the complete peer configuration. UDP connectivity alone does not confirm that authentication, tunnel routing, or DNS is configured correctly.

TypeSettings to distinguishFirst checks when the connection fails
Hysteria2Authentication details and the obfuscation password may serve different purposesCheck whether the current network allows UDP traffic to the specified port, then verify authentication and the certificate name
WireGuardDo not swap the local private key and peer public key; the tunnel address is not the server endpointCheck that the endpoint, key pair, tunnel addresses, and allowed routes are all complete
HTTPVisiting an HTTPS website does not automatically enable TLS between the client and proxyCheck TLS requirements for the proxy connection, the username and password, and whether the server allows CONNECT
SOCKS5The protocol itself does not encrypt transport; TCP support does not guarantee UDP supportCheck the authentication method, server-side UDP support, and network reachability

Do not assume a protocol name tells you how fast a connection will be. Throughput and latency also depend on the network path, packet loss, server load, and bandwidth limits. When comparing existing connections, keep the test network, destination, and time as consistent as possible, and record success rates and specific errors. A single latency reading cannot show that one protocol is better on every network.

5. Add and test a connection from an existing subscription or configuration

A subscription is a way to retrieve multiple connection entries; it is not a ninth transport protocol. One subscription can include several protocols, and its entries may change when updated. This guide assumes you already have your own provider and subscription. Keep the original connection details before making changes, and treat subscription URLs and authentication details in share links as sensitive information.

  1. Check the original connection details

    Confirm whether you have a subscription URL or details for a single proxy. A subscription URL may look like https://example.com/sub?token=xxxx; this is a dummy example and cannot be used to connect. Do not enter it as the proxy server address.

  2. Choose how to add it

    To import an existing subscription, go to Home → tap “+” in the top-right corner → Type → Subscribe, then enter and save your complete subscription URL. To add a proxy manually, choose the protocol specified in your connection details under Type—not Subscribe.

  3. Check the imported settings

    After saving and updating the subscription, return to Home and check the imported entries. Open the one you want to use and verify its Type, address, and port. If it has TLS or extra transport settings, compare each field with the original details; do not check only the display name.

  4. Check the test routing

    Select the entry to test in Home, then check Global Routing. To rule out the effect of rules, you can temporarily select Proxy for a regular web request, then restore the original routing. Avoid changing the protocol, DNS, and multiple rules at the same time.

  5. Verify the connection

    Connect and allow the VPN configuration if prompted by the system, then check whether you can reach your destination. To check automatic connection behavior, go to Settings → On Demand afterward. Troubleshoot manual connection issues separately from automatic trigger issues.

Updating a subscription fetches the remote entries again; it does not update the app, and it may not preserve manual changes to individual entries. If the protocol, port, or name changes after an update, compare the old and new details first. If the list is empty, check the subscription response and make sure the URL is complete before concluding that the app does not support a particular protocol.

6. Protocol and connection troubleshooting: FAQs

I only have a server address and port. Can I choose Trojan?

That is not enough to identify the protocol. Trojan also requires a password and the correct TLS settings; other types may require a UUID or keys. Check your existing connection details for the protocol name and all required fields, then choose the matching type under Home → “+” → Type.

Why won’t it connect after I change VLESS to VMess?

Type is not just a display label; it determines which protocol is used. Changing the type to VMess does not make a remote VLESS server accept VMess. Restore the original Type, then check the UUID, transport, and security settings.

Why does Hysteria2 work on one network but fail on another?

Keep the connection settings unchanged and check whether UDP is reachable on both networks. Some networks may restrict UDP. If you see a TLS or authentication error, check SNI, the device’s date and time, and the authentication fields. A timeout alone does not mean the password is wrong.

It says connected. Why won’t websites load?

A VPN connection status does not mean the remote proxy request succeeded. First check the selected entry in Home, then see whether Global Routing is set to Direct. With Config, check the matching rules and final policy. Troubleshoot domain resolution separately from proxy authentication.

Can one subscription include different protocols?

Yes, as long as its response uses a format the app can parse and includes the settings each entry requires. Check the Type for each entry after importing. If an entry is missing, check the subscription response and that entry’s format; do not change the Type of another entry to compensate.

Verify Shadowrocket on the App Store