V2Ray/Xray Client Setup: Every App on Every Platform

12 min read
Beginner V2Ray Xray Proxy Client Android iOS Windows Censorship Guide

Prerequisites

  • A working proxy server (VLESS, VMess, Trojan, Hysteria2, or Shadowsocks)
  • A proxy link (URI) or subscription URL from your server

Quick Answer: Android: use Hiddify or v2rayNG. iOS: use Streisand. Windows: use v2rayN. macOS/Linux: use Hiddify. Import your proxy link or subscription URL, tap connect.

Need a server first? Set up 3X-UI Panel, Hysteria2, or paqctl.


Need a VPS? Vultr (free credit), DigitalOcean ($200 free credit), or RackNerd (cheap annual deals).

What Are Proxy Clients?

A proxy client is an app on your phone or computer that connects to your proxy server. Your server runs the proxy protocol (VLESS, VMess, Hysteria2, etc.) and the client app routes your internet traffic through it.

Your Phone/PC (Client App)
    |
    | Encrypted proxy connection
    |
    v
Your Proxy Server
    |
    | Forwards to the real internet
    |
    v
Websites, Apps, Services

Without a client app, your proxy server is useless — you need something on your device to actually send traffic through it.

Protocols Supported

Protocol What It Is Client Support
VLESS Modern, lightweight (Xray) All clients below
VLESS+Reality VLESS with stealth TLS All clients below
VMess Original V2Ray protocol All clients below
Trojan Mimics HTTPS traffic All clients below
Hysteria2 QUIC-based, fastest Most clients below
Shadowsocks Classic encrypted proxy All clients below
WireGuard VPN protocol Some clients
TUIC QUIC-based proxy Some clients

How You Get Your Config

Your proxy server gives you one of these:

  1. Proxy link (URI) — a string like vless://uuid@server:port?... that you paste or scan as QR
  2. Subscription URL — a web link that contains multiple proxy configs, auto-updates
  3. Manual config — server address, port, UUID, encryption settings entered by hand

Choosing a Client App

App Platform Best For Protocols
Hiddify Android, iOS, Windows, macOS, Linux Most users (easiest) All
v2rayNG Android Advanced users, most popular on Android VLESS, VMess, Trojan, SS, Hysteria2
Nekobox Android Power users, sing-box core All including TUIC
v2rayN Windows Most popular on Windows All
Streisand iOS Best free iOS option VLESS, VMess, Trojan, SS, Hysteria2
Clash Meta (Mihomo) Windows, macOS, Linux Rule-based routing All
Clash Verge Rev Windows, macOS, Linux Desktop Clash with GUI All
Shadowrocket iOS Best iOS (paid, $3.99) All
sing-box All platforms Advanced, direct sing-box All

My recommendation:

  • Android: Hiddify (easiest) or v2rayNG (most popular)
  • iOS: Streisand (free) or Shadowrocket (paid, better)
  • Windows: v2rayN or Hiddify
  • macOS/Linux: Hiddify or Clash Verge Rev

Part 1: Hiddify

Can't Access Google Play or App Store?

If app stores are blocked or restricted in your country:

  • Android: Download APK files directly from each app's GitHub releases page. All apps listed below are open-source with GitHub releases.
  • iOS: You need an Apple ID from a different region (US or Turkey are common). Create a new Apple ID with a foreign email, switch to it in Settings > Apple ID, then download the app.
  • Transfer: Download on an unrestricted network, then transfer via USB, Telegram, or file sharing.

(All Platforms — Recommended)

Hiddify is the easiest client. One app for Android, iOS, Windows, macOS, and Linux. Open source.

Install

Add Your Proxy

Method 1: Subscription URL (recommended)

If your server (3X-UI, Marzban) gives you a subscription link:

  1. Open Hiddify
  2. Tap + (add profile)
  3. Select Add from subscription link
  4. Paste the URL
  5. Tap Add
  6. Hiddify downloads all your proxy configs automatically

Subscription URLs auto-update — when your admin adds or changes servers, your client gets the new configs automatically.

Method 2: Proxy Link (URI)

If you have a link like vless://... or hysteria2://...:

  1. Copy the link
  2. Open Hiddify
  3. Tap +Add from clipboard
  4. The config appears automatically

Method 3: QR Code

  1. Open Hiddify
  2. Tap +Scan QR code
  3. Point camera at the QR code from your server panel

Connect

  1. Select a profile from the list
  2. Tap the big Connect button
  3. First time: Android/iOS will ask to create a VPN connection — allow it
  4. Status shows "Connected" — you're done

Settings Worth Changing

  • Routing: Set to "Bypass Iran" or "Bypass China" (routes local traffic directly, only foreign traffic through proxy)
  • DNS: Set to "Remote DNS: 1.1.1.1" to prevent DNS leaks
  • Split tunneling: Choose which apps go through the proxy and which don't

Part 2: v2rayNG (Android)

v2rayNG is the most popular Android proxy client. More configuration options than Hiddify but slightly more complex.

