🌐

Introduction

First released in 2006, FoxyProxy is the original proxy switching tool, used by millions daily!
To support this free software, please donate or buy VPN/Proxy Servers in over 100 countries (including such remote places as Reunion Island).

If you upgraded from a previous version, and your proxy settings are missing, please import them.

Unified Code

FoxyProxy 8.* code has been unified for Chrome & Firefox, and Standard & Basic versions.

Users can import/export settings between all above mentioned.

FoxyProxy uses user-agent to identify browser-specific code and altering the user-agent at browser level (not webpage level) can interfere with its operation.

Private Browsing Permission

Chrome
On Chrome, users must enable "Allow in Incognito", if proxying in incognito mode is required
How to: Extensions in Incognito mode
Firefox
On Firefox, users must enable "Run in Private Windows", as it is required by Firefox for proxy settings
How to: Enabling or disabling extensions in private windows

Non-Destructive Editing

Editing & importing are non-destructive. Save must be clicked to apply changes.

See also: Destructive vs Nondestructive Editing

Proxy Authentication

Proxying Order

Proxy by Patterns Order

Share Preferences

Unified code for FoxyProxy & FoxyProxy Basic, on both on Chrome & Firefox, enables users to share their preferences.

Light/Dark Theme

FoxyProxy's theme is based on the browser's default light/dark theme.

Firefox on Android

Support is experimental and based on user feedback.

Show Hidden Elements

Some elements on the Toolbar Popup and Options page are disabled or hidden in FoxyProxy Basic and/or on Chrome.
You can toggle to view/enable them by clicking the FoxyProxy icon (on the top of the page).

How to Use

Toolbar Icon

Toolbar Popup

Changing options is disabled on managed storage.

Proxy by Patterns
Connections are proxied based on patterns
If there are no patterns that match the URL being loaded, connections are made without a proxy
Patterns are not applicable in remote PAC type (but apply to Store Locally)
Disable or Direct
Normal proxying is set to system and handled by the browser
Individual Proxy
Connections are passed through the selected proxy (or PAC)
β–Ά More
Show or hide additional options
User choice is temporarily stored in localStorage (not available in Private/Incognito)
Search Filter
Proxy Title, Hostname, & Port are searched and display filtered based on the input value (case-insensitive)
Use :port to filter by port
Quick Add
Add current page's host pattern to the selected proxy's include
Only top 10 active proxies are listed
Exclude Host
Add host (with its protocol) to the Global Exclude
Set Tab Proxy (Firefox only)
Select a proxy from the drop-down list for the current tab
Click button to set
Tab Proxy is processed before normal proxy settings
Only top 10 active proxies are listed
Toolbar badge shows the proxy and mouse-over title displays the selection details
Unset Tab Proxy (Firefox only)
Unset proxy for the current tab
Options
Open the Options page
IP
Get IP from FoxyProxy servers
Location
Open FoxyProxy site in a new tab to show location as well as any WebRTC leaks

Keyboard Shortcut (not available on Android)

You can change/set keyboard shortcuts.

Chrome
Go to: chrome://extensions/shortcuts
Firefox
Click the menu button ☰, click Add-ons and Themes and select Extensions.
Click the Tools for all add-ons cogwheel.
Click Manage Extension Shortcuts in the menu.
You will see the shortcut options (if available) for your installed add-ons.
See also: Manage extension shortcuts in Firefox

Options

Some options are not available in Chrome, but have been left for when sharing preferences between Chrome & Firefox.

Enable Storage Sync

Enable to sync storage if it is under 100KB. If the storage is over 100KB, there will be a notification and the Sync will be turned off automatically to avoid repeated errors.

storage.sync is not supported on Firefox for Android.

For Firefox a user must have Add-ons checked under the "Sync Settings" options in "about:preferences".

The main use case of this API is to store preferences about your extension and allow the user to sync them to different profiles. You can store up to 100KB of data using this API. If you try to store more than this, the call will fail with an error message. The API is provided without any guarantees about uptime or performance.

storage.sync
Storage quotas for sync data

Auto Backup

Automatically backup settings to the browser configured downloads folder on save

Limit WebRTC (requires "privacy" permission)

Toggle WebRTC browser settings as it has been known to leak real IP

Toggle changes the browser preferences and does not require SAVE.

Incognito/Container

Set a proxy for Incognito (Private Mode) and/or Containers

Incognito proxy behaviour is slightly different in Chrome and Firefox.

