Environment consistency

EnvTrace Current version 1.0 Last reviewed

You use this result to check whether the browser's timezone, language, operating system, and graphics renderer belong with the public exit for this visit. If WebRTC also exposes another public address, the report names that on its own.

Each comparison is a match, a mismatch, or unknown when there is nothing to compare. The report turns those into an environment health score from 0 to 100 and lists the item that disagreed. A higher score means the known signals line up more closely. Follow the issue list to the timezone, the language, WebRTC, or the device description, and you can see what to change.

Which signals consistency compares

Consistency is a set of separate comparisons, not a real-versus-fake switch. Your timezone can match while your language does not. The report names the comparison that disagreed.

Four comparisons run today: the IP's country against the browser timezone, the IP's country against the browser language, the page's public IP against public addresses from WebRTC, and whether the claimed operating system, platform, and GPU contradict each other.

DNS location is not part of this comparison yet. With no DNS result, that item stays unknown. EnvTrace does not record a mismatch just because DNS is missing.

IP country and browser timezone

The browser timezone comes from the operating system, usually as a timezone name and an offset from UTC. On the IP side, EnvTrace uses the offsets that country commonly uses. This is not GPS, and it is not a city-level fix.

If the browser offset falls inside that country's usual range, the result is a match. If it falls outside, the result is a mismatch, and the report says “Timezone doesn't match IP country.” With no country, or no offset table, the result is unknown rather than a mismatch.

A Japan IP with Asia/Shanghai is a mismatch when Shanghai's offset sits outside Japan's usual range. There is no separate “nearby, so ignore it” state. If you keep a home timezone while traveling, EnvTrace records the same issue.

IP country and browser language

This comparison uses the base language code and the languages common in the IP's country. zh-CN is compared as zh. Language is still a preference, not an identity.

If that base code is not in the country's list, the result is a mismatch, and the report says “Language doesn't match IP country.” A US IP with a Chinese browser raises this issue. To make the environment fit the exit, set the browser language to one that country commonly uses.

With no country or no language list, the result is unknown.

The page's public IP and WebRTC

This comparison uses public addresses from WebRTC and the public IP of this page load. Private and link-local addresses are left out.

If a WebRTC public address differs from the page IP, the result is a mismatch, and the report says “WebRTC exposes your real network.” The browser exposed a second public exit.

If the page's public IP is not known yet, exposed WebRTC addresses stay unknown. They are not called a leak. Local addresses alone are not treated as a conflict with the exit IP.

When device signals count as inconsistent

Device consistency is marked inconsistent only when two signals clearly exclude each other. An uncommon browser, resolution, or font set is not inconsistent just because it is uncommon. With no such contradiction, the device stays consistent.

The operating-system check compares the system claimed by the User-Agent, navigator.platform, and the Client Hints platform. A conflict is recorded only when Windows, macOS, iOS, and Android exclude each other. iOS together with macOS is not a conflict, because iPadOS often reports a desktop platform. Linux, unknown, or vague platform strings do not conflict on their own.

The GPU check recognizes two clear contradictions. One is a WebGL renderer that names an Apple GPU while the operating system is not macOS or iOS. The other is a renderer that names Direct3D while the operating system is not Windows. An iPhone User-Agent whose renderer is only an NVIDIA name, with neither Apple GPU nor Direct3D, is not a conflict under this method.

There is also a form-factor contradiction: the browser claims a phone or tablet, reports no touch, and the short side of the screen is already desktop-sized. A desktop that happens to have a touchscreen is not flagged for having touch.

Any of these adds “Device signals don't add up” to the report.

How these results enter the health score

The report shows an environment health score from 0 to 100 and lists the issues that fired. The score is built from dimensions that have data. A dimension with no data is left out. It is not filled with a guess.

Location consistency reads timezone and language. If both are unknown, that dimension stays out of the score. A mismatch lowers it and writes the matching issue.

Device consistency stays healthy until two signals exclude each other. That contradiction lowers the dimension and writes the device issue.

Leak protection reads WebRTC. A different public exit lowers it. Local addresses alone also lower it, by less than a different public exit.

IP risk and proxy quality stay pending until network intelligence is available. They are not guessed from the operator name. Automation reads signals such as webdriver. It is not one of the comparisons above.

How a few common cases are recorded

Take a US IP, a browser offset inside the usual US range, language en, a WebRTC public address equal to the page IP, and no contradiction between the operating system and the GPU. Timezone, language, and WebRTC are matches, and the device is not flagged.

The same US IP with browser language zh is a language mismatch, and the report adds “Language doesn't match IP country.” If the offset is still inside the US range, timezone stays a match.

A German IP, timezone Europe/Berlin, and WebRTC exposing a different public IP is a WebRTC mismatch, reported as “WebRTC exposes your real network.”

A User-Agent that claims iPhone with a Direct3D renderer is a GPU and operating-system conflict, reported as “Device signals don't add up.” A renderer that is only an NVIDIA name, with neither Apple GPU nor Direct3D, is not a device conflict.

What to do with a match or a mismatch

A match means these observations describe one environment. You can treat the current exit, timezone, and language as a set.

A mismatch names the item. If the timezone disagrees, compare the system timezone with the exit's country. If the language disagrees, compare the browser language with languages common in that country. If WebRTC disagrees, the browser exposed a second public exit. Travel with a home timezone, a company VPN, or a remote desktop often shows up this way, and once you know which item it is, you can decide whether to change it.

How to read the result

Read the health score and the risk band first, then the issue list for which comparison disagreed.

  • Timezone doesn't match IP country: compare the system timezone with the exit's country.
  • Language doesn't match IP country: compare the browser language with languages common in that country.
  • WebRTC exposes your real network: the browser exposed a public address different from the page exit.
  • Device signals don't add up: the operating system, platform, Client Hints, or GPU describe setups that exclude each other.

An item missing from the issue list was not a mismatch this time, or it is still unknown.

Version

Version 1.0 describes the comparisons you see now: IP country against timezone, IP country against language, the page's public IP against WebRTC public addresses, whether device signals exclude each other, and how those results enter the health score and the issue list. DNS is not compared yet.

A material change to the comparisons or the score gets a new version.