Proxy Format: host:port:user:pass and URL Syntax

Proxy string formats explained: scheme, host, port, username and password, which order each tool expects, SOCKS5 schemes and encoding special characters.

VoidMob Team
8 min read

A proxy format is the order in which a tool expects the five parts of a proxy connection. This page covers network proxy strings, not the low-resolution proxy files that video editors generate. The five parts are scheme, host, port, username and password. Tools differ only in order and separators: URL-style tools such as curl and Python requests want scheme://user:pass@host:port, and antidetect browsers usually take host:port:user:pass.

When a tool rejects working credentials, the credentials are rarely the problem. The tool is reading the fields in a different order than the one you pasted.

What are the parts of a proxy string?

Every proxy line carries the same parts, whatever its shape:

  • Scheme: the protocol your client speaks to the proxy, such as http:// or socks5://. Many formats leave it out, and the field you paste the line into decides the protocol.
  • Host: the proxy's hostname or IP address.
  • Port: the port the proxy listens on.
  • Username and password: the proxy credentials. IP-whitelisted proxies don't use them.

RFC 3986 section 3.2.1 defines the URL form. The user information comes before the host and ends with @, and any reserved characters inside it must be percent-encoded (RFC 3986). Colon-delimited lines like host:port:user:pass are a convention, not a standard, so each tool documents its own order.

Which proxy format does each tool expect?

FormatExampleWhere you see it
scheme://user:pass@host:porthttp://user:[email protected]:8000curl --proxy, Python requests, most code libraries
user:pass@host:portuser:[email protected]:8000curl (no scheme means HTTP); VoidMob API entries
host:port:user:passgate.example.net:8000:user:passAdsPower Host:Port field, Hidemyacc Quick add
user:pass:host:portuser:pass:gate.example.net:8000Importers that ask for the login first
host,port,user,passgate.example.net,8000,user,passSpreadsheets and CSV-style bulk imports
host:portgate.example.net:8000IP-whitelisted proxies; Chrome --proxy-server

AdsPower documents IP:port:username:password for its Host:Port field (AdsPower help). Hidemyacc's Quick add field takes IP:Port:Username:Password (Hidemyacc docs). As a rule, code and command-line tools want the URL form, and profile managers want delimited lines with the host first. Tool-by-tool steps are on the AdsPower proxy setup, GoLogin proxy setup and Hidemyacc proxy setup pages. For phones, see using a proxy on iPhone and Android.

What do http://, socks5:// and socks5h:// change?

The scheme sets the protocol between your client and the proxy. It does not set the protocol of the site you visit, so an http:// proxy still loads HTTPS sites. curl's --proxy option takes [protocol://]host[:port]. With no protocol, or with http://, curl treats the line as an HTTP proxy. The socks4://, socks4a://, socks5:// and socks5h:// schemes request a SOCKS version instead (curl docs). The full set of curl flags is in curl proxy setup.

The trailing h decides who resolves DNS. With socks5://, your machine looks up the hostname and sends the proxy an IP address. With socks5h://, the proxy resolves the hostname. Python requests documents the same split (requests docs). If you don't want lookups leaving your own network, use socks5h. The longer case is in DNS leak: the silent proxy killer.

Requests tells you to "use the http://user:password@host/ syntax", and its proxy URLs must include the scheme:

python
1import requests2 3proxy = "http://<list-username>:<list-password>@proxy.voidmob.com:10000"4r = requests.get("https://ipinfo.io/json", proxies={"http": proxy, "https": proxy})5print(r.json())

SOCKS URLs in requests need its SOCKS extra installed. Rotation and session handling are covered in Python requests proxy setup.

How do you put special characters in a proxy password?

In the URL form, you percent-encode them. curl URL-decodes the username and password in the proxy string, so you can pass @ as %40 and : as %3a. A password of p@ss:1 goes in as p%40ss%3a1. Other common characters to encode are / as %2F, ? as %3F, # as %23 and % itself as %25.

Delimited lines have no escape character. A colon inside the password of a host:port:user:pass line splits it into an extra field. An @ breaks a line that uses @ as its separator. You have two fixes: switch the tool to the URL form if it accepts one, or use a password that doesn't contain the separator.

What does a whitelisted proxy line look like?

