Android hides this one well. The proxy is not in the main settings menu; it belongs to each Wi-Fi network on its own, and the screen carries a warning worth reading first: "The HTTP proxy is used by the browser but may not be used by the other apps." This page shows where the setting is, which apps follow it, what to do on mobile data and with a login, and how to set a proxy for the whole device with adb.
We wrote it from Android's own source code, the Android Open Source Project, which defines every label, warning and error on the stock proxy screen, and from Chromium's code for Chrome. We did not use a phone for this page, so the screen below is drawn from Android's own texts rather than captured. Phone makers can move and rename the menus; the fields themselves come from Android.
| Where you set it | What it reaches | What it leaves out |
|---|---|---|
| A Wi-Fi network: Proxy, Manual | Chrome and apps on Android's standard networking, on that network | Mobile data, other networks, apps with their own network code, SOCKS |
| A Wi-Fi network: Proxy Auto-Config | The same, following the script's rules | The same |
| The APN: Proxy and Port | Mobile data, for apps that follow Android's proxy | Wi-Fi |
adb: settings put global http_proxy | Every network, for apps that follow Android's proxy | Apps with their own network code |
| An app's own proxy setting | That app | Everything else |
Follow it
Chrome
reads the proxy Android hands to apps
Apps on Java's standard networking
URLConnection and Apache's HttpClient, automatically
Apps that ask Android for it
as Android tells other HTTP stacks to
Left out
Apps with their own network code
only if their makers built them to read it
Mobile data
uses the APN's proxy instead
SOCKS5
Android hands apps an HTTP proxy only
Before you start: what you need
One proxy line, four parts
203.0.113.10Host:8080Port:hp_ir4k2Username:9fa2c1Password203.0.113.10:8080:hp_ir4k2:9fa2c1hp_ir4k2:9fa2c1@203.0.113.10:8080http://hp_ir4k2:9fa2c1@203.0.113.10:8080
Android takes the host and the port. The user name and password go into Chrome's login window, not into Settings. Values shown are examples.
- A proxy address as
host:port, plus a user name and password if the proxy needs a login. If your provider sent one long line, the proxy format guide splits it up. - A connection to the Wi-Fi network you want to proxy; the setting belongs to that network.
- For a first test, any HTTP entry from our free proxy list will do. Free entries come and go, so test one first; the check further down shows how.
- Our free proxy setup generator writes the values below for your own proxy, the hostname and port for Settings and the adb line, and says so when a line will not fit Android at all.
Step 1: open your Wi-Fi network's settings
On current stock Android:
- Open Settings, then Network & internet, then Internet.
- Tap the network you are connected to, or the gear next to it. Its details open.
- Tap the pencil at the top to modify the network.
- Open Advanced options.
On older versions, long-press the network in the Wi-Fi list, choose Modify network, then open Advanced options. For a network you have not joined yet, Add network has the same Advanced options, proxy included. If your phone's menus are named differently, its maker has changed them; look for the network's own settings and their advanced part.
Step 2: set the proxy
Change Proxy from None to Manual (1), fill in Proxy hostname (2) and Proxy port (3), and, if some sites should skip the proxy, list them in Bypass proxy for (4), separated by commas. Tap Save.
Network & internetInternetYour networkAdvanced options
Proxy
- ProxyManualA drop-down: None, Manual or Proxy Auto-Config.
- Proxy hostname203.0.113.10
- Proxy port8080
- Bypass proxy forexample.com,mail.example.com
- The HTTP proxy is used by the browser but may not be used by the other apps.
The address goes in on its own, with no http:// in front, and the port in its own box. The third choice, Proxy Auto-Config, takes the address of a PAC script in PAC URL instead.
Android checks what you type, and its messages are exact:
The hostname you typed isn't valid.You need to complete the port field.The port field must be empty if the host field is empty.The port you typed isn't valid.The exclusion list you typed isn't properly formatted. Type a comma-separated list of excluded domains.
Step 3: the user name and password
The proxy screen has no fields for a login; Android's source defines a hostname, a port and a bypass list, nothing more. So the login is up to each app:
- Chrome asks when it first uses the proxy. Its window reads "The proxy … requires a username and password.", with the proxy's address where the dots are.
- An app that cannot ask fails instead. The clean answer is an address allowlist at the provider, so the proxy accepts your connection without a login. When your proxy needs a password and your software cannot send one covers the options.
Which apps actually follow it
Android's own warning is the honest summary, and its code says where the line runs. The ProxyInfo class states that proxy settings "are already integrated within the java.net and Apache HTTP stack. So URLConnection and Apache's HttpClient will use them automatically." Other HTTP stacks, it goes on, "will need to obtain the proxy info" themselves, by watching for Android's proxy-change notice and asking for the default proxy. Chrome does: Chromium's Android code reads the proxy properties Android sets for apps. An app with network code of its own follows the proxy only if its makers built it to.
We read the relevant lines straight from Android's source:
A SOCKS5 proxy
Android cannot carry a SOCKS5 proxy through this screen. As the picture shows, it turns the Wi-Fi proxy into http.proxyHost and https.proxyHost settings for apps, both pointing at an HTTP proxy, and the file that does it never mentions SOCKS. A SOCKS5 server typed in there receives HTTP proxy requests and fails. For SOCKS5, use an app that speaks it: one with its own SOCKS setting, or one that routes the phone's traffic through it.
On mobile data
The Wi-Fi proxy ends where the Wi-Fi does: on mobile data, traffic goes out without it. Mobile data has its own Proxy and Port fields inside the APN, the carrier's connection profile, under Access Point Names in your mobile network's settings. Android lets a carrier block adding APNs and lock any of an APN's fields, so on some phones that screen will not let you change it.
The same APN screen also has Username and Password. They are not a place for a proxy login: they go with the screen's Authentication type, whose choices are None, PAP, CHAP and PAP or CHAP, the methods a carrier uses to log the phone onto its network. A proxy that needs a login still needs Chrome's prompt or an allowlist on mobile data.
A proxy for the whole device, with adb
With USB debugging switched on in the developer options and a computer with adb, one command sets a global proxy that applies on every network:
adb shell settings put global http_proxy 203.0.113.10:8080
Android splits the value at the colon and uses port 8080 when you give none. It reaches the same apps as the Wi-Fi proxy, the ones that follow Android's proxy. To remove it:
adb shell settings put global http_proxy :0
That :0 comes straight from Android's code: it reads the value as an empty host, and an empty host clears the global proxy. The command that looks right, adb shell settings delete global http_proxy, does not clear it. The code returns without touching the proxy that was applied, so it stays.
Check that it worked
Open this address in Chrome, which follows the proxy:
https://www.cloudflare.com/cdn-cgi/trace
The line starting with ip= is the address sites see; if it is the proxy's address, Chrome goes through the proxy. Then open https://hproxy.com/api/ip/ followed by that address: it names the country, city and network behind it. Before you put a proxy into the phone at all, paste it into our free proxy checker, which reports whether it answers, its protocols, anonymity, country and latency. That separates "this proxy is dead" from "I typed it wrong", which look the same on a phone that loads nothing.
When it does not work: the messages
Android proxy messages, what they mean, and the fix
| What you see | What it means | Fix |
|---|---|---|
There is something wrong with the proxy server, or the address is incorrect. with ERR_PROXY_CONNECTION_FAILED (Chrome) | Nothing answers at the proxy's address and port. | Set Proxy to None, test the proxy, then set it again. |
The proxy ... requires a username and password. | The proxy wants a login. | Type it in; for apps that cannot, use an address allowlist. |
The hostname you typed isn't valid. | The hostname box holds something that is not a host name or address. | Remove http:// and any port from it. |
The port field must be empty if the host field is empty. | A port without a host. | Fill in the hostname, or clear the port. |
The exclusion list you typed isn't properly formatted. | The bypass list is not comma-separated domains. | Write example.com,mail.example.com. |
An app fails with connect failed: ECONNREFUSED (Connection refused) for the proxy's address and port | A proxy, often a global one set with adb, does not answer. | adb shell settings put global http_proxy :0, or fix the proxy. |
| Wi-Fi connected, nothing loads | The proxy on that network is dead or wrong. | Set that network's Proxy to None. |
AOSP Settings app strings; Chromium's error and login texts; Android Stack Exchange question 98287
Mistakes other guides make
- "Android's Wi-Fi proxy supports SOCKS5." It hands apps an HTTP proxy only, and its proxy code never mentions SOCKS.
- The APN's Username and Password for a proxy login. They go with PAP or CHAP, the carrier's login.
- "All traffic over that Wi-Fi network will use the proxy." Android's own screen says other apps may not.
Turning it off again
Open the same network's settings, set Proxy to None and Save. If you set a global proxy with adb, run adb shell settings put global http_proxy :0 too. If one Wi-Fi network suddenly loads nothing while others work, a forgotten proxy on that network is the first place to look.
About free proxies on a phone
Free entries come and go, so test one before you rely on it, and set Proxy back to None when you are done: a dead proxy left on a network makes Chrome load nothing there. For daily use, a paid proxy can keep one address for a sticky session.
How we wrote this
We read Android's source, the Android Open Source Project's main branch, on 3 October 2026: the Settings app's strings and arrays (every label, warning and error on the proxy screen and the APN screen) and its Wi-Fi screens' code (NetworkProviderSettings.java, ConnectedWifiEntryPreference.java, WifiNetworkDetailsFragment.java, WifiConfigController2.java), then ProxyInfo.java, Proxy.java, Settings.java, ProxyTracker.java and CarrierConfigManager.java, which decide who gets the proxy, what adb's global proxy does and what a carrier may lock. For Chrome we read Chromium's Android proxy code and its error and login texts. The terminal picture is our own read of two of those files.
Limits: we did not use a phone, so the proxy screen is drawn from Android's strings, and phone makers' versions of the menus were not checked. Which apps ignore the proxy is stated by Android's own rule, not tested app by app. AOSP's main branch can be ahead of what phones run.
Sources
All read on 3 October 2026.
- Android Open Source Project, main branch: the Settings app's
strings.xml,arrays.xml,NetworkProviderSettings.java,ConnectedWifiEntryPreference.java,WifiNetworkDetailsFragment.javaandWifiConfigController2.java;ProxyInfo.javaandProxyTracker.java(Connectivity module);Proxy.java,Settings.javaandCarrierConfigManager.java(frameworks/base) (android.googlesource.com). - Chromium:
proxy_config_service_android.cc, the error page strings and the login dialog strings (chromium.googlesource.com). - Android Stack Exchange questions 4952, 98287 and 32366.
- Our read of Android's source with curl, 3 October 2026.



