How do sites know my time zone?
Through JavaScript's Intl and Date, which any page can use without a permission prompt. The IP's time zone comes from the same kind of location database that places your IP in a city.
Any page can read your system's time zone without asking, and every site knows roughly where your IP is. When the two disagree, say an IP in Japan and a clock on China Standard Time, it's one of the first signs sites use to spot a VPN or proxy. Here are both, side by side.
How to fix
You're in the in-app browser of , so the results below are that browser's. To test the browser you normally use, copy the link and open it in Safari or Chrome.You're in an app's in-app browser, so the results below are that browser's. To test the browser you normally use, copy the link and open it in Safari or Chrome.You're in WeChat, so the results below are its in-app browser's. To test the browser you normally use, tap ··· at the top right and choose Open in Browser.
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx, and right now you're in xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx. You speak xxxx xxxx xxxx xxxx, and your clock is set to xxxx xxxx xxxx xxxx xxxx, in xxxx xxxx format.
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
You're on xxxx xxxx xxxx xxxx xxxx, using xxxx xxxx xxxx xxxx xxxx, with a xxxx xxxx xxxx xxxx screen and xxxx xxxx xxxx xxxx graphics: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx.
You get online through xxxx xxxx xxxx, xxxx xxxx xxxx xxxx, xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx; the DNS server that looks up sites for you is in xxxx xxxx. xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx.
You prefer xxxx xxxx, and xxxx xxxx xxxx; xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx. xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx. Your fonts drop a hint: xxxx xxxx xxxx xxxx xxxx. As for your age, xxxx xxxx xxxx xxxx xxxx.
To a site, this is xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx. xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx. You opened this page xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx, xxxx xxxx, xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx.
In a crowd, xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx.
More bits, rarer: each bit halves the people who look like you. The readings aren't independent (a 4K screen and a high-end card often come together), so the whole fingerprint is counted on its own, not multiplied up from the parts.
To tell you how many people share your settings, this site keeps anonymous counts: no IP, no full fingerprint, no record of any single visit. ·
CF-Connecting-IPrequest.cf.cityrequest.cf.latituderequest.cf.asOrganizationedns.ip-api.comrequest.cf.timezoneDNS PTRrequest.cf.colorequest.cf.tlsVersion/cdn-cgi/trace · kex, sni/cdn-cgi/trace · warpTLS ClientHelloprobe.1ms.dog · TCP SYNprobe.1ms.dog · JA4probe.1ms.dog · HTTP/2 SETTINGSprobe.1ms.dog · HTTP/3 · QUIC JA4Date.now()RTCPeerConnection · STUNWebRTC host candidateIPv6 EUI-64 (ff:fe)myip.ipip.netapi.ip.sbchatgpt.com/cdn-cgi/traceclaude.ai/cdn-cgi/tracewww.cloudflare.com/cdn-cgi/traceCloudflare Radar · IPv4 / IPv6User-AgentAccept-LanguageSec-CH-UASec-CH-UA-PlatformAccept-EncodingDNT · Sec-GPCReferer · document.referrernavigator.languagesIntl.DateTimeFormatIntl …timeZoneIntl …hourCycleIntl.Locale weekInfoIntl.NumberFormatIntl.supportedValuesOfnavigator.keyboardspeechSynthesisError.messageJS feature probesFunction.prototype.toString · iframeCSS.supportscanvas text antialiasingcanvas.toDataURLWebGL getParameterOfflineAudioContextMath.* → SHA-256emoji measureTextfonts → SHA-256getClientRects · RangeSVG getBBox · getComputedTextLengthmeasureText actualBoundingBoxWebGL readPixelswindow · HTMLElement · CSS keysperformance.now() resolutionrecursion depthSHA-256screen · cores · GPU · fonts → SHA-256HTTP cache · ETag / If-None-Matchcanvas × 2navigator.brave · noise · liesuserAgentDatauserAgentData.brands…architecture · bitnessscreen · devicePixelRatiorequestAnimationFramescreen.isExtended · screenXinnerWidth · availHeightoffsetWidth − clientWidthWebGL RENDERERnavigator.gpu adapter.infoGPUAdapter limits · featuresWebGL2 · MAX_TEXTURE_SIZEhardwareConcurrencynavigator.deviceMemoryperformance.memorymaxTouchPoints · pointernavigator.getBatterygeolocation (on request)devicemotion (on request)navigator.connectionenumerateDevicesAudioContext.sampleRatePublicKeyCredentialbluetooth.getAvailabilityMediaSource.isTypeSupportedRTCRtpSender.getCapabilitiesMediaRecorder.isTypeSupportedmediaCapabilities.decodingInforequestMediaKeySystemAccessstorage.estimateprefers-color-schemeprefers-reduced-motioncolor-gamut · dynamic-rangeprefers-contrast · forced-colorsfont-size: medium · AccentColordisplay-modedoNotTrack · GPCnavigator.cookieEnabledpermissions.queryusb · serial · hid · IdleDetector …pdfViewerEnablednavigator.webdriverWorker · navigatorbait element7 tracker scripts (on request)window.ethereum · DOM markschrome-extension:// fileshistory.lengthlocalStorage · IndexedDB · Cache · window.namecanvas measureTextThrough JavaScript's Intl and Date, which any page can use without a permission prompt. The IP's time zone comes from the same kind of location database that places your IP in a city.
Set the system time zone to one in the country your IP is in: on Windows in Settings → Time & language, on macOS in System Settings → General → Date & Time, on phones in the date and time settings. An extension that only changes JavaScript's time zone is easy to catch; the browser environment check shows why.
Large countries have several time zones, and an IP is often placed in the right country but the wrong city. A zone in another country is a clear contradiction; a zone in the same country is only a hint.