An IP-whitelisted proxy line is just host:port. Whitelisting means the proxy authenticates you by your source IP address instead of a username and password (Proxyrack). Leave the tool's username and password fields empty.

On VoidMob, an IP-whitelist proxy list accepts up to 5 IPv4 addresses or /24 to /32 subnets. You set them when you create the list and can't change them later. The list's entries come back as a bare proxy.voidmob.com:10000, and whitelist lists take a few minutes longer than credential lists to become usable. Whitelisting suits a server with a fixed IP. A laptop that moves between networks fails authentication as soon as its IP changes.

How do you get VoidMob proxy lines in the right order?

VoidMob (mobile proxies on real 4G/5G devices, non-VoIP SMS verification and eSIM) gives each proxy list its own username and password at proxy.voidmob.com:10000. SOCKS5 uses the same host, port and credentials with a socks5:// scheme. Switching protocol is a scheme change, not a new credential.

The dashboard's list export has a Proxy Format setting with these orders:

  • login:password@host:port
  • http://login:password@host:port
  • socks5://login:password@host:port
  • host:port:login:password
  • login:password:host:port
  • host,port,login,password
  • login@password@host@port

Pick the order the tool asks for and paste the lines as they are. Over the API, entries[] always arrive as login:pass@host:port, or bare host:port for whitelist lists. A script that feeds a profile manager has to reorder them itself.

Dedicated devices get their own connection details. The proxy page shows the host, username, password and HTTP port, with an HTTP/SOCKS5 toggle when the device has a SOCKS5 port. Assemble those values in the order your tool expects.

To confirm a converted line works, send one request through it:

bash
curl -x "http://<list-username>:<list-password>@proxy.voidmob.com:10000" https://ipinfo.io/json

If the response shows the proxy's exit IP instead of yours, the format is right. For a quick check without a terminal, paste the line into the Proxy Checker.

Why does a correctly copied proxy still fail?

A copied proxy usually fails because the tool reads the fields differently from how you wrote them. The error you get tells you which mistake you made.

Fields in the wrong order

Paste user:pass:host:port into a field that expects host:port:user:pass, and the tool tries to connect to your username as if it were a hostname. You get a DNS or connection error. If only the username and password are swapped, the proxy answers with a 407. The fixes are on 407 Proxy Authentication Required.

Missing scheme in Python requests

Requests needs the scheme. A bare user:pass@host:port is rejected or misread before any traffic reaches the proxy. Add http:// or socks5h:// to the front.

SOCKS5 line in an HTTP-only field

A socks5:// line in a field that only speaks HTTP is either rejected or sent as HTTP to the wrong listener. The connection fails without a clear error. On a VoidMob list, both protocols share one port, so the same credentials work as an HTTP proxy in that field, with http:// in front wherever the tool wants a scheme.

Credentials on Chrome's command line

Chromium's proxy documentation describes --proxy-server as taking no credentials. Chrome generally asks for the username and password in a prompt instead, so user:pass in the flag doesn't log you in (Chromium docs). For unattended runs, use your automation library's proxy auth option or a whitelisted list.

If the format checks out and the proxy still fails, work through mobile proxy not working: common problems and fixes.

What is a proxy example?

http://user:[email protected]:8000 is the URL form of a proxy. The same proxy written for an antidetect browser is gate.example.net:8000:user:pass. Both hold the same five parts in a different order.

How do I get a proxy URL?

Your proxy provider issues the host, port and credentials in its dashboard or API. Join them as scheme://user:pass@host:port. On VoidMob, pick the http:// or socks5:// option in the list export's Proxy Format setting and the URL comes ready-made.

Where do I find my proxy settings?

For a proxy you bought, the details are on the provider's order page. For your computer's system proxy, open Windows Settings > Network & Internet > Proxy, or on a Mac open System Settings > Network, choose your connection, then Details > Proxies.

How do I connect to my Wi-Fi with a proxy?

Open the Wi-Fi network's settings, set the proxy to manual, and enter the host and port in their separate fields. Most systems ask for the username and password when the first request goes out.

Can I create my own proxy?

Yes. Proxy software on a server you control gives you a host, port and credentials in the same formats. The exit IP is the server's own address, so sites see a datacenter IP rather than a mobile or home connection.

Get proxy lines in the order your tool expects

Mobile proxies on real 4G/5G devices, with list exports in URL, colon and comma formats for HTTP or SOCKS5.