MaskWright

2026-06-05 · Avery Chen · 712 words

Fingerprint surfaces we actually cover

This is the inventory we implement, not a 2022 listicle. Read which surfaces a local MaskWright profile actually handles on Windows. Local Windows notes only.

A grid of browser diagnostic panels on a Windows desk
The inventory is a set of APIs we actually override. It is not a 2022 list of every rumor.

This is the inventory we implement, not a 2022 listicle. Buyer guides still copy the same surface names and stop. I want the list that is actually in the desktop code on Windows, plus the rows that are only partial, plus the things we do not touch.

What browser fingerprinting actually measures is the mechanism. This page is the stock list. We have no published pass rates. I will not turn the list into a trophy.

How the inventory is applied

The fingerprint schema lives in the desktop fingerprint package. Runtime apply is split. CDP handles user agent, Client Hints metadata, locale, timezone, screen metrics, and geolocation. A MAIN-world inject handles most DOM surfaces. Chromium prefs handle WebRTC and some geo bits. Env vars feed the patched core for GL vendor and font list when that binary is present.

When the custom Chromium 131 core is installed, launch can use it. When it is missing, the app falls back to system Chrome or Edge and still applies CDP and inject. The fallback is not a patched process.

The public channel is Windows 10 and 11 x64. Profiles are desktop families. Client Hints mark mobile false.

The Browser fingerprinting cluster is the rest of the commentary. This page stays on what is on and what is not.

A grid of browser diagnostic panels on a Windows desk
The inventory is a set of APIs we actually override. It is not a 2022 list of every rumor.

Surfaces that are implemented

SurfaceHow
User agentCDP setUserAgentOverride, --user-agent, inject on navigator.userAgent
Client Hints / userAgentDataCDP metadata + high-entropy inject
Platform, vendorInject + CDP
Languages / localeCDP locale override + inject
TimezoneCDP setTimezoneOverride + TZ env
Screen (width, height, avail, colorDepth, pixelRatio)CDP device metrics + inject
Hardware concurrency, device memoryInject
WebGL vendor / renderer / getParameterInject + MASKWRIGHT_GL_* when patched core is present
WebGPU adapter infoInject from fingerprint.webgpu
Canvas toDataURL / toBlobOS-biased stable noise
Font probesAllowlist, document.fonts.check, offset and rect fallbacks
Client rectsStable noise on element and Range APIs
Audio (OfflineAudioContext / Analyser)Seeded noise
WebRTCPrefs + inject filters; modes disabled, proxy, public, real
GeolocationCDP override, aligned to exit via ip-api.com
Media deviceId / groupIdStable hashes from a seed
Plugins / mimeTypesOS- and browser-coherent lists
BatteryDesktop plugged-in BatteryManager
Network InformationPatched connection object
Speech voicesSynthetic, locale-matched
Notifications permissionInject prompt state
Bluetooth presenceInject
window.chromeInject on Chromium profiles
navigator.webdriverFalse + --disable-blink-features=AutomationControlled
Do Not TrackSchema + inject
Max touch pointsField, default 0

Partial, and named as partial

TLS JA3 / JA4: compile-time, documented as needing a patched BoringSSL tree, not JavaScript-spoofed. Effectiveness without runtime TLS tests is unknown.

Font raster through DirectWrite: a MASKWRIGHT_FONT_LIST plus a patch when the custom core is present.

Process name in Task Manager: optional MASKWRIGHT_ALIAS_PROCESS hardlink, or a compile-time patch.

What this inventory is not

It is not a MAC address. We do not hide MACs. A NIC is not a canvas.

It is not a digital footprint. Accounts and payment instruments do not live in the inject.

It is not Topics or CHIPS. Those replace third-party cookies. They are not a surface we spoof.

It is not cross-browser joining by itself. A second engine on the same box still shares IP, fonts at the OS layer, and the NIC.

It is not a wipe. A new fingerprint in the same folder leaves the cookies.

It is not a Mac. A macOS fingerprint on a Windows host still sits on a PC.

How I want you to use the list

Test the profile before work against this inventory, not against a 2022 blog table. If a lab names a surface we do not claim, believe the lab and do not invent a toggle.

If a surface is Yes, expect an override and expect it to stay put across launches. If it is Partial, expect a core-dependent story. If it is absent, it is absent.

FAQ

Does a Yes row mean we pass commercial anti-bot stacks? No. It means we implement an override. We have no published pass rates.

Is the fallback to system Chrome a patched engine? No. CDP and inject still run. The process is not patched.

Do you hide MAC addresses? No. That is outside the tab.

Related notes