Getting Started
First, you need to pick a shadowsocks server and client implementation. Any implementation below is compatible with each other.
CLI implementations
- shadowsocks: The original Python implementation.
- shadowsocks-libev: Lightweight C implementation for embedded devices and low end boxes. Very small footprint (several megabytes) for thousands of connections.
- go-shadowsocks2: Go implementation focusing on core features and code reusability.
- shadowsocks-rust: A rust port of shadowsocks.
Feature comparison
| ss | ss-libev | go-ss2 | ss-rust | |
|---|---|---|---|---|
| TCP Fast Open | ✓ | ✓ | ✗ | ✓ |
| Multiuser | ✓ | ✓ | ✗ | ✓ |
| Management API | ✓ | ✓ | ✗ | ✓ |
| Redirect mode | ✗ | ✓ | ✓ | ✓ |
| Tunnel mode | ✓ | ✓ | ✓ | ✓ |
| UDP Relay | ✓ | ✓ | ✓ | ✓ |
| MPTCP | ✗ | ✓ | ✗ | ✓ |
| AEAD ciphers | ✓ | ✓ | ✓ | ✓ |
| Plugin | ✗ | ✓ | ✗ | ✓ |
| Plugin UDP (Experimental) | ✗ | ✗ | ✗ | ✓ |
GUI Clients
- shadowsocks-android: Android client.
- shadowsocks-windows: Windows client.
- shadowsocksX-NG: MacOS client.
- shadowsocks-qt5: Cross-platform client for Windows/MacOS/Linux.
Feature comparison
| ss-win | ssx-ng | ss-qt5 | ss-android | |
|---|---|---|---|---|
| System Proxy | ✓ | ✓ | ✗ | ✓ |
| CHNRoutes | ✓ | ✓ | ✗ | ✓ |
| PAC Configuration | ✓ | ✓ | ✗ | ✗ |
| Profile Switching | ✓ | ✓ | ✓ | ✓ |
| QR Code Scan | ✓ | ✓ | ✓ | ✓ |
| QR Code Generation | ✓ | ✓ | ✓ | ✓ |