Guides4 min readOct 11, 2026

ip:port:user:pass and friends: proxy formats for any app

Proxy lists come in a handful of formats, and every app wants a different one. What each format means, which one to pick in the crawlproxies generator, and how to paste proxies into browsers, bots and antidetect profiles.

By crawlproxies
ip:port:user:pass and friends: proxy formats for any app

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:

FormatExampleTypical use
ip:port:user:passgeo.crawlproxies.com:8080:USERNAME:PASSWORDBots, checkers, most tools that import a list
user:pass@ip:portUSERNAME:PASSWORD@geo.crawlproxies.com:8080Tools that want the login first
http://user:pass@ip:porthttp://USERNAME:PASSWORD@geo.crawlproxies.com:8080Code, environment variables, curl -x
socks5://user:pass@ip:portsocks5://USERNAME:PASSWORD@geo.crawlproxies.com:1080Apps 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:

  1. Choose your plan, protocol and location.
  2. 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.
  3. Set how many lines you want (up to 10,000) and the format.
  4. 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:

FieldValue
Type / protocolHTTP (or SOCKS5)
Host / server / IPgeo.crawlproxies.com
Port8080 (HTTP) or 1080 (SOCKS5)
Username / logineverything between the port and the password, e.g. USERNAME-country-us-session-a1b2-time-1800
Passwordyour 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:

python
# 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.

Written by
crawlproxies
Create account