A proxy is always the same five pieces of information: protocol, host, port, username and password. The only thing that changes between apps is how they want those pieces written. Pick the wrong format and an app either rejects the list or quietly ignores your password. This guide decodes the formats and shows where each one goes.
The four formats in the generator
The generator can write your proxies in any of these:
| Format | Example | Typical use |
|---|---|---|
ip:port:user:pass | geo.crawlproxies.com:8080:USERNAME:PASSWORD | Bots, checkers, most tools that import a list |
user:pass@ip:port | USERNAME:PASSWORD@geo.crawlproxies.com:8080 | Tools that want the login first |
http://user:pass@ip:port | http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 | Code, environment variables, curl -x |
socks5://user:pass@ip:port | socks5://USERNAME:PASSWORD@geo.crawlproxies.com:1080 | Apps that need SOCKS5 |
Despite the name, ip doesn't have to be a numeric IP. For rotating products it's the gateway hostname (like geo.crawlproxies.com), and the actual exit IP is picked when you connect. Only Dedicated ISP plans give you a list of literal IPs, one per line.
Choosing the protocol
- HTTP works almost everywhere: browsers, bots, most libraries. It carries HTTPS websites through an encrypted tunnel, so "HTTP proxy" doesn't mean "unencrypted".
- SOCKS5 is lower level and protocol-agnostic. Use it when an app asks for it, or for non-web traffic.
The port tells the gateway which one you're speaking. On Residential it's 8080 for HTTP and 1080 for SOCKS5. Mixing them up (an HTTP client on the SOCKS5 port, or the reverse) is the most common "it just times out" mistake.
Generating a list
Most tools want a list rather than one line. In the generator:
- Choose your plan, protocol and location.
- Pick rotating for a list where every line behaves the same and every connection gets a new IP, or sticky to give each line its own session (and its own IP) for the minutes you set.
- Set how many lines you want (up to 10,000) and the format.
- Copy the list, or download it as
proxies.txt.
With sticky sessions every line has a different session id, which is exactly what you want for one-line-per-profile setups: each profile keeps its own IP for the session length.
Where to paste them
Apps with separate fields (antidetect browsers, proxy extensions, most GUI tools) ask for each piece on its own. Split your line like this:
| Field | Value |
|---|---|
| Type / protocol | HTTP (or SOCKS5) |
| Host / server / IP | geo.crawlproxies.com |
| Port | 8080 (HTTP) or 1080 (SOCKS5) |
| Username / login | everything between the port and the password, e.g. USERNAME-country-us-session-a1b2-time-1800 |
| Password | your password |
The username is long because it carries your targeting options. Paste all of it: cutting off -country-us silently changes where your traffic comes from.
Apps that import a list usually want one proxy per line in ip:port:user:pass. If an import fails, check which format the app documents and regenerate. Changing the format is quicker than editing lines by hand.
Code and command-line tools want a URL: http://user:pass@host:port. Our guides for Python, Node.js, Go and cURL show exactly where it goes.
Desktop browsers (Chrome, Edge and the system proxy settings on Windows and macOS) take a host and port but have no field for a password. They prompt for the username and password the first time you browse. For browser automation, use Playwright or Puppeteer, which handle the login for you.
Converting between formats
Already have a list in one format and need another? A short script does it:
# ip:port:user:pass -> http://user:pass@ip:port
with open("proxies.txt") as src, open("proxies_url.txt", "w") as out:
for line in src:
line = line.strip()
if not line:
continue
host, port, user, password = line.split(":", 3)
out.write(f"http://{user}:{password}@{host}:{port}\n")split(":", 3) stops after three colons, so a password that happens to contain : stays intact. If your passwords can contain @ or :, URL-encode them (urllib.parse.quote) before writing URLs.
Quick checks when an app won't connect
- Is the whole username there? Long usernames get truncated by some fields.
- Right protocol for the port? HTTP to 8080, SOCKS5 to 1080 on Residential.
- Test the exact line in a terminal with
curl -x http://USER:PASS@HOST:PORT https://ipinfo.io/ip. If cURL works and the app doesn't, the problem is in how the app was configured.
New to crawlproxies? Your first proxy request takes five minutes.



