Windows WinINet (desktop apps, .NET, Java)

Used by: apps using WinINet, .NET Framework, .NET, Java.

Helper library

Emulated helper library (CC0-1.0).

Version ranges and quirks

Later ranges list only what changes compared with the range before.

Windows 11 WinINet (11-25H2)

Measured on Windows 11 25H2 in October 2026. Apps that use the system proxy settings through WinINet, .NET or Java see the host in lower case. Java and some Windows components also cut the path from http:// URLs. Test your file with this profile on /check/.

BehaviourValueSource
alert() outputignored
alert() exists and returns false, so calling it does not stop the script.
lab, verified 2026-10-11
Non-ASCII result rejectedfalse
Non-ASCII characters in the result are accepted.
lab, verified 2026-10-11
shExpMatch is case-sensitivetrue
shExpMatch compares case-sensitively and knows only * and ?. Characters such as [ ] + ( ) $ | are taken literally, so some patterns match differently from Chrome.
lab, verified 2026-10-11
dnsResolve is IPv4 onlytrue
dnsResolve returns only IPv4 addresses, and it returns false, not null, when a name does not resolve.
lab, verified 2026-10-11
JavaScript level accepted2017
About ES2017: let, const, arrow functions, classes, template strings and array spread work. Optional chaining (?.), ?? , object spread {...o}, BigInt and newer regular expression syntax are syntax errors, and then the whole file fails to load.
lab, verified 2026-10-11
Calls FindProxyForURLEx if definedtrue
If the file defines FindProxyForURLEx, Windows calls it instead of FindProxyForURL. A file with only FindProxyForURLEx works too.
lab, verified 2026-10-11
Microsoft *Ex functionstrue
dnsResolveEx, isInNetEx, isResolvableEx, sortIpAddressList and myIpAddressEx are available.
lab, verified 2026-10-11
Global variables persist between callstrue
Global variables keep their values from one call to the next.
lab, verified 2026-10-11
IPv6 host passed in bracketstrue
An IPv6 host reaches the script in brackets, for example [2001:db8::1].
lab, verified 2026-10-11
Host lower-cased by the enginetrue
WinINet, .NET and Java lower-case the host, and the scheme and host part of the URL, before the script runs. The path keeps its case.
lab, verified 2026-10-11
Largest PAC file accepted (bytes)1048576
A PAC file larger than about 1 MiB is rejected.
lab, verified 2026-10-11
Functions built into the engine (native)isPlainHostName, dnsDomainIs, localHostOrDomainIs, isResolvable, isInNet, dnsResolve, myIpAddress, dnsDomainLevels, shExpMatch, weekdayRange, dateRange, timeRange, alert, isResolvableEx, isInNetEx, dnsResolveEx, myIpAddressEx, sortIpAddressList, getClientVersion
All 19 PAC functions, including the Microsoft *Ex functions, are built into the engine. The checker imitates them from the measured results.
lab, verified 2026-10-11
On exceptionerror
If the script throws an error, the program that asked for a proxy gets an error instead of an answer. Browsers go DIRECT in this case.
lab, verified 2026-10-11
On non-string / undefined resultstringify
A result that is not a string is turned into text and read as a proxy list. undefined, null or a number give no usable entry, so the connection goes direct; an array such as ["PROXY a:1"] works.
lab, verified 2026-10-11
How the returned string is readwindows
Windows reads the returned string loosely. An entry that contains DIRECT anywhere becomes DIRECT, so a missing ';' before DIRECT sends traffic direct. Lower-case keywords are skipped, a missing port becomes 80, and SOCKS5 is misread. The checker shows the list Windows actually uses.
lab, verified 2026-10-11
Proxy keywords understoodPROXY, HTTPS, SOCKS, DIRECT
HTTP is not a keyword here. SOCKS5 and SOCKS4 are read as SOCKS followed by a broken host name.
lab, verified 2026-10-11
URL passed to FindProxyForURLhttps_to_origin
For https:// URLs the script sees only scheme, host and port, for example https://www.example.com:8443/. http:// URLs reach the script whole, with path, query and #fragment.
lab, verified 2026-10-11

Function availability

Derived from each engine's vendored helper library plus its native bindings (see engines).
Functionchromium
<=51
chromium
>=52
firefox
all
pacparser
<=1.4.6
pacparser
>=1.5.1
winhttp
11-25H2
wininet
11-25H2
reference
all
isPlainHostNameyesyesyesyesyesyesyesyes
dnsDomainIsyesyesyesyesyesyesyesyes
localHostOrDomainIsyesyesyesyesyesyesyesyes
isResolvableyesyesyesyesyesyesyesyes
isInNetyesyesyesyesyesyesyesyes
dnsResolveyesyesyesyesyesyesyesyes
myIpAddressyesyesyesyesyesyesyesyes
dnsDomainLevelsyesyesyesyesyesyesyesyes
shExpMatchyesyesyesyesyesyesyesyes
weekdayRangeyesyesyesyesyesyesyesyes
dateRangeyesyesyesyesyesyesyesyes
timeRangeyesyesyesyesyesyesyesyes
alertyesyesyesnoyesyesyesyes
dnsResolveExyesyesnoyesyesyesyesno
myIpAddressExyesyesnoyesyesyesyesno
isResolvableExyesyesnoyesyesyesyesno
isInNetExyesyesnoyesyesyesyesno
sortIpAddressListyesyesnononoyesyesno

Rules with notes for wininet