What is a canvas fingerprint?
A page draws text and shapes on an invisible canvas, reads the pixels back and turns them into a short fixed code. The code is the same every time on your machine and different on other machines, so it works like an ID.
Ask two computers to draw the same text and shapes, and the pixels come out slightly different: the graphics card, the driver, the fonts and the smoothing all leave a mark. Sites turn that drawing into a fingerprint. Here are yours, and whether your browser scrambles them.
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 measureTextA page draws text and shapes on an invisible canvas, reads the pixels back and turns them into a short fixed code. The code is the same every time on your machine and different on other machines, so it works like an ID.
Use a browser that adds random noise to canvas, WebGL and audio, like Brave (on by default) or Firefox with resistFingerprinting. The "Fingerprint protection" row shows whether two drawings came out different.
Some do, by wrapping the drawing functions. But that can itself be noticed: the browser environment check flags replaced functions.