Chrome
Only Incognito option is available
If incognito is not set, normal settings apply to both regular and incognito windows
Firefox
Incognito/Container are processed before standard proxy settings (and after Tab Proxy)
Generic names are used for containers since getting their details requires "contextualIdentities" permissions which would enable containers automatically for the user β“˜

Keyboard Shortcut (not available on Android)

Preselect a proxy to associate with a keyboard shortcut action

Global Exclude

List of hosts that should not be proxied

What is controlling the passthrough and what formats are supported?
Chrome Firefox
localhost & local network passthrough (global exclude) localhost & local network passthrough (global exclude)
Proxy by Patterns browser FoxyProxy
scheme, host, wildcard, CIDR (IPv4)
n/a
FoxyProxy (8.0-8.3)
FoxyProxy
scheme, host, wildcard, CIDR (IPv4)
Single Proxy browser browser
scheme, host, wildcard, CIDR
n/a
FoxyProxy (8.0-8.3)
FoxyProxy
scheme, host, wildcard, CIDR (IPv4)
PAC URL browser ❌ β“˜ β“˜ browser browser
host, CIDR
Incognito browser browser
scheme, host, wildcard, CIDR
n/a
FoxyProxy (8.0-8.3)
FoxyProxy
scheme, host, wildcard, CIDR (IPv4)
Container n/a n/a n/a
FoxyProxy (8.0-8.3)
FoxyProxy
scheme, host, wildcard, CIDR (IPv4)
Tab Proxy n/a n/a n/a
FoxyProxy (8.0-8.3)
FoxyProxy
scheme, host, wildcard, CIDR (IPv4)
Examples
Pattern match no-match
example.com example.com www.example.com
.example.com
*.example.com
www.example.com example.com
*example.com example.com
www.example.com
xyzexample.com
google.com
.com example.com
www.example.com
example.org
See also

Delete Browser Data

Delete cookies, indexedDB storage, DOM local storage

Restore Defaults

Restore all FoxyProxy settings to default values

Browser settings are not changed (e.g. previously set proxy values or Limit WebRTC).

Preferences: Import/Export

You can import/export Preferences (for backup or sharing) from/to a local file on your computer.

Import is non-destructive. Click Save to apply the changes.

Save

Please note that changes will not take effect until they are saved.

Save is disabled on managed storage.

Proxies

FoxyProxy identifies proxies by their "hostname:post" or PAC URL.

In case more than one proxy with the same "hostname:post" is needed, one or more letters can be added to the port to separate them, and FoxyProxy will remove the letters later. (v8.8) (Firefox only, not practical on Chrome)

127.0.0.1:9050
127.0.0.1:9050a
127.0.0.1:9050b
127.0.0.1:9050c

The augmented port method is only only available for SOCKS & HTTPS (not HTTP, due to the limitation of the Firefox API).
For Unix Domain Sockets, where port is ignored, only numbers should be used.

Another solution is to prepend hostnames where possible e.g. <sometext>.localhost since they all resolve to 127.0.0.1 internally.

Proxy

Add
Add a new proxy entry
Search Filter
Proxy Title, Hostname, & Port are searched and display filtered based on the input value (case-insensitive)
Use :port to filter by port
Get Location (optional)
Get location details for proxies from FoxyProxy Servers

Individual Proxy

If FoxyProxy is to set to use an Individual Proxy/PAC, editing proxy's hostname, port, or PAC URL, may result in a mismatch until it is set again.

Toggle Button
Toggle proxy active or inactive
Inactive proxies do not show in the toolbar popup select
⎘ Duplicate Proxy
Click to duplicate proxy and its patterns
Delete
Delete the proxy and its patterns
Up/Down Triangle
Move the proxy up or down
Title
Set the proxy title
Type
HTTP/HTTPS/SOCKS4/SOCKS5 to be used with hostname & port
PAC to be used with PAC URL
QUIC (HTTP/3) proxy is only supported by Chrome (not available on Firefox). Support for QUIC proxies in Chrome is currently experimental and not ready for production use. β“˜
Country
Set the proxy country flag
City
Set the proxy city
Color
Set the proxy color
Hostname & Port
Required for HTTP/HTTPS/SOCKS type
Username & Password
To be used for HTTP/HTTPS/SOCKS types
SOCKS5 username & password is only supported by Firefox (not available on Chrome)
If not set, HTTP/HTTPS authentication will be handled by the browser
Username & Password are port specific and different ones can be set for different ports
Proxy DNS (Firefox only)
Option to pass DNS to the SOCKS proxy when using SOCKS
See also:
PAC URL (not available on Android)
Required for PAC type
Proxy Auto-Configuration file (PAC) can be used to handle all proxying configurations
PAC is a configuration file, not a proxy server
Patterns are not applicable in PAC type
See also: Proxy Auto-Configuration (PAC) file
Store Locally (Chrome only)
Option to store PAC locally
Option should only be used for altering remote PAC rules
Storing large or many PACs locally is not recommended and can prevent browser sync
There are limits on the overall PAC length when set locally (could be 512kb)
Individual Proxy
  • All PACs will be set as remote PAC, regardless of the checkbox state