Install

Add Config

From subscription:

  1. Tap (menu) → Subscription group setting
  2. Tap + → paste your subscription URL
  3. Tap to save
  4. Back to main screen → Update subscription

From proxy link:

  1. Copy the vless://... or vmess://... link
  2. Open v2rayNG
  3. Tap +Import config from clipboard

From QR code:

  1. Tap +Import config from QR code
  2. Scan

Manual entry:

  1. Tap +Type manually → select protocol (VLESS, VMess, etc.)
  2. Fill in:
Field Value
Remarks Any name
Address Your server IP or domain
Port Server port (443, 8443, etc.)
ID/UUID From your server panel
Flow xtls-rprx-vision (for Reality) or empty
Security reality or tls or none
SNI Server domain (for TLS/Reality)
Fingerprint chrome (for Reality)

Connect

  1. Select your config from the list (tap to highlight)
  2. Tap the V button at the bottom to connect
  3. Allow VPN permission
  4. Connected — icon appears in status bar

Test

Important Settings

Settings → Routing:

  • Bypass mainland China — if you're in China
  • Bypass Iran — if you're in Iran
  • Global — route ALL traffic through proxy

Settings → DNS:

Settings → Fragment (Iran-specific):

  • Enable Fragment: Yes
  • Fragment length: 10-100
  • Fragment interval: 10-50
  • This splits the TLS ClientHello into smaller packets, making it harder for DPI to detect the SNI. Essential for many Iranian ISPs.
  • Remote DNS: 1.1.1.1 or 8.8.8.8
  • Domestic DNS: your local DNS (for bypassed traffic)

Part 3: v2rayN (Windows)

v2rayN is the most popular Windows proxy client. Supports all protocols.

Install

  1. Download from GitHub releases
  2. Extract the ZIP
  3. Run v2rayN.exe
  4. It sits in the system tray (bottom-right)

Add Config

From subscription:

  1. Right-click tray icon → Subscription groupSubscription group setting
  2. Add your subscription URL
  3. Right-click tray icon → Update subscription

From proxy link:

  1. Copy the link
  2. Right-click tray icon → Import bulk URL from clipboard

From QR code:

  1. Right-click tray icon → Scan QR code on screen

System Proxy

v2rayN needs to tell Windows to route traffic through it:

  1. Right-click tray icon → System proxySet system proxy
  2. Or use PAC mode (only proxies blocked sites, faster)

Routing Mode

  • Global: All traffic through proxy
  • Rule-based: Uses rules to decide (recommended — bypasses local traffic)
  • Direct: No proxy (off)

Part 4: Streisand (iOS — Free)

Streisand is the best free iOS proxy client. Supports VLESS, VMess, Trojan, Shadowsocks, and Hysteria2.

Install

Download from the App Store (search "Streisand" or use the link above).

