Referral Program →

Proxy in Chrome: Where the Setting Lives, How to Set One Per Profile, and Every Error Code

Chrome borrows its proxy from the operating system, which is why it has no proxy screen and no per-profile setting. The four ways around that, tested on Chrome 154, with the error codes each mistake produces.

Daniyar
June 14, 2026
7 min read
Proxy in Chrome: Where the Setting Lives, How to Set One Per Profile, and Every Error Code

Chrome has no proxy settings of its own. On Windows, macOS and Linux it uses whatever the operating system is set to, and the only proxy control in Chrome's settings is a button that opens the operating system's dialog. That one design decision explains most of the questions people have: why there is no proxy screen, why two Chrome profiles cannot have two proxies, and why a username in the launch flag does nothing.

There are four ways to give Chrome a proxy anyway. We tested each on Chrome 154 on 30 September 2026, against a proxy that logs what it receives, so the error codes below are the real ones.

The quick version

You wantDo this
All of Chrome through one proxySet the operating system proxy. Chrome follows it
One Chrome profile through a proxyA proxy extension, installed in that profile only
Different proxies for different windowsSeparate Chrome instances, each started with --user-data-dir and --proxy-server
Proxy only for certain sitesA PAC file, or a proxy extension's rules
Chrome on Android or iPhoneThe phone's Wi-Fi proxy setting. Chrome has none

Method 1: the operating system setting

In Chrome, open Settings, then System, and click "Open your computer's proxy settings". That is the whole of Chrome's built-in support. What opens depends on the system:

  • Windows. Settings, Network and internet, Proxy. Under "Manual proxy setup" enter the address and port. This screen takes an HTTP proxy only, and it has no field for a username: Chrome asks for the login when the proxy requests it.
  • macOS. System Settings, Network, your connection, Details, Proxies. It has separate rows for Web proxy (HTTP), Secure web proxy (HTTPS) and SOCKS proxy, each with username and password fields. Tick both HTTP and HTTPS and fill in the same server, or almost no site will go through.
  • Linux. GNOME and KDE have a Network proxy setting; without a desktop environment Chrome reads the http_proxy and https_proxy environment variables.

This routes every Chrome window, every profile, and most other programs on the machine through the same proxy. For one proxy and one person that is fine. It is the wrong tool for anything per profile.

Method 2: command-line flags

Start Chrome with --proxy-server and it ignores the system setting for that instance:

# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --proxy-server="http://proxy.sotaproxy.com:10000"

# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --proxy-server="http://proxy.sotaproxy.com:10000"

The flag accepts http://, https://, socks5:// and socks4:// addresses. Three more flags matter:

FlagWhat it does
--proxy-bypass-list="example.com;*.internal.net"These hosts go direct. In our test the listed host reached the site without touching the proxy
--proxy-pac-url=file:///path/to/proxy.pacUse a PAC file for per-site rules
--user-data-dir=/path/to/profileUse a separate profile folder, so this instance has its own cookies and its own proxy

The last flag is how you get different proxies for different accounts without an extension: one Chrome instance per profile folder, each with its own --proxy-server. It is also what automation frameworks and antidetect browsers do underneath.

The flag does not take a username and password. In our test, Chrome started with --proxy-server="http://user:password@host:port" refused the proxy entirely and every page failed with net::ERR_NO_SUPPORTED_PROXIES. Give the address only, and either answer Chrome's login prompt or supply the credentials another way: an extension, or in automation the framework's own fields.

Method 3: an extension

Extensions can control Chrome's proxy through the chrome.proxy API, and an extension's settings belong to the profile it is installed in. That is the built-in answer to "one proxy per profile": install FoxyProxy or a similar extension in a profile, configure the proxy there, and only that profile uses it. Extensions also store the username and password and answer the proxy's login challenge for you, and they can route only certain sites by pattern.

Two limits. An extension can only proxy traffic Chrome sends after it starts, so nothing outside Chrome is covered. And if an extension controls the proxy, the system setting is ignored for that profile, which confuses people who set both.

Method 4: a PAC file

A PAC file is a small JavaScript function that Chrome calls for every request:

function FindProxyForURL(url, host) {
  if (dnsDomainIs(host, ".example.com")) {
    return "PROXY proxy.sotaproxy.com:10000";
  }
  return "DIRECT";
}

Point Chrome at it with --proxy-pac-url, or through the system setting's "automatic configuration" field. In our test a PAC file returning our proxy sent the request through it correctly. A PAC file cannot carry a password, so for an authenticated proxy Chrome will still ask.

Chrome on Android and iPhone

Chrome for Android has no proxy setting. The Wi-Fi network's proxy in Android settings applies to Chrome, but it accepts an HTTP proxy only and has no fields for a login, and it covers that one Wi-Fi network and not mobile data. Chrome on iPhone uses the system network stack, so the proxy is set under the Wi-Fi network's "Configure Proxy", which does have authentication fields. There is no extension route on either phone.

What Chrome does with DNS and WebRTC

Where the hostname is resolved depends on the proxy type. We measured this against a logging proxy: with an HTTP proxy Chrome sends the hostname inside the CONNECT request, with socks5:// it sends the hostname to the proxy, and with socks4:// it resolves the name locally and sends an address. If you use SOCKS, use SOCKS5. The full comparison across tools is in what is a DNS proxy.

