What it is
getClientRects() and getBoundingClientRect() return an element’s position and size with sub-pixel precision. Apply a 3D transform to some styled text and the fractional values depend on the layout engine, the fonts it picked and how it rounds — one more computed signature.
How websites read it
el.style.transform = 'matrix3d(0.7071, 0.31, 0, 0.0001, ...)';
const r = el.getClientRects()[0];
hash([r.x, r.y, r.width, r.height]); // sub-pixel values differ per engine + fontA hidden element is measured once or twice and the numbers are hashed. The same page on the same machine returns the same fractions to six decimal places.
Why it identifies you
The values encode font metrics and engine rounding, so they change with the OS, the browser version and the installed fonts — and stay put otherwise. They also cross-check the canvas and font signals from a different angle.
How risk-control systems use it
The main test is stability: two measurements of one element must be identical. A value that drifts between reads, or between tabs, only happens when something rewrites the numbers on their way to the page.
Common mistakes
Random per-call noise on rect values; noise that breaks page layout logic; rect values inconsistent with the font set the profile claims.
Mango is accepting waitlist registrations. These capabilities describe its first release; client access opens with invitations.
How Mango Browser handles it
NoiseDeterministic per-profile offsets applied to rect values; two reads always match.
Check yours
Jump to this signal in your scan results.