# PAC engine differences

Source: https://findproxyforurl.net/engines/differences/ · updated 2026-10-06

The same proxy.pac can return different answers in Chrome, Firefox and pactester. This table puts the newest version of each engine side by side. Every cell says where the claim comes from.

Values describe the newest version range of each engine. Older ranges, for example Chrome 51 and
older, which pass the full URL to the script, are listed on each [engine page](https://findproxyforurl.net/engines/).
*code* means read in the engine's source code at a pinned commit, *doc* means vendor documentation,
*lab* means observed in a lab run, and *expert* means practitioner knowledge that is not verified yet.

Test how your own file behaves in each engine with the [online PAC file tester](https://findproxyforurl.net/check/).


| Behaviour | Chrome ≥ 52 | Firefox | pacparser ≥ 1.5.1 |
|---|---|---|---|
| alert() output | netlog (code 2026-10-04) | console (code 2026-10-04) | console (code 2026-10-04) |
| Non-ASCII result rejected | true (code 2026-10-04) | false (code 2026-10-04) | false (code 2026-10-04) |
| DNS lookups | async (expert) | sync (code 2026-10-04) | sync (code 2026-10-04) |
| dnsResolve is IPv4 only | true (code 2026-10-04) | false (expert) | true (code 2026-10-04) |
| JavaScript level accepted | latest (code 2026-10-04) | latest (code 2026-10-04) | latest (doc 2026-10-04) |
| Calls FindProxyForURLEx if defined | false (code 2026-10-04) | false (code 2026-10-04) | true (code 2026-10-04) |
| Microsoft *Ex functions | true (code 2026-10-04) | false (code 2026-10-04) | true (doc 2026-10-04) |
| Global variables persist between calls | true (code 2026-10-04) | true (expert) | true (code 2026-10-04) |
| Host lower-cased by the engine | true (expert) | true (expert) | false (code 2026-10-04) |
| myIpAddress() source | routing_ipv4 (expert) | routing_ipv4 (code 2026-10-04) | user_supplied (code 2026-10-04) |
| Native (C++) bindings | alert, myIpAddress, dnsResolve, isPlainHostName, dnsResolveEx, myIpAddressEx, sortIpAddressList, isInNetEx (code 2026-10-04) | dnsResolve, myIpAddress, alert (code 2026-10-04) | dnsResolve, myIpAddress, dnsResolveEx, myIpAddressEx, alert (code 2026-10-04) |
| On exception | direct (code 2026-10-04) | direct (code 2026-10-04) | error (code 2026-10-04) |
| On non-string / undefined result | direct (code 2026-10-04) | direct (code 2026-10-04) | stringify (code 2026-10-04) |
| URL passed to FindProxyForURL | https_path_query (code 2026-10-04) | all_path_query (code 2026-10-04) | none (code 2026-10-04) |

CSV: https://findproxyforurl.net/engines/differences/engine-differences.csv