WebRTC can expose your real address around any proxy. Chrome has no setting page for it. The options are Google's own "WebRTC Network Limiter" extension, or the WebRtcIPHandling policy set to disable_non_proxied_udp on a managed machine. Check the result on our IP checker.

Every error we hit

Chrome showsWhat it means
ERR_PROXY_CONNECTION_FAILEDChrome could not connect to the proxy at all: wrong port, or the proxy is down. We got it for both http:// and socks5:// addresses on a closed port
ERR_INVALID_AUTH_CREDENTIALSThe proxy asked for a login and Chrome had none to send
ERR_HTTP_RESPONSE_CODE_FAILUREIn automation, the credentials were sent and refused
ERR_NO_SUPPORTED_PROXIESThe proxy address was rejected, in our case because it contained a username and password
"Your proxy settings are managed by your organization"A policy controls them. See chrome://policy

The first is the one people meet most, and the fix is boring: check the port, and check the proxy is up with curl -x http://host:port https://api.ipify.org before blaming Chrome.

Automation: Playwright, Puppeteer, Selenium

Because the flag refuses credentials, every framework has its own way to pass them:

# Playwright: separate fields; this is what we tested
browser = p.chromium.launch(proxy={
    "server": "http://proxy.sotaproxy.com:10000",
    "username": "login_c_US",
    "password": "password",
})

# Puppeteer: address in the flag, credentials per page
args: ["--proxy-server=http://proxy.sotaproxy.com:10000"]
await page.authenticate({ username: "login_c_US", password: "password" });

Selenium has no field for proxy credentials at all. The ways around it are in authentication and IP whitelisting.

What to type for our proxies

ProductAddress for Chrome
Residentialhttp://proxy.sotaproxy.com:10000, with the country and session in the username
ISP, datacenter, IPv6http://your-address:50100, or socks5://your-address:50101

The username suffixes for country, city and sticky sessions are in the connection string reference.

FAQ

Where are proxy settings in Chrome?

Chrome has none of its own. Settings, System, "Open your computer's proxy settings" opens the operating system's dialog, and Chrome uses whatever is set there.

Can I set a proxy for one Chrome profile only?

Not in Chrome's settings. Install a proxy extension in that profile, or start a separate Chrome instance for it with --user-data-dir and --proxy-server.

Does Chrome support SOCKS5?

Yes, through --proxy-server="socks5://host:port", through an extension, and through the macOS system setting. Windows' main proxy screen takes an HTTP proxy only.

Why does Chrome ignore the username in --proxy-server?

The flag does not accept credentials. In our test Chrome refused the proxy with ERR_NO_SUPPORTED_PROXIES. Give the address only and supply the login through the prompt, an extension, or your automation framework's fields.

How do I turn the proxy off in Chrome?

Wherever you turned it on: remove it from the operating system setting, remove the flag from the shortcut, or disable the extension. If the setting is greyed out, a policy controls it.

Related articles

Proxy Authentication Explained: Username and Password vs IP Whitelist
proxy setupauthenticationip whitelist

Proxy Authentication Explained: Username and Password vs IP Whitelist

Two ways a proxy knows it is you: credentials sent on every connection, or a list of addresses allowed in without them. What each one puts on the wire, measured on a test proxy, which tools cannot do which, and why a whitelisted laptop breaks a week later.

October 9, 2026
Read more
Banned With a Clean Proxy? The Setup Mistakes That Actually Do It
multi-accountingproxy setuptroubleshooting

Banned With a Clean Proxy? The Setup Mistakes That Actually Do It

The proxy was clean, the address was residential, and the account still died. In most cases we see, the address was never the problem. Seven setup faults, each one checkable in a minute, in the order they usually turn out to be the cause.

October 7, 2026
Read more
ERR_TUNNEL_CONNECTION_FAILED: The Error Name Is the Diagnosis
guidestroubleshootingproxy errors

ERR_TUNNEL_CONNECTION_FAILED: The Error Name Is the Diagnosis

Chrome asked a proxy to open a CONNECT tunnel and it failed. That is the whole error. Where the proxy comes from when you never configured one, the six ways a proxy you did configure produces it, and why clearing your cache fixes nothing.

September 28, 2026
Read more
wget With a Proxy: Every Way to Set It, What Overrides What, and the SOCKS5 Problem
wgetproxy setupcommand line

wget With a Proxy: Every Way to Set It, What Overrides What, and the SOCKS5 Problem

Four ways to give wget a proxy and the order they override each other in, tested on wget 1.25. Plus the exact error messages, the special-character trap, bypassing a proxy, and the one thing wget cannot do: SOCKS5.

July 15, 2026
Read more
FoxyProxy Setup in 2026: Chrome, Firefox, Patterns, and the SOCKS5 Login Chrome Ignores
guidesfoxyproxychrome

FoxyProxy Setup in 2026: Chrome, Firefox, Patterns, and the SOCKS5 Login Chrome Ignores

FoxyProxy is the same extension on Chrome and Firefox and does different things on each. The setup step by step for version 9, the pattern syntax that actually matches, and the one limit most guides leave out: in Chrome a SOCKS5 proxy with a login cannot work, which we confirmed by capturing what Chrome sends.

October 23, 2026
Read more
How to Avoid CAPTCHA on Automated Workflows
avoid captchaantidetect browserproxy setup

How to Avoid CAPTCHA on Automated Workflows

Learn how to avoid CAPTCHA on automated workflows with proxy tactics, antidetect browsers, request pacing, and solver fallbacks built for real operators.

August 21, 2026
Read more