Browser Leaks Test: Fingerprint, Antidetect and Bot Checks
ProxyField's free browser leaks test runs 40 checks on the browser you open it in, from antidetect spoofing and automation traces to canvas, WebGL and audio noise, WebRTC and DNS leaks and signs of a proxy, and sums them up in a trust score from 0 to 100.
It starts when the page opens, with no sign-up: open it in each browser or antidetect profile you want to test.
- Checkingnavigator.webdriver
- CheckingHeadless user agent
- CheckingDevTools protocol
- CheckingAutomation traces
- CheckingHeadless traits
- CheckingSoftware GPU
- CheckingUser agent vs Client Hints system
- CheckingUser agent version and header
- CheckingUser agent vs navigator.platform
- CheckingBrowser vs JavaScript engine
- CheckingBrowser version vs features
- CheckingSystem vs GPU
- CheckingSystem vs fonts
- CheckingSystem vs speech voices
- CheckingMain page vs Web Worker
- CheckingMain page vs iframe
- CheckingPatched browser functions
- CheckingCanvas noise
- CheckingWebGL noise
- CheckingAudio noise
- CheckingClient rects noise
- CheckingScreen size
- CheckingTime zone APIs
- CheckingLanguage settings
- CheckingCPU and memory
- CheckingTouch vs device type
- CheckingIP type
- CheckingVPN network
- CheckingTor exit node
- CheckingProxy headers
- CheckingTime zone vs IP
- CheckingLanguages vs IP country
- CheckingWebRTC leak
- CheckingDNS resolver
- CheckingNetwork OS (TCP/IP)
- CheckingConnection MTU
- CheckingLatency gap
- CheckingTLS client vs browser
- CheckingIPv4 and IPv6 paths
- CheckingSystem clock
Navigator and user agent
- Status
- Waiting for the checks
Client Hints
- Status
- Waiting for the checks
Hardware and GPU
- Status
- Waiting for the checks
Screen and window
- Status
- Waiting for the checks
Time zone and languages
- Status
- Waiting for the checks
Canvas, WebGL and audio
- Status
- Waiting for the checks
Fonts
- Status
- Waiting for the checks
Media devices and speech voices
- Status
- Waiting for the checks
Codecs
- Status
- Waiting for the checks
Permissions, storage and privacy
- Status
- Waiting for the checks
TLS fingerprint
- Status
- Waiting for the checks
TCP/IP fingerprint
- Status
- Waiting for the checks
WebRTC addresses
- Status
- Waiting for the checks
Each check shows Pass, Warning or Fail, what it found and how to fix it. The test is built for people who manage several browser profiles in antidetect browsers such as AdsPower, GoLogin, Dolphin Anty, Multilogin, Incogniton and BitBrowser, who run Selenium, Puppeteer or Playwright, or who browse through proxies.
The checks run in your browser and on ProxyField's checking server, which reads the TLS and TCP/IP traits of your connection. Nothing is saved: there is no account, no record of your results and nothing in browser storage. The server keeps a test's DNS lookups and connection details in memory for up to 5 minutes, so your browser can read them, then drops them. The fingerprint ID is computed from your browser's values on every run and is not stored.
| Question | Short answer |
|---|---|
| Can sites tell my antidetect profile is spoofed? | If its values contradict each other: read Fingerprint and Automation, where each fail names the value that gives the profile away (how profiles get caught) |
| Does my proxy leak? | Read Proxy and VPN and Leaks: WebRTC, DNS, time zone and 11 more network checks (network checks) |
| Why does another test say something else? | Each test reads its own values and scores them its own way (why) |
How to check your browser for leaks and spoofing
Test the browser exactly as you use it: the same profile, the same proxy and the same launch options.
-
Open this page in the browser or antidetect profile you want to test, with its proxy on, and let the 40 checks finish.
-
Read the trust score and the 4 verdicts, then open each Warning and Fail for what it found and how to fix it.
-
Change one setting at a time, press Run again, and compare the fingerprint ID across profiles: each profile should show its own.
What the results mean
Every check gets one of three results, and the trust score and four verdicts sum them up.
- Pass
- The value fits the rest of the browser and the connection.
- Warning
- Something unusual that real devices also show, such as a rare screen size or a language that does not fit the IP's country.
- Fail
- A contradiction or a trace that an unmodified browser does not show, such as
navigator.webdriverset totrueor a Mac user agent with a Direct3D GPU. - Trust score
- 0 to 100 for the whole test; the higher it is, the fewer problems the checks found.
- Fingerprint
- Consistent, or signs of spoofing in the fingerprint values.
- Automation
- None, or detected: traces of WebDriver, the DevTools protocol or a headless browser.
- Proxy and VPN
- None, or signs of a proxy or VPN in the IP and the connection.
- Leaks
- None, or a WebRTC or DNS leak.
- Fingerprint ID
- A hash of the values that stay stable, so the same browser shows the same ID on the next visit unless something changed.
The 40 checks in 3 groups
Automation: 6 checks
| Check | What it catches |
|---|---|
navigator.webdriver | the flag the WebDriver standard sets to true when a browser is under automation |
| Headless user agent | HeadlessChrome or another headless name in the user agent |
| DevTools protocol attached | the trace Puppeteer, Playwright and Selenium leave when they drive Chrome over the DevTools protocol; an open DevTools window shows it too |
| Automation globals | variables that Selenium, PhantomJS, Playwright and other tools add to the page |
| Headless traits | no PDF viewer plugins, an outer window size of 0, a missing window.chrome, a notification permission that contradicts itself |
| Software GPU | a WebGL renderer such as SwiftShader or llvmpipe: a virtual machine or a server without a graphics card |
Fingerprint consistency: 20 checks
- What the browser claims: the user agent against the Client Hints platform, against the Client Hints version and against
navigator.platform; the claimed browser against its JavaScript engine; the claimed version against the features that engine really has. - What the device claims: the operating system against the WebGL GPU (Direct3D on a Mac user agent), against the installed fonts and against the speech voices; plausible CPU cores and device memory; touch support against the device type; the screen size against media queries and the window.
- Values in other contexts: the main page against a Web Worker and against an iframe; native browser functions patched by a script.
- Noise: in canvas, WebGL pixels, the audio fingerprint and client rects.
- Locale: the time zone against the date offset; the languages against the locale and the
Accept-Languageheader.
Network and IP: 14 checks
- The IP: a datacenter IP, a VPN network, a Tor exit.
- Headers: proxy headers such as
ViaandX-Forwarded-For. - Location fit: the browser time zone against the IP's, the languages against the IP's country.
- Leaks: WebRTC, the DNS resolver against the IP, an IPv6 address from another network than the IPv4 one.
- The connection: the TCP/IP operating system against the browser's, a tunnel MTU, the latency gap, the TLS client against the claimed browser, the system clock against the server's time.
Ten of these are also the checks of the IP checker; the latency gap, the TLS client, the IPv6 network and the clock run only here.
How antidetect profiles get caught: contradictions, not uniqueness
A site does not need to know your fingerprint to flag it. It looks for values that cannot be true together. Direct3D exists only on Windows, so a profile that claims macOS while WebGL names Direct3D contradicts itself, and so does one with Windows fonts or Windows speech voices. So does a user agent that claims a newer Chrome than the engine's features show, or Client Hints that name another platform than the user agent.
Spoofing leaves seams. A script or extension that changes navigator values on the page often misses the copies a Web Worker or a fresh iframe reads, and a patched function stops looking native when a script inspects it. The test reads the values in all three places and checks the functions.
Noise can be measured. To give each profile its own canvas, WebGL and audio hashes, many antidetect browsers add small random changes to what those APIs return. A script can draw the same thing twice, or draw something whose result is known, and look for differences a real graphics card or audio stack does not make. Noise that changes on every read is easier to catch than noise that stays the same for the profile.
Uniqueness is another question. AmIUnique and the EFF's Cover Your Tracks measure how rare your fingerprint is among their visitors. A rare but consistent fingerprint is still a real device; a common but contradictory one is a spoof. This test scores consistency, and no browser is undetectable: the aim is a profile with nothing that contradicts itself.
How to fix failed checks in antidetect browsers
Most fixes are profile settings, not proxy settings. AdsPower, GoLogin, Dolphin Anty, Multilogin, Incogniton and BitBrowser name them differently, and labels can differ slightly between versions.
| Failed check | What to change in the profile |
|---|---|
| User agent vs Client Hints, engine or version | use a user agent of the same browser version as the profile's browser core, or update the app so the two match |
| OS vs WebGL GPU, fonts or voices | create profiles for the operating system your machine runs, or mask WebGL with a GPU that fits the claimed system, and use that system's fonts and voices |
| Main page vs Worker or iframe, patched functions | remove extensions or scripts that change values on top of the profile, and let the profile set them |
| Canvas, WebGL, audio or client rects noise | weigh the trade-off: with noise on, a script that looks for it can find it; with it off ("Real" or "Off"), profiles on one machine share those hashes |
| Time zone, languages, locale | set time zone, language and geolocation "based on IP", so they follow the proxy |
| WebRTC | choose the mode that replaces your IP with the proxy's ("Altered", "Replace", "Forward" or "Based on IP") |
| Screen, CPU cores, memory, touch | pick values that fit the device type: a desktop profile with touch points, or a phone profile with 32 CPU cores, contradicts itself |
| DNS | set the proxy type your provider gives (HTTP or SOCKS5), so names are resolved through the proxy |
Then compare fingerprint IDs: two profiles that show the same ID share their stable values, and a site that fingerprints can tie them together. Setup guides for each app: AdsPower, GoLogin, Dolphin Anty, Multilogin, Incogniton and BitBrowser, with an overview in antidetect browsers.
Automation traces: Selenium, Puppeteer and Playwright
A browser under automation shows itself in ways a person's browser does not:
- The WebDriver flag. Selenium and other WebDriver tools make
navigator.webdriverreturntrue, as the W3C standard requires. - The DevTools protocol. Puppeteer and Playwright drive Chrome over the DevTools protocol, and ChromeDriver uses it under Selenium; a page script can notice the connection. An open DevTools window uses it too, so the check can fail while you debug in a normal browser.
- Headless defaults. Headless Chrome names itself
HeadlessChromein the user agent unless you change it, and older headless builds have no PDF viewer plugins, an outer window of 0 by 0 and nowindow.chrome. - No graphics card. On a server, WebGL runs in software, and the renderer reads SwiftShader or llvmpipe.
If you automate a browser for testing or for collecting public data, these checks show what a site's bot detection sees. A headed browser on a machine with a real GPU, a lasting user profile and no automation flags leaves fewer traces; stealth plugins patch only the traces they know, and they fall behind new checks. Follow each site's terms. Guides: Selenium, Puppeteer, Playwright and browser fingerprinting in web scraping.
What a proxy changes in the network checks, and what it cannot
The proxy decides the IP, its network and type, and the traits of the TCP connection that reaches the site. The rest stays with your browser and your machine.
- TLS client. The handshake that starts an HTTPS connection, summed up as JA4 or JA3, depends on the software that opens it, and real Chrome, Firefox and Safari each have their own. A proxy tunnels the handshake unchanged, so a script that sends a Chrome user agent through a proxy still shows a script's handshake. More: TLS and TCP fingerprinting.
- TCP/IP and MTU. Through a proxy, the TCP connection that reaches the server is the proxy side's, so its operating system can contradict your browser's; through a VPN the packets are your own, but the tunnel lowers the MTU.
- Latency gap. The server times the TCP connection's own round trip and the round trip a page script measures. With a proxy in the path, the TCP round trip ends at the proxy while the script's runs all the way to you, so the second is much longer.
- IPv6 from another network. If your browser reaches the server over IPv6 from your own provider while the IPv4 address is the proxy's or VPN's, part of your traffic goes around it.
- System clock. A clock far from the server's time points to a paused virtual machine or a date set by hand; it can fail without any proxy.
Why Pixelscan, BrowserLeaks, CreepJS and this test disagree
Each test reads its own set of values, uses its own rules and turns them into its own verdict, so one profile can pass one test and fail another.
- Different checks. A value one test reads, another ignores, and two tests can read the same value and judge it differently.
- Different reference data. What is normal for a given Chrome version changes with each release, and tests update their rules on their own schedules.
- Different IP data. The IP type and location come from each test's own database.
- Timing. Checks that time the connection, or gather WebRTC addresses, can differ between two runs.
- A test is not a site. Anti-fraud systems also weigh your account, cookies, behavior and history, and they do not publish their rules.
When tests disagree, read the reason each one gives. A contradiction that one test names is there for any site that looks for it.
Proxy, VPN or antidetect browser: what fixes what
| Problem | What fixes it |
|---|---|
| Datacenter or VPN IP flagged | a residential or mobile proxy |
| Several profiles on one IP | a separate proxy for each profile |
| Time zone and languages | the profile's or the system's settings |
| WebRTC leak | the browser's or the profile's WebRTC setting |
| DNS leak | DNS on the proxy side, or through the VPN tunnel |
| Fingerprint contradictions, noise | the antidetect browser's profile settings |
| Automation traces | how the browser is launched |
| TLS client mismatch | sending the requests from a real browser |
What the full data tables show
Below the checks, collapsible tables list the raw values a site can read: navigator and user agent, Client Hints, hardware (CPU cores, memory, touch, GPU), screen and window, time zone and languages, the canvas hash, the WebGL vendor and renderer with a hash of its parameters, the audio hash, detected fonts, media devices and speech voices, codecs, permissions, storage and privacy flags (cookies, Do Not Track, Global Privacy Control), the TLS fingerprint (JA4, JA3 hash, TLS version, ALPN), the TCP/IP fingerprint (TTL, window, MSS, options) and the WebRTC IPs. Copy report puts them on your clipboard as JSON, so you can compare two profiles side by side.
Need proxies for your browser profiles?
The proxy answers only the network checks, and only part of them. If the IP was flagged as datacenter or VPN, ProxyField residential proxies from $1.95/GB or mobile proxies from $2.45/GB give each profile an IP of a home ISP or a mobile carrier; start with the Easy Trial: 1 GB for $2.95. For a profile that keeps one IP for weeks, dedicated ISP proxies cost from $2.29 per IP for 30 days ($2.29 in Turkey and Czechia, $2.79 in every other country).
No proxy changes the fingerprint, the time zone, WebRTC or the TLS handshake. Set those in the profile, give each profile its own proxy, and run this test again inside each one. Prices for every volume are on the pricing page.
Browser Leaks Test FAQ
Can't find your answer? Support is on 24/7 live chat, including help with setup and integration.
What is a browser leaks test?
ProxyField's browser leaks test is a check of what your browser reveals and whether it adds up: 40 checks in 3 groups (automation, fingerprint consistency, network and IP), a trust score from 0 to 100 and 4 verdicts. It shows WebRTC and DNS leaks, signs of a proxy or VPN, and the contradictions that give spoofed or automated browsers away.
How do I check if my antidetect browser is detectable?
Open this test inside the profile, with its proxy on, and read the Fingerprint and Automation verdicts: a fail names the value that contradicts the rest, such as a GPU that does not fit the claimed operating system. Then read the network checks for the proxy. No browser is undetectable, so the goal is a profile without contradictions, tested again after each app update.
What does the trust score in a browser test mean?
It sums up the checks from 0 to 100: the higher it is, the fewer problems they found. It is this test's own score, and another test weighs other values, while a site uses its own signals. A high score is a good sign, not a promise.
Why does the test say my fingerprint shows signs of spoofing?
At least one consistency check found values that real browsers do not combine, such as a user agent and Client Hints that disagree, a Web Worker that reports other values than the page, or noise in canvas or audio output. Open the failed checks: each names the values involved and the setting to change.
Can websites detect canvas noise?
Some can. A script can draw the same image twice, or draw one with a known result, and compare: random changes that no real graphics card makes show up as noise. That is why a canvas noise setting can fail this test while it gives each profile its own hash.
Why does an open DevTools window fail the automation check?
The check looks for the DevTools protocol connection that Puppeteer, Playwright and Selenium use to drive Chrome, and an open DevTools window uses the same protocol. Close DevTools and press Run again; if the check still fails, something else is attached to the browser.
Why does WebGL show SwiftShader or llvmpipe?
Those are software renderers: the browser draws WebGL on the CPU because it has no graphics card to use, as on most servers and many virtual machines, or because hardware acceleration is off. Real desktop and phone browsers report a GPU, so the check fails. Turn hardware acceleration on in the browser settings, or run the browser on a machine with a GPU.
What are Client Hints, and why do they contradict my user agent?
Client Hints are the newer way Chromium browsers report their brand, version and platform, in Sec-CH-UA headers and navigator.userAgentData. A user agent switcher, or a profile that changes only the user agent string, leaves the hints as they were, so a Windows user agent can arrive with hints that say macOS. Firefox and Safari do not send them.
Why are the values in a Web Worker different from the page?
A script or extension that rewrites navigator values on the page often does not reach Web Workers, which have their own navigator. The test reads both and fails when they differ, for example in the user agent, the languages or the CPU cores. A well-built antidetect profile sets them in both.
Show 11 more questionsShow fewer questions
What is a fingerprint ID?
A hash of the browser values that stay the same between visits, computed on each run and not stored. The same browser shows the same ID next time unless something changed, so you can check that a profile keeps its fingerprint and that two profiles do not share one.
Should every browser profile have its own fingerprint?
For profiles that must stay separate, yes: two profiles with the same fingerprint ID share their stable values, and a site that fingerprints can link them. Give each one its own proxy as well, since a shared IP links profiles too.
Which fingerprint values does a proxy change?
Only network ones: the IP, its location and type, and the TCP/IP traits of the connection that reaches the site. The user agent, screen, fonts, canvas, WebGL, audio, time zone, languages and the TLS handshake stay as your browser makes them.
Why does the TLS check say my browser is not what it claims?
Each browser's TLS handshake (JA4, JA3) is distinctive, and the check compares it with the browser your user agent names. A script or HTTP library with a browser's user agent fails, and so does a browser whose user agent was switched to another brand. A proxy cannot change it, because it passes the handshake through.
What does the latency gap check mean?
The server compares the round trip of your TCP connection with the round trip a script on the page measures. Through a proxy, the TCP connection ends at the proxy, so the page's round trip is much longer than the connection's. A large gap points to a proxy in the path, and no browser setting removes it.
Why does Pixelscan say my profile is fine when this test does not?
Each test reads its own values and uses its own rules, so their verdicts differ. Read which check failed here: if it names a real contradiction, a site that looks for it can find it too, whatever another test says.
Does fingerprint protection in Brave or Firefox fail these checks?
Some of them, by design. Brave adds small random changes to canvas, WebGL and audio output, which the noise checks can see, and Firefox with resistFingerprinting on reports UTC as its time zone, which can fail the time zone checks. These browsers trade consistency for privacy: fine for everyday browsing, a contradiction for a profile that must look like an ordinary device.
Can a fingerprint test tell that I'm in a virtual machine?
Often. A virtual machine without a passed-through graphics card renders WebGL in software, as SwiftShader or llvmpipe, and the software GPU check fails whatever operating system the browser claims. Its screen, fonts and hardware values can also be unusual for the device it claims to be.
Does the browser leaks test store my fingerprint?
No. The checking server sees your connection, as any site does, to read its TLS and TCP/IP traits, and it keeps DNS lookups and connection details in memory for up to 5 minutes before it drops them. Nothing is saved: there is no account, no record of results and nothing in browser storage, and the fingerprint ID is computed again on every run.
Do browser extensions change my fingerprint?
Some do. Extensions that block scripts, change the user agent or add canvas noise change values the checks read, often only on the page and not in Workers or iframes, which the consistency checks catch. An antidetect profile works more reliably without extensions that touch the fingerprint.
Why does the system clock check fail?
Your device's clock is far from the server's time. It happens on virtual machines that were paused and on devices with a date set by hand; turn on automatic date and time in the operating system's settings and press Run again.