Add Config

  1. Copy your proxy link (vless://...)
  2. Open Streisand
  3. Tap +Add from clipboard
  4. Or tap +Subscription → paste subscription URL

Connect

  1. Select a server from the list
  2. Tap Connect
  3. Allow VPN configuration when prompted
  4. Connected

Routing

  • Settings → Route → select bypass rules for your country
  • This ensures local websites load directly (faster) while foreign sites go through the proxy

Part 5: Shadowrocket (iOS — Paid $3.99)

If you can buy Shadowrocket, it's the best iOS proxy client. More features and better performance than free alternatives.

Install

App Store — $3.99 (one-time purchase).

Note: If the App Store is restricted in your country, you need an Apple ID from a different region (US, Turkey, etc.) to purchase it.

Add Config

  1. Copy proxy link
  2. Open Shadowrocket → it auto-detects and adds it
  3. Or tap + → enter manually

For subscription:

  1. Tap +Type: Subscribe
  2. Paste subscription URL
  3. Tap Done
  4. Pull down to refresh the subscription

Connect

Toggle the switch next to your server. That's it.

Features

  • Per-app proxy — choose which apps use the proxy
  • On-demand rules — auto-connect on certain WiFi networks
  • HTTPS decryption — for debugging (advanced)
  • Scene — save different configurations for home/work/travel

Part 6: Clash Meta / Mihomo (Desktop)

Clash Meta (also called Mihomo) is a powerful rule-based proxy client. It uses YAML config files.

GUI Clients for Clash Meta

Install Clash Verge Rev

  1. Download from GitHub releases
  2. Install for your platform
  3. Open — it runs in the system tray

Add Config

From subscription:

  1. Open Clash Verge
  2. Go to Profiles
  3. Paste your subscription URL in the input field
  4. Click Import
  5. Select the imported profile

From file:

  1. Create a config.yaml with your proxy configs
  2. Import the file in Clash Verge

Clash YAML Format

If your server doesn't provide a Clash subscription, create a config:

proxies:
  - name: "my-vless"
    type: vless
    server: your-server.com
    port: 443
    uuid: your-uuid-here
    network: ws
    tls: true
    servername: your-server.com
    ws-opts:
      path: /your-path
      headers:
        Host: your-server.com

  - name: "my-hysteria2"
    type: hysteria2

  - name: "my-reality"
    type: vless
    server: your-server.com
    port: 443
    uuid: your-uuid-here
    flow: xtls-rprx-vision
    tls: true
    servername: www.yahoo.com
    reality-opts:
      public-key: YOUR-PUBLIC-KEY
      short-id: abcd1234
    client-fingerprint: chrome


    server: your-server.com
    port: 443
    password: your-password
    sni: your-server.com

proxy-groups:
  - name: "Proxy"
    type: select
    proxies:
      - my-vless
      - my-hysteria2
      - DIRECT

rules:
  - GEOIP,IR,DIRECT      # Iran traffic goes direct
  - GEOIP,CN,DIRECT      # China traffic goes direct
  - MATCH,Proxy           # Everything else through proxy

Rule-Based Routing

Clash's power is rules. You can:

  • Route Iran/China traffic directly (bypass proxy for local sites)
  • Route specific apps through specific servers
  • Block ads via rule sets
  • Use different servers for different destinations

Part 7: Subscription URLs Explained

What Is a Subscription?

A subscription URL is a web link that returns a list of proxy configs, encoded in base64. Your client app fetches this list periodically and updates your servers automatically.

https://your-panel.com/sub/your-token

Your client fetches this → decodes base64 → gets a list of proxy URIs:
vless://uuid1@server1:443?...
vless://uuid2@server2:443?...
hysteria2://pass@server3:443?...

Why Use Subscriptions

  • Auto-update: When the admin adds/removes servers, your client updates automatically
  • Multiple servers: One URL gives you access to many servers
  • Failover: If one server gets blocked, switch to another from the list
  • Rotation: Client can auto-select the fastest server

Where to Get One

  • 3X-UI Panel: Each user gets a subscription link in the panel
  • Marzban Panel: Same — per-user subscription URLs
  • Manual: You can host a simple text file with base64-encoded proxy URIs on any web server

Subscription Types

Different clients need different formats:

Format Clients
V2Ray Base64 v2rayNG, v2rayN, Streisand
Clash YAML Clash Meta, Clash Verge, FlClash
sing-box JSON sing-box, Hiddify (auto-converts)
SIP008 Shadowsocks clients

Most modern panels (3X-UI, Marzban) generate all formats. Hiddify auto-converts between formats.


Part 8: Troubleshooting

When Your Config Stops Working

In censored countries, configs that worked yesterday can die overnight. Here's what to do:

  1. Switch protocol -- If VLESS+Reality stops working, try Hysteria2 or vice versa
  2. Change port -- Try 8443, 2083, 2087 instead of 443
  3. Update subscription -- Pull down to refresh in your client app (new servers may have been added)
  4. Try a different server -- If you have multiple servers in your subscription, switch
  5. Check cfray -- If using CDN, your clean Cloudflare IP may have gone dirty. Scan for new ones with cfray
  6. Enable fragment/mux -- In v2rayNG/v2rayN, go to Settings and enable Fragment (splits TLS handshake into smaller pieces to evade DPI)

Connection Won't Establish

1. Check server is running: SSH to server, run systemctl status xray (or hysteria-server)
2. Check port is open: use Port Scanner at /tools/port-scanner/
3. Check config matches: UUID, port, encryption must match server exactly
4. Check time: your device clock must be accurate (VMess requires <90 sec difference)
5. Try a different network: switch between WiFi and mobile data

Connected But No Internet

1. Check DNS: set remote DNS to 1.1.1.1 in client settings
2. Check routing: try "Global" mode instead of rule-based
3. Check server: SSH to server, run curl ifconfig.me to verify server has internet
4. Check firewall: server firewall may block outbound traffic

Slow Speed

1. Try a different server/protocol (Hysteria2 is fastest on bad networks)
2. Check server location (closer = faster)
3. Try different ports (some ISPs throttle 443)
4. For Hysteria2: set correct bandwidth in client config
5. For CDN: find clean Cloudflare IPs with cfray
Problem Fix
"Connection timeout" Server down or port blocked. Check with Port Scanner
"TLS handshake failed" Wrong SNI or domain. Check server config
"Authentication failed" Wrong UUID/password. Copy from server panel again
"VMess: invalid user" Clock mismatch. Sync device time
App crashes on connect Update the app. Clear app data and re-import config
Works on WiFi not on mobile Mobile carrier blocks differently. Try different port/protocol
DNS leak Enable "Proxy DNS" or "Remote DNS" in client settings
Some sites don't work Routing rules may be wrong. Try Global mode

Test Your Connection

After connecting:

  1. What's My IP — should show server IP, not yours
  2. VPN Leak Test — check for IP, DNS, WebRTC leaks
  3. Speed Test — check speed through proxy
  4. DNS Toolbox — verify DNS is working

Related Guides

Related Tools