Fast command-line proxy checker. Give it a list of HTTP, HTTPS, SOCKS4 or SOCKS5 proxies and it checks them in parallel and tells you which work, how fast they answer, and the exit IP, country and network each one shows to websites.
$ proxy-checker -f proxies.txt
PROXY OK LATENCY EXIT IP COUNTRY NETWORK / ERROR
http://user-country-us:***@resi.example:12286 yes 1918ms 198.51.100.23 US AS64500 Example ISP
socks5h://203.0.113.10:1080 yes 3819ms 203.0.113.10 TR AS64501 Example Telecom
http://198.51.100.7:8080 no - - - timeout
http://192.0.2.44:3128 no - - - certificate signed by unknown authority
2 of 4 proxies work
- One binary, no dependencies, Windows, macOS and Linux
- Checks hundreds of proxies at once (
-c) - Reads every common format, with or without a username and password
- Passwords are masked in the output, so you can share it
- Output as a table, JSON, CSV, or a plain list of the working proxies
- A proxy that breaks the HTTPS certificate is reported as failed, because it is reading or changing your traffic
Download a binary from Releases, or install with Go 1.23 or newer:
go install github.com/fusion-proxy/proxy-checker@latest# a file, one proxy per line (lines starting with # are skipped)
proxy-checker -f proxies.txt
# proxies as arguments
proxy-checker 203.0.113.10:8080 socks5://198.51.100.7:1080
# from another command, keep only the working ones
cat proxies.txt | proxy-checker -o alive > working.txt
# JSON or CSV for scripts and spreadsheets
proxy-checker -f proxies.txt -o json > report.json
proxy-checker -f proxies.txt -o csv > report.csvAccepted formats:
host:port
host:port:user:pass
user:pass@host:port
http://user:pass@host:port
https://host:port
socks4://host:port
socks5://user:pass@host:port
socks5h://user:pass@host:port
Lines without a scheme use -scheme (default http).
| Flag | Default | Meaning |
|---|---|---|
-f |
File with proxies. Without it, the arguments are used, or stdin when there are none | |
-c |
50 |
How many proxies to check at the same time |
-t |
15s |
Timeout per proxy |
-scheme |
http |
Scheme for lines without one: http, https, socks4, socks5, socks5h |
-target |
https://ipinfo.io/json |
URL requested through each proxy. ipinfo-style JSON or https://www.cloudflare.com/cdn-cgi/trace fill in the exit IP and country |
-o |
table |
table, json, csv or alive |
The exit code is 0 when at least one proxy works and 1 when none do.
Rotating residential proxies put options in the username. For example, with Fusion Proxy you can check the same gateway from several countries:
proxy-checker \
"http://USER-country-us:PASS@resi.fusionproxy.net:12286" \
"http://USER-country-de:PASS@resi.fusionproxy.net:12286" \
"socks5h://USER-country-jp:PASS@resi.fusionproxy.net:5390"Prefer a browser? The same check runs online at fusionproxy.net/tools/proxy-checker.
- SOCKS4 has no host names, so the target is resolved on your machine. Use SOCKS5 with
socks5h://to resolve it on the proxy. - ipinfo.io allows a limited number of free requests per month. For large lists use
-target https://www.cloudflare.com/cdn-cgi/trace, which returns the exit IP and country. - Latency is the time for the whole request through the proxy, including the TLS handshake with the target.
- free-proxy-list: public proxies re-checked with this tool every 24 hours
- fusionproxy: residential proxy code examples in 8 languages
MIT, see LICENSE.