Checking if proxies are alive in bulk: from web tools to scripts
Updated:
To check whether a batch of proxies is alive, send one small request through each proxy to a page that returns the visible IP, use a short timeout, and record which proxies return their own IP, which fail and how. For a few dozen proxies, a web-based checker is enough. For hundreds, or for regular checks, a curl loop or a parallel Python script is faster and more accurate. This guide covers all three, how to read the results, and what to do when a proxy looks dead.
What counts as a live proxy
A proxy is only truly alive when it passes four tests: you can connect to its IP and port, the username and password are accepted, it can open an HTTPS page through the tunnel, and the IP the site sees is the proxy IP. Many tools only check whether the port is open, so they report wrong-password proxies as alive.
So test against an HTTPS page that returns the IP, and compare the returned IP with the one in your list. Checking a single proxy in detail is covered in how to check a proxy; this guide is about doing it in bulk.
Method 1: a web-based proxy checker
The quickest option if you do not use the command line. Paste your list in ip:port:user:pass format, one per line, into the proxy checker. If your list uses another format such as user:pass@ip:port, convert it first with the proxy format converter.
The limitation is that results are measured from the tool's server, not your machine. A proxy that is alive in the tool but dead on your computer usually points to your own network or firewall.
Method 2: a curl loop on Linux or macOS
Save your list to proxies.txt, one ip:port:user:pass per line, then run:
while IFS=: read ip port user pass; do r=$(curl -s -m 10 -x "http://$user:$pass@$ip:$port" https://api.ipify.org || echo FAIL); echo "$ip:$port -> $r"; done < proxies.txt
Each output line shows the proxy and the IP it returned. If the returned IP matches the proxy IP, it is alive. FAIL means no answer within 10 seconds or a refusal. The loop runs one proxy at a time, so it is slow for long lists, but it needs nothing extra installed. On Windows, run it in WSL or Git Bash.
Method 3: a parallel Python script
For hundreds of proxies, running checks in parallel cuts the time from tens of minutes to a few. The script follows these steps using requests and the built-in concurrent.futures:
- Read the file and split each line with
ip, port, user, pw = line.strip().split(":"). - Build the proxy URL
p = f"http://{user}:{pw}@{ip}:{port}"and callrequests.get("https://api.ipify.org", proxies={"http": p, "https": p}, timeout=10). - Record response time and returned IP, and catch error types separately:
ProxyError,ConnectTimeout,ReadTimeoutand status 407. - Run it with
ThreadPoolExecutor(max_workers=20); there is no need to go higher, because the goal is checking, not generating load. - Write results to a CSV with proxy, status, returned IP and response time so you can filter and compare.
| Result | Meaning | Next step |
|---|---|---|
| Returned IP matches proxy IP | Alive | Log the response time for trend tracking |
| 407 | Alive but wrong username or password | Recheck credentials |
| Connection refused | Port closed or proxy expired | Check expiry in the dashboard |
| Timeout | No response within the limit | Retest later and from another network |
| Returned IP differs from proxy IP | Traffic used another route or setup is wrong | Recheck the format and any bypass rules |
Regular checks for proxies in use
If you run tools or manage many accounts, checking once a day or before each big run is enough. Avoid checking too often, since hammering the same IP-echo page is pointless traffic. Keep a history of results to tell a genuinely dead proxy from one that blipped during a single test. Organising large lists, retiring and replacing IPs is covered in proxy pool management.
What to do when a proxy looks dead
- Retest from another network before deciding. One timeout is not enough to call it dead.
- Check expiry in the dashboard. Expired proxies stop working; renew before expiry to keep the same IP.
- Treat 407 separately: it is a credentials problem, not a dead proxy. See the 407 error guide.
- Open a ticket with the failing IPs, error types and test times if the proxy is active but still not working. Technical faults are handled under the refund policy.
Frequently asked questions
Can I check if a proxy is alive with ping?
Not reliably. Ping only shows the server answers ICMP; it does not test the port, authentication or HTTPS. Some servers do not answer ping at all.
What timeout should I use for bulk checks?
Around 10 to 15 seconds works well. Too short marks distant proxies as dead; too long slows the whole run.
The proxy checks out as alive but a website still fails. Why?
A live proxy does not mean the target site accepts that IP. Test against the site you actually need and read the guide on websites blocking proxies.
Should I use hundreds of threads to check faster?
No need. Around 10 to 20 threads is fast enough for a few hundred proxies and does not put unusual load on the checking page.
Can a wrong format make a proxy look dead?
Yes. Swapped username and password or a missing port will make the check fail. Normalise your list to ip:port:user:pass first.
Dedicated proxies that are easy to verify
Each IP goes to one customer, delivered in standard ip:port:user:pass format with unlimited bandwidth and 24/7 ticket support.
See pricing