HomeLearn → Proxy timezone mismatch

Proxy timezone mismatch

Most fingerprinting advice is about being ordinary — not having a rare canvas hash, not having an unusual font list. This one is different. An IP in New York paired with a browser clock in Karachi is not a rare combination; it is an impossible one. No amount of blending in helps, because the problem is not that you look unusual. It is that you look self-contradictory.

What the site is actually comparing

Three values, all free to obtain, none requiring anything clever.

SignalWhere it comes from
Your apparent location The IP the request arrives from, looked up in a geolocation database
Your browser's timezone Intl.DateTimeFormat().resolvedOptions().timeZone — a named zone, e.g. Asia/Karachi
Your clock offset new Date().getTimezoneOffset() — minutes from UTC, and it must agree with the zone above

Comparing them is one line of JavaScript and one database lookup. There is no machine learning involved, no behavioural model, no scoring threshold to tune. Either the IP's region and the browser's clock can describe the same person, or they cannot.

Why this one is worse than a rare fingerprint

A rare canvas hash makes you identifiable — it links your sessions to each other. Unhelpful, but not incriminating on its own; plenty of real people have unusual hardware.

A contradiction is different. There is no honest configuration that produces a Lahore clock on a Chicago IP. The only ways to get there are a proxy or a VPN with the browser left untouched — which is exactly what the check is looking for. It is not evidence that you are unusual. It is evidence that you are routing traffic.

The signals that have to agree

Timezone is the one people notice, because it is the one that breaks most visibly. It is not the only one tied to where you appear to be.

Two fixes that quietly do not work

This is the part worth writing down, because both look like they worked.

Setting the TZ environment variable

The obvious approach is to launch the browser with TZ=America/New_York. On Linux and macOS this generally works. On Windows, Chrome ignores it. The process starts, no error appears anywhere, and the browser reports the machine's real timezone exactly as before. Everything about the setup looks correct except the one value you were trying to change — and you only find out by checking the browser itself rather than the launch command.

Setting it once over the debugging protocol

The other approach is CDP's Emulation.setTimezoneOverride, applied when the page opens. That does work — until the first cross-origin navigation, at which point the override is gone and the real timezone is reported again.

This failure is particularly awkward because it passes a naive test. You open a fingerprint checker, the timezone is right, you conclude it is fixed. But a real session navigates: to a login page, to an OAuth provider, to the site itself. By the time anything is being decided about you, the override has lapsed. It has to be re-applied on every navigation, not set once at launch.

What to do instead

How Parallel handles it

Each profile's timezone is taken from its proxy's tested exit, not from anything you type. When a proxy check succeeds, the geolocation it returns is cached and the launcher uses it, so the clock follows the proxy rather than your machine or your memory.

The WebRTC public IP is set to the proxy's exit IP for the same reason — a leaked candidate stays consistent with the proxy instead of unmasking the real address.

And the override is applied over CDP and re-applied on every navigation, specifically because setting it once does not survive a cross-origin hop. We use CDP rather than the TZ variable because, on Windows, Chrome ignores TZ — and passing it through from the parent process can crash the launch outright.

Check yours

You do not need our software to test this. Open our fingerprint test through whatever proxy setup you use now, and compare the reported timezone against the country of your exit IP. Then navigate to another site and check again — the second reading is the one that usually disagrees.

Related reading

A clock that matches the IP, without you maintaining it

Parallel derives each profile's timezone from its proxy's real exit and keeps the override alive across navigations, so the combination stays coherent without a list to maintain. Three profiles free, forever.

Download for Windows