Skip to content

Diagnostic 02 / Consistency

Does this browser agree with the address it connects from?

A proxy changes your exit IP. It does not change your operating system's time zone, your declared languages, or the route WebRTC negotiates for itself. Sites compare those, and the comparison costs them nothing.

Compares
Exit IP geography
Against
Time zone, locale, WebRTC
Server call
One IP echo
Stored
Nothing

01Check

The comparison

Run the check.

One request reads the address this page arrived from. Everything else happens in the browser: Intl for the time zone, navigator for the languages, and a short gathering pass for WebRTC.

This reads your exit IP once, then gathers ICE candidates against two public STUN servers. The gathering pass takes up to five seconds and is the only part you are likely to notice.

Nothing has been checked yet.

WebRTC gathering opens a peer connection and talks to a STUN server, which is observable, so this page does not do it until you ask. Pressing the button runs three things.

  1. 01A single GET to the echo endpoint returns the address your request arrived from, plus whatever coarse geography the edge in front of this app attached to it.
  2. 02The browser's own time zone, clock offset and declared languages are read locally, with no request at all.
  3. 03A peer connection gathers ICE candidates against two STUN servers, so any public address WebRTC discovers can be held up against your exit IP.

02Resolution

What fixes it

Where each mismatch is actually fixed.

None of this is exotic. It is configuration, applied when a session starts rather than after a site has already scored it.
  • 01

    Time zone derived from the exit IP

    The zone has to come from the address the session exits through, set at the browser process so that Intl and Date agree. Patching one of them from page script produces a contradiction that is easier to spot than the mismatch it was meant to hide. Every serious tool in this category does this, VeilBrowser included. It is a baseline, not a reason to choose one.
  • 02

    Locale derived from the same place

    Accept-Language is sent on every request before any script runs, so a region subtag that contradicts the exit IP is visible server-side without a single line of JavaScript. The header, navigator.language and navigator.languages all have to come from one source.
  • 03

    The proxy carried below the page, with names resolved at the exit

    WebRTC negotiates its own route, so a proxy configured inside the page cannot constrain it. VeilBrowser carries the proxy at the browser process and uses socks5h, which resolves hostnames at the proxy exit instead of on the local machine, so lookups follow the same path as the traffic.
  • 04

    The fleet on machines you run

    This is the part the alternatives do not offer. Browsers execute on your own hardware, or on a fleet you self-host and operate, so the environment is yours to inspect and to keep consistent. Accounts, plans and licence verification still run against our cloud.

This check is free and needs no account. Beyond it, plans are paid by card from the first day with no trial, and enterprise, which starts at $5,000, begins with a conversation.