Hiddify proxy setup (Android, iOS, Windows, macOS, Linux)
Published: 26 August 2026 · 7 min read
TL;DR: Import a sing-box profile with one "type": "socks" outbound for gw.roamproxy.com:41080, your dashboard username and password as separate fields, and "final": "Roam". Do not use the http outbound — it leaves non-HTTP traffic and DNS outside the proxy while an IP-check page still looks correct. If your network cannot reach the gateway directly, add "detour": "Upstream" to the Roam outbound. Verify on ip.sb and two or three real sites.
What you need before you start
Everything in this tutorial uses the same four values. Get them from your Roam dashboard and keep that tab open.
| Field | Value |
|---|---|
| Server | gw.roamproxy.com |
| Port | 41080 |
| Username | generated in the dashboard |
| Password | generated in the dashboard |
Read this first if your network is restricted. Roam is an exit-IP layer: it changes the address the destination site sees. It is not a tunnel out of a network that blocks outbound connections. If your device cannot reach gw.roamproxy.com:41080 directly, a plain Roam profile fails in a way that looks like a broken product. On such a network you need the detour chain from Step 5, which routes Roam through a node that already works for you.
Step 1 — Install Hiddify
Hiddify is a free, open-source client built on sing-box, available for Android, Windows, macOS, Linux and iOS. Install it from the releases page of the hiddify/hiddify-app project on GitHub, from Google Play, or from the App Store. Everything below is the same on every platform because Hiddify reads the same sing-box configuration everywhere; the screenshots in your version may differ slightly in wording.
Step 2 — Write the profile
Hiddify does not have a form for SOCKS servers, but it imports any sing-box configuration as a profile. This is the complete, minimal profile for Roam — replace the two credential values and keep everything else:
{
"outbounds": [
{
"type": "socks",
"tag": "Roam",
"server": "gw.roamproxy.com",
"server_port": 41080,
"version": "5",
"username": "username",
"password": "password"
},
{ "type": "direct", "tag": "direct" }
],
"route": {
"final": "Roam"
}
}
Three things worth knowing about this file:
"type": "socks"is the whole point. sing-box also has anhttpoutbound, and Roam accepts both, but an HTTP outbound only carries HTTP and HTTPS — DNS and every other protocol leak out over your normal connection. The symptom is an IP-check page that shows the new address while other apps time out. Usesocks.- The credentials are separate JSON fields, so a password containing
@,#or:needs no escaping. Paste it as-is between the quotes. "final": "Roam"sends everything through Roam. That is what you want while verifying. Hiddify adds its own inbounds, DNS and bypass rules around this profile, so you do not need to write them.
Step 3 — Import it and connect
- Copy the whole JSON above (with your credentials filled in).
- Open Hiddify → + (New profile) → Add manually / Paste from clipboard. Give it a name such as
Roamand save. - Make sure the new profile is the selected one on the home screen.
- Tap the big connect button. On Android and iOS the system asks for VPN permission the first time — allow it. On desktop, Hiddify's Proxy mode sets the system proxy, which browsers follow; switch to VPN (TUN) mode in Settings if you also need command-line tools or apps that ignore the system proxy.
The button turning to Connected means the local service started — it does not yet prove the Roam gateway accepted your credentials. Step 4 does that.
Step 4 — Verify (properly)
Open https://ip.sb and confirm a Roam exit IP in the region you expect. Hiddify's Proxies page also runs a URL test per outbound: a millisecond value next to Roam means the gateway answered; a timeout means it did not.
Checking ip.sb alone is not enough. Open two or three sites or apps you actually use. If ip.sb shows the new IP but other things stall, the config is wrong — almost always the http-vs-socks issue from Step 2 — and you should go to connected but not working.
Optional: verify the credentials outside Hiddify
Testing outside the client tells you whether a problem is with your credentials or with the profile. Note the form: -x takes the proxy address and -U passes the credentials separately.
curl -v -x socks5h://gw.roamproxy.com:41080 -U 'username:password' https://ip.sb
If curl returns a Roam IP but Hiddify does not, the credentials are fine and the problem is in the profile. If curl fails too, re-copy the username and password from the dashboard.
Step 5 — Chaining behind an upstream hop
Skip this step if Step 4 already works. You need it when your network cannot reach the gateway directly. sing-box has a first-class way to send one outbound through another: detour. The path becomes: your device → your upstream node → Roam gateway → destination. The destination still sees the Roam exit IP.
Add the outbound of the node that already works for you (whatever type it is — take it from a profile you already have) to the same outbounds list, then add one line to the Roam outbound:
"outbounds": [
{
"type": "socks",
"tag": "Roam",
"server": "gw.roamproxy.com",
"server_port": 41080,
"version": "5",
"username": "username",
"password": "password",
"detour": "Upstream"
},
{
"type": "…your existing node…",
"tag": "Upstream",
"server": "…",
"server_port": 0
},
{ "type": "direct", "tag": "direct" }
]
Keep "final": "Roam" — traffic goes to Roam, and Roam's connection to the gateway is dialled through Upstream. If the chain fails, test the hops separately: temporarily set "final": "Upstream", reconnect, and confirm you have working internet; then set it back to Roam. A chain that fails at hop one looks identical to one that fails at hop two. Clash calls the same feature dialer-proxy and Xray calls it proxySettings; the Clash guide and the v2rayNG guide cover those clients.
Everyday use
Once the setup is verified, use Hiddify's Per-app proxy setting (Android) or its bypass options to keep bulk traffic off the metered proxy. Residential traffic is billed per gigabyte, so video, OS updates and app-store downloads should not go through Roam. Any app that already had an open connection when you connected keeps that connection until it reconnects — force-close it to be sure.
Plans and what a session costs
Rotating residential traffic is billed at $2/GB with no monthly minimum. If you need one address that stays the same across sessions — anything with a login that reacts badly to a changing IP — a static residential IP is $4/IP/month. New accounts receive 300MB of trial traffic on their first top-up (from $2), which is more than enough to complete this tutorial and confirm the exit IP behaves the way your target site expects.
FAQ
Hiddify says Connected, but nothing loads.
Connected only means the local service started. Either a different profile is still selected on the home screen, or the gateway is rejecting the credentials. Run the URL test on the Proxies page: a millisecond value means the gateway answered, so re-check the socks-vs-http choice; a timeout means it did not, so re-copy the username and password from the dashboard, and if your network is restricted, go to Step 5.
Can I add Roam as a link instead of JSON?
Hiddify's link import is built around the common share-link formats (vless://, vmess://, ss://, trojan:// and friends). A plain SOCKS5 server with a username and password is most reliably added as the sing-box JSON shown in Step 2 — it is short, and it avoids the URL-encoding problems that special characters in a password cause in link form.
My dashboard shows traffic being used, but pages will not load.
Billed traffic means authentication succeeded and the gateway is carrying data — your credentials are fine. The failure is in what is being carried: the outbound type or DNS. Make sure the outbound is type socks, not http. If it is already socks and pages still fail, see connected but not working.
Hiddify, NekoBox or v2rayNG — which should I use with Roam?
All three accept the same SOCKS5 server, so use whichever you already have. If you are starting fresh: Hiddify runs on every platform including iOS and imports the same profile everywhere; NekoBox has a Chain profile type in its interface; v2rayNG needs a hand-edited custom config for chaining. The NekoBox guide and v2rayNG guide cover the other two.
Roam is the exit-IP layer for this setup: rotating residential at $2/GB, static residential at $4/IP/month, no monthly minimum. Create an account and get 300MB of trial traffic on your first top-up — enough to finish this tutorial and confirm the exit IP behaves the way your target site expects.