Proxy by Patterns
  • Locally stored PACs will be processed in order, after processing other proxy patterns
View
Click to fetch and display the remote PAC

DNS (Domain Name System) Resolution

Following table demonstrates the DNS resolution when a proxy is used.

Is name resolution (DNS) done client side, or proxy side?
Scheme Chrome Firefox DoH (DNS over HTTPS)
HTTP Name resolution is always done proxy side β“˜ proxy side See Proxy DNS
HTTPS (expected to be proxy side) proxy side See Proxy DNS
SOCKS4 Name resolution for target hosts is always done client side, and moreover must resolve to an IPv4 address (SOCKSv4 encodes target address as 4 octets, so IPv6 targets are not possible). β“˜ See Proxy DNS See Proxy DNS
SOCKS5 Name resolution is always done proxy side β“˜ See Proxy DNS See Proxy DNS
QUIC A QUIC proxy uses QUIC (UDP) as the underlying transport, but otherwise behaves as an HTTP proxy. β“˜ n/a n/a

Local Servers

FoxyProxy can be used with local proxy servers:

Examples
Server Type Hostname Port (default)
Burp Suit HTTP 127.0.0.1 8080
Privoxy HTTP 127.0.0.1 8118
Psiphon SOCKS5 127.0.0.1 60351
TOR SOCKS5 127.0.0.1 9050
v2rayA SOCKS5
http
http with shunt rules
127.0.0.1 20170
20171
20172
NekoRay/NekoBox SOCKS5
http
127.0.0.1 2080
2081
Shadowsocks SOCKS5 127.0.0.1 1080

Patterns

Add patterns to be used in "Proxy by Patterns"

Duplicate patterns will be removed.

πŸ“₯ Import
Import patterns that were exported
πŸ“€ Export
Export patterns to import later
Quick Add
Add ready-made patterns
Plain Host matches hostnames that contain no dots, e.g. http://intranet/
Include/Exclude
Select to include or exclude URL that matches the pattern
Type
Select Wildcard or Regular Expression
Title
Set the pattern title
Pattern
Set the pattern
Enable
Enable/disable the pattern
Selectors only show enabled patterns
Delete
Delete the pattern

Pattern Guide

Wildcard
A glob is just a string that may contain wildcards
There are two types of wildcard, and you can combine them in the same glob:
  1. * matches zero or more characters
  2. ? matches exactly one character
Leading or trailing * is not necessary
Regular Expression
Regular expressions are created using new RegExp() so there is no need to escape forward slashes
There is no need to double escape special characters (already happens when saved to storage)
Examples
Type Pattern match no-match
Wildcard example
example*
*example
*example*
http://help.example.com/
https://example.com/
https://google.com/ref=examplelist
https://google.com/
Wildcard example.com https://example.com/
http://help.example.com/
https://google.com/ref=help.example.com
https://google.com/
Wildcard .example.com
*.example.com
http://help.example.com/
https://google.com/ref=help.example.com
https://example.com/
Wildcard ://*.example.com
*://*.example.com
http://help.example.com/
https://help.example.com/
https://example.com/
https://google.com/ref=help.example.com
Wildcard https://exam???.
https://exam???.*
https://example.com/
https://example.org/
https://example.com/
https://exam.com/
http://example.com/
Reg Exp ^https://(www|mail)\.google\.com/ https://www.google.com/
https://mail.google.com/
https://google.com/

Bulk Edit

Bulk edit examples for the advanced users

Examples
Change all types document.querySelectorAll('[data-id="type"]').forEach(i => i.value = 'https')
Change all ports document.querySelectorAll('[data-id="port"]').forEach(i => i.value = '443')
Change all titles document.querySelectorAll('[data-id="title"]').forEach(i => i.value += '-set')
Change all usernames document.querySelectorAll('[data-id="username"]').forEach(i => i.value = 'user')
Change all passwords document.querySelectorAll('[data-id="password"]').forEach(i => i.value = 'pass')
Open all proxies document.querySelectorAll('details.proxy').forEach(i => i.open = true)
Close all proxies document.querySelectorAll('details.proxy').forEach(i => i.open = false)

Import

FoxyProxy Account
Import proxies from FoxyProxy account
Imported content will be added to the existing proxies
Import from URL
Import preferences (as valid JSON) from a remote URL
Imported content will be added to the existing proxies
Proxy List
Imported content will be added to the existing proxies
Simple
1.2.3.4:1080
example.com:443
example.com:3128:user:pass
Extended
All applicable parameters can be passed as search parameters (case-insensitive) (v8.0+)
e.g. active, title, color, type (http, https , socks4, socks5, pac), username, password, cc, city
http://1.2.3.4:1080
https://example.com:443
http://user:pass@1.2.3.4?color=663300
socks5://100.10.11.12:1080?title=China&cc=CN&city=Beijing
https://user:password@78.205.12.1:21?color=ff00bc&title=work%20proxy

https://example.com:443?active=false&title=Work&username=abcd&password=1234&cc=US&city=Miami
http://pac-url.com/etc?type=pac&title=Work PAC&color=663300
Import from older versions
Import older settings JSON (e.g. FoxyProxy_YYYY-MM-DD.json)
Old foxyproxy.xml format can be imported in FoxyProxy v7.5.1 and then exported as JSON

Pattern Tester

  1. Enter URL to test
  2. Select the pattern type
  3. Enter pattern details
  4. Click Test when ready
  5. Result will be match βœ… or fail ❌

Log (Firefox mainly) (limited on Chrome v8.9)

Enterprise Policy (v8.2)

FoxyProxy supports enterprise policy and managed storage, and they can be configured to set FoxyProxy options.

storage.managed is not supported on Firefox for Android.

Default Options (v8.9)
{
  "mode": "disable",          // mandatory: current option, necessary to enable
  "sync": false,              // optional:  not necessary as it will be disabled on managed storage
  "autoBackup": false,        // optional:  not necessary as save is disabled on managed storage
  "passthrough": "",          // optional:  Global Exclude
  "theme": "",                // optional:  set the theme
  "container": {},            // optional:  Incognito/Container settings
  "commands": {},             // optional:  keyboard shortcut settings
  "data": []                  // mandatory: array of proxies and their patterns
}
Chrome Firefox
View policy chrome://policy/ about:policies
FoxyProxy ID gcknhkkoolaabfmlnjonogaaifnjlfnp foxyproxy@eric.h.jung
FoxyProxy Basic ID dookpfaalaaappcdneeahomimbllocnb foxyproxy-basic@eric.h.jung
FoxyProxy beta ID Copy the ID from chrome://extensions foxyproxy@eric.h.jung
policies.json
{

  "3rdparty": {
    "extensions": {
      "gcknhkkoolaabfmlnjonogaaifnjlfnp": {
        "mode": "pattern",
        "data": []
      }
    }
  }

}
{
  "policies": {
    "3rdparty": {
      "Extensions": {
        "foxyproxy@eric.h.jung": {
          "mode": "pattern",
          "data": []
        }
      }
    }
  }
}
Location: Linux β—¦ Chrome: /etc/opt/chrome/policies/managed
β—¦ Chromium: /etc/chromium/policies
β—¦ System-wide: /etc/firefox/policies
β—¦ Specific Firefox: firefox/distribution
See also β—¦ Set policies
β—¦ Configuring Apps and Extensions by Policy
β—¦ Enterprise policies
β—¦ How to add policy support
β—¦ policy-templates

Managed Storage

A storage.managed object that represents the managed storage area. Items in managed storage are set by the domain administrator or other native applications installed on the user's computer and are read-only for the extension.

Native manifests are specially formatted JSON files that are provisioned on the user's computer by some means outside the extension installation process. For example, a native manifest might be provisioned by a device administrator or by a native application installer

{
  "name": "foxyproxy@eric.h.jung",
  "type": "storage",
  "data": {
    "mode": "disable",
    "sync": false,
    "passthrough": "",
    "container": {},
    "commands": {},
    "data": []
  }
}
See also

Support