Skip to main content

The Same Image Looks Slightly Different on Every Device

A website can ask every browser to draw the same tiny scene. Differences in fonts, software, and graphics hardware can leave a repeatable pattern in the pixels—and that pattern can become one part of a broader browser fingerprint.

Storage
None required
Visible to you
Usually not
Useful alone
Sometimes
Useful in a profile
More often
same instructionsdrawText + shape + gradient
One drawing request. Slightly different pixels. Different compact values.

How rendering differences can be used to identify returning users

This local demonstration draws a small scene and hashes its pixels. Shift the scene by one pixel and the picture still looks almost identical—but the digest changes completely.

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');

ctx.font = '28px sans-serif';
ctx.fillText('404 privacy', x, 54);
ctx.fillRect(18, 76, 156, 18);

const pixels = ctx.getImageData(
  0, 0, canvas.width, canvas.height
);
// The page can now hash or compare the pixels.
Local outputBaseline rendering
Nothing is sent
Your browser supports a local illustration of canvas rendering.
SHA-256 digestRun the demonstration

The one-pixel option is an illustration, not a fingerprinting test. It shows why tiny render differences are easy for software to detect even when people barely notice them.

The image generates a machine readable ID

Canvas is useful to a tracker because the full process is quiet, repeatable, and easy to automate. The drawing is only the probe.

  1. 01

    A script gives drawing instructions

    Text, shapes, colors, gradients, and blending rules are placed on a canvas—often outside the visible page.

  2. 02

    Your graphics stack renders them

    The browser, font rasterizer, operating system, graphics libraries, GPU, and driver all influence the final pixels.

  3. 03

    JavaScript reads the pixels back

    Methods such as getImageData() or toDataURL() turn the rendered scene into data the page can inspect.

  4. 04

    The output becomes a signal

    A digest makes the image easy to compare. Trackers can combine it with other signals and look for the same pattern later.

A few altered pixels can produce a very different digest.

Antialiasing changes the partially transparent pixels around a glyph. Font hinting, color management, compositing, and GPU behavior can all nudge those edge values.

A cryptographic digest amplifies that difference: similar images do not produce similar hashes. That makes a large pixel buffer compact and fast to compare.

Magnified, illustrative edge pixels—not a captured fingerprint.

Both can help link visits, but they cross a reset in different ways.

Cookie

The site gives the browser an ID.

  1. Visit 1Store ID=ABC
  2. Visit 2Send ID=ABC
  3. Clear cookiesStored ID removed
  4. Visit 3No cookie ID to return
Canvas signal

The site asks the browser to render again.

  1. Visit 1Measure HASH=XYZ
  2. Visit 2Measure HASH=XYZ
  3. Clear cookiesStored state removed
  4. Visit 3Recompute HASH=XYZ

This is a conceptual comparison. Real recognition systems may rotate values, tolerate small changes, and use server-side history rather than matching one hash exactly.

Canvas hashing is one of many methods

A canvas value may be shared by many people or change after an update. An observer gains confidence by comparing it with other signals that describe the same browser and device.

See the complete fingerprint →
Canvas contributes one value. Recognition comes from comparing the combined profile across visits.

Change the renderer, not just the route.

VPNs and storage controls still solve real privacy problems. They simply operate at different layers than canvas rendering.

ActionCanvas outputWhy
Clear cookiesUsually unchangedRemoves stored state, not the graphics stack.
Open a private windowUsually unchangedCreates a separate local session; rendering may remain the same.
Change VPN serverUsually unchangedChanges the network path and IP, not local rendering.
Change browser, OS, fonts, GPU, or driverCan changeChanges one or more parts of the rendering path.
Use browser-level fingerprinting defensesCan change or restrictMay standardize, perturb, or gate canvas readback.

Browsers have three broad choices.

No strategy is free: stronger resistance can affect compatibility or make an unusual configuration stand out.

01

Standardize

Make many users return the same or less distinctive output, so one person is harder to separate from the crowd.

Goal: reduce diversity
02

Perturb

Introduce controlled changes to readback so the value is less stable across sites or browsing sessions.

Goal: reduce linkability
03

Gate or block

Require permission, return limited data, or prevent suspicious readback while preserving ordinary drawing when possible.

Goal: reduce access
What to look for in a browser

A useful claim should explain whether the browser standardizes, perturbs, or restricts canvas—and whether that behavior is default, site-specific, or opt-in.

Browse browser evaluations