This is a complete list of lots of well known and probably working proxies. Check Releases for new versions of the list.
Development of the Proxy List will be slowed down as this tool won't be needed as much by users over the next few months. I am doing this to prioritize releasing ReBlock v2.0 for both macOS and Windows. If you have an active pull request/issue/Google Forms submission, it will likely not be implemented for a while. View the ReBlock GitHub repo here.
Feel free to download the list and share it around! The list is also available at https://yourworstnightmare1.github.io/proxy-list/.
Use an iframe — paste the snippet from docs/embed.html (or open /embed.html on the hosted site). The list loads at ?embed=1 with a compact layout (no bottom ad, portrait orientation lock disabled). Example:
<iframe
src="https://yourworstnightmare1.github.io/proxy-list/?embed=1"
title="Proxy list"
width="100%"
height="720"
style="border:0;border-radius:8px;max-width:100%;min-height:480px;"
loading="lazy"
></iframe>You cannot embed the full app as a single inline HTML string without an iframe: the UI loads data.json and scripts from the host. Cross-site iframes may block sign-in (third-party cookies). docs/_headers sets frame-ancestors * for Cloudflare Pages; GitHub Pages allows framing by default.
This site is static HTML in docs/ — there is no compile step.
Recommended (Cloudflare Pages + Git): In the Pages project → Settings → Build:
| Setting | Value |
|---|---|
| Build command | (leave empty) |
| Build output directory | docs |
| Root directory | / |
Do not use npx wrangler deploy as the build command. Pages uploads the output folder automatically; Wrangler only needs an API token and is meant for Workers CLI deploys.
Optional (Wrangler CLI): Commit includes wrangler.jsonc. Locally or in CI you can run npm run deploy:cloudflare only if CLOUDFLARE_API_TOKEN (and usually CLOUDFLARE_ACCOUNT_ID) are set — create a token at Cloudflare API tokens with Account → Cloudflare Pages Edit and Workers Scripts Edit.
The default version format is v[version]r[revision].
[version] uses standard semantic versioning. [revision] is updated each time a new link or change is made.
View CONTRIBUTING.md for details on how to request links. You can also submit links on Google Forms if the Contributing Guide confuses you here.
I am only accepting contributions to list.md, I am not taking contributions on any code present here.
This repository uses a dual license:
| Scope | License | File |
|---|---|---|
| Site code (HTML, scripts, tooling, config) | MIT | LICENSE |
List data (list.md, generated JSON, link datasets) |
CC BY 4.0 | LICENSE-DATA |
You may copy, share, and remix the proxy list data with attribution. The website code is open under MIT with the usual permissions and warranty disclaimer.
CAPTCHA is tested using the official Google ReCAPTCHA demo
Automation (silent maintenance): The list is automatically checked every six hours. Each run re-checks HTTP for links in list.md and updates per-URL failure counts in link_status.json. Link filter metadata (docs/link_check_meta.json) and exported JSON are refreshed on every run. These updates do not bump revision or Last Updated in list.md, so users are not prompted to refresh unless you publish a release.
Sunday releases (user-facing): Revision (r###) and Last Updated in list.md only bump when the link checker runs on Sunday (or when you manually run the workflow with Bump revision and Last Updated checked). That is when users see the “new site update” banner. For a full weekly release, also bump the version (vX.Y) and write ## Update Notice in list.md on Sunday, then run python scripts/convert_list_to_json.py.
After three consecutive failing runs for the same URL, that row is eligible to be removed from list.md. The scheduled workflow keeps purging off by default (LINK_CHECK_NO_PURGE, so flaky CI does not mass-delete working proxies); counters still advance. To have the bot purge dead links from the repo, set the Actions repository variable LINK_CHECK_NO_PURGE to false, or run python scripts/link_checker.py locally with that variable unset. Use LINK_CHECK_PUBLISH_RELEASE=true locally to force a revision bump, or LINK_CHECK_PUBLISH_RELEASE=silent to force silent mode.
Manual: I will periodically update the list if I find new proxies, or if someone makes a pull request and I approve.
Auto-sort unsorted links: When an unsorted URL contains an existing provider name (e.g. gn-math, Noblocc, Velara), you can move it into that provider section with:
python3 scripts/autosort_unsorted_links.py # preview matches (dry-run)
python3 scripts/autosort_unsorted_links.py --apply # move links + refresh docs/data.json