← field notes

How Canvas Fingerprinting Turns a Browser Into a Name

right now, on a page nobody will ever see, a device might be quietly drawing a picture. not a picture for anyone to look at. a few invisible words, a couple of shapes, rendered into a hidden corner of memory that never reaches a screen. no one is asked. no one notices. and then the result is read back, measured pixel by pixel, and turned into a number that can follow a person across the entire web.

it is one of the stranger tricks in online tracking, because it stores nothing on the device, needs no cookie, and survives almost everything a careful person does to stay private. it works by asking one simple question, how exactly does this particular machine draw, and using the answer as a name.

the drawing nobody sees

start with a capability every modern device has and almost nobody thinks about. a computer or phone constantly draws graphics, text, and shapes for things a person actually sees. but a website can also ask the device to draw something off to the side, into a hidden surface that is never displayed. this is a perfectly ordinary, legitimate ability.

the move that turns it into tracking is not the drawing. it is what happens next. a site quietly instructs the browser to draw a particular image, often some text in a specific style, maybe with a shape or a splash of color layered in, all onto that invisible surface. then, instead of showing it, the site reads the rendered image back, pixel by pixel, and crushes those exact values down into a single compact number.

there is no flicker, no image, no sign anything happened. but the site now holds a number for precisely how that device rendered that picture.

why identical instructions diverge

here is the surprising part, the part that makes the whole thing work. the obvious expectation is that the same instructions produce the same image everywhere, that surely every device produces identical pixels. but they do not. the very same instructions produce subtly, measurably different results from one device to the next.

the differences are tiny, often invisible to the eye. a hair of variation in the smoothing of a curve, the exact shade where colors blend, the precise edge of a letter. but they are consistent on any one device and they vary between devices, and that combination, stable for one machine, different across the crowd, is exactly what an identifier needs to be.

the reason is that drawing a picture is not one step but the end of a long chain. the request passes through the browser, then the operating system, then the graphics hardware and the software that drives it, each layer adding its own minuscule choices about how to round, smooth, and blend. a particular combination of all those layers produces a rendering signature slightly its own.

it is a little like handwriting. everyone is taught the same letters, yet everyone writes them with tiny consistent quirks, and those quirks, taken together, identify the hand. the uniqueness is a direct consequence of no two devices being assembled from the exact same parts and software in the exact same state. the variation is baked into the physical reality of the machine, and cannot be patched away without making every device on earth render identically. that is why the trick proved so durable. it exploits not a bug but the simple diversity of the machines themselves.

from picture to name

so the site has an image that came out a particular way, and it squashes the whole thing into one stable number, a compact summary of exactly how that device drew. the number becomes a label. the next time the same device appears, the same hidden drawing is requested, the same number comes back, and the site recognizes it. not by any cookie, not by anything stored on the machine, but purely by the unrepeatable way the device renders. nothing was planted. the device was simply asked to draw, and the way it drew gave it away.

persistence without storage

now the reason trackers prize this technique. it defeats the usual ways people try to hide. clearing cookies does nothing, because no cookie was used. browsing in a private window does nothing, because the identity is not stored anywhere to be cleared, it is regenerated on the spot from the way the device draws. a person can wipe every trace they know about and the next hidden drawing reconstructs the same number. it is persistence without storage, which is what makes it so hard to escape.

and that is the deep reason it unsettles people once they understand it. every privacy habit most people have learned is about cleaning up after yourself, deleting the traces, wiping the record. but a trace that was never left cannot be deleted. the identifier lives in the device’s behavior, not its memory, and so it stands entirely outside the whole mental model of clearing data. someone can do everything right by the old rules and remain perfectly recognizable.

a family of weak signals

drawing a picture is only one member of a larger family that all work the same way. ask the device to produce a sound and measure the exact output, and there is an audio version of the same trick. ask it to render some three dimensional graphics and study the result, and there is another. probe which fonts it has and how it lays them out, and there is yet another. each reads back a small piece of work the device was asked to do, exploiting the same truth that the machinery underneath renders just distinctly enough to identify.

on its own each is a weak hint. this is the real lesson of the whole family. no single signal needs to be perfectly unique, because they are not used alone. a dozen weak, blurry hints, each easy to dismiss on its own, stack together into a composite sharp enough to single a device out of millions. defeating one of them barely dents the result.

the double nature

it is worth being fair about who reaches for this and why, because it is not only the obvious villains. advertising and tracking operations use it to follow people across sites without their knowledge. but the same technique is a core tool of defense. fraud detection systems use it to recognize a device creating many accounts. bot catching systems use it to notice when a thousand visitors are all, suspiciously, the same machine wearing different disguises.

so it is genuinely double natured, and it would be dishonest to flatten it into a story of good and bad. the same trick is simply pointed at different targets. a technique powerful enough to recognize a fraud ring’s hidden machine is, by its nature, powerful enough to recognize an ordinary person who has done nothing wrong and taken every step they knew to stay private. and the device has no way to tell which kind of watcher is asking it to draw.

how browsers fight back

so how do browsers push back against something that stores nothing to delete. the answer is to attack the thing it depends on, the stable, unique rendering.

one approach adds a tiny bit of random noise to the result every time, so the number comes out slightly different on each read and never settles into a stable label. another simply refuses to let a site read back a hidden drawing at all, or asks permission first. a third takes the opposite path, trying to make a whole class of devices render identically, so that instead of being unique a device blends into a large, indistinguishable crowd.

each carries a cost. the noise approach can subtly break legitimate graphics work that needs to read back what was drawn. the blocking approach can break real features that depend on the same ability. the make everyone identical approach only works if huge numbers of people actually use it, because a crowd of one is no disguise at all. every method that weakens the tracker pays something somewhere, in compatibility, in performance, or in the simple need for enough people to hide among.

the shape of the arms race

so it becomes the familiar contest. the trackers want a result that is stable and unique. the defenders want it to be either unstable or shared. when a browser adds noise, the tracker tries to average it away across many reads, hunting for the stable signal underneath. when a browser makes a crowd look alike, the tracker reaches for other signals to split that crowd back apart. it is the law of large numbers on one side and the deliberate injection of randomness and sameness on the other, and neither side ever fully wins.

what privacy actually means here

so here is the part to sit with. most people think of privacy as the things they can clear, the cookies and history they can see and delete. but some of the most durable ways a person is recognized online are not stored anywhere at all. they are reconstructed, on demand, from the simple physical fact of how a particular device does an ordinary task. an invisible picture, drawn in a corner no one will ever look at, can carry a name across the web more reliably than anything anyone could think to erase.

and this is the shape of nearly every fight this channel walks through. not one clean trick that settles it, but a stack of imperfect signals weighted against each other, holding an uneasy line against the next thing built to slip past. canvas fingerprinting is one of the quieter examples, a signature a device writes without ever knowing it, and cannot delete because it never knew it was writing.

The Hidden Internet takes apart the systems that quietly run the modern web, explained from the inside. No products, just the machinery. Subscribe on YouTube.

watch
The Hidden Internet on YouTube

Every field note starts as a short documentary. Watch the systems in this piece explained on screen.

subscribe →
read on
More field notes

The rest of the series on how the modern internet detects, tracks, and sorts the traffic that reaches it.

browse the archive →