Перейти до вмісту

Вашою мовою цієї сторінки поки немає. Ви читаєте англійський текст.

Glossary

Browser fingerprint

Any single value is shared by millions of machines, and the combination of thirty of them is not. Nothing is written on your side, so there is nothing to clear and no prompt to refuse.

A browser fingerprint is a set of device values a site reads without asking and combines into one identifier.

How a site collects it

Collection happens in ordinary page code while the page is still loading. A property read costs nothing and asks nothing, so a whole set is gathered before the first picture appears.

No permission dialog appears, because the browser does not treat any of it as private. The technique works precisely on a visitor who has agreed to nothing.

  1. 1

    Reads what is reported

    The user agent, the language list, the timezone, the screen size and the core count.

  2. 2

    Draws and measures

    A canvas image, a WebGL frame, an audio buffer and the width of a string in a named font. Each of the four comes back slightly differently on different hardware.

  3. 3

    Joins it into one value

    The joined text is hashed, and that hash is stored beside the account you just opened.

Your browser right now

These five values are read in your browser on this page. A site that wanted them would read the same properties in the same order.

Nothing here leaves this page. The values are read and drawn on the spot, and a checker that sends your readings somewhere has already collected them.

Ваша машина просто зараз

User agent
вимірюємо на вашій машині
Languages
вимірюємо на вашій машині
Timezone
вимірюємо на вашій машині
Screen
вимірюємо на вашій машині
CPU cores
вимірюємо на вашій машині

Прочитано у вашому браузері й показано тут. Нікуди не надсилається.

Where sites put it to work

The value rarely refuses a visit outright. It decides that two accounts belong to one person, and that decision arrives days after both were opened.

It also survives the things people expect to break it. A fresh window, a cleared jar and a different address leave it exactly where it was.

  • Linking two accounts

    One fingerprint behind two logins is read as one person, whatever the addresses say. The link is drawn quietly and shows up as a suspension weeks later.

  • Scoring a session

    An unusual set raises the score that decides whether a checkout or a login gets challenged. Rarity counts against you here even when nothing about it is wrong.

  • Recognising a return

    A visitor who cleared everything is still recognised, which is the whole reason the technique exists. Storage rules apply to storage, and this is not storage.

Why the set has to agree

Changing the user agent is the easiest change to make and the weakest one. The set has to agree with itself, and every reader inside the browser has to give the same answer.

Three disagreements measured on our own engine. Each is one line of the self-test, and each is a value a site can read in a few milliseconds.

A site does not need all three to act. One disagreement inside a single browser is stronger evidence than any unusual value on its own.

  • The picture disagrees with itself

    A WebGL frame read straight from the buffer did not match the same frame copied onto a canvas.

    109 bytes
  • The voice list names other languages

    A profile speaking one language carried the whole system voice list beside it.

    68 voices
  • The connection answers its own number

    Reported latency did not match the number the profile was given, and no real link behaves that way.

    100 against 150

What our engine does

The seed reaches the engine on the launch line and the values are produced inside it, not written over the page by a script afterwards. A worker, a frame and the document therefore answer the same numbers, because all three inherit one source.

Two runs of the same acceptance harness: the build before the fingerprint patches, and the build shipping today.

MeasurementBefore, 25 Aug 2026Shipping, 2 Sep 2026
Checks green in one run24 of 2929 of 29
WebGL frame against its canvas copy109 bytes apart0 bytes apart
Reported latency against the seed100 against 150150 against 150

Often confused with

  • Cookies

    A cookie is a file left on your machine and you can delete it. A fingerprint is computed on demand, and there is no file to find.

  • Your IP address

    The address says where the traffic comes out. The fingerprint says which machine sent it, and changing one leaves the other untouched.

  • Canvas fingerprint

    That is one value inside the set, not the set itself. Fixing it alone leaves the other twenty odd readings as they were.

  • Device fingerprint

    That phrase covers the machine rather than the browser, and the two overlap heavily. Two browsers on one computer still answer differently, so the browser is the unit that counts here.

How to check your own

The panel above shows five values for the browser you are reading this in. The full self-test lives in the app and runs inside a profile, against the engine that profile launched.

It reports every check by name, green and red alike. A checker embedded in a frame on a marketing page tells you about that page instead.

Read it against a second profile on the same computer. Two profiles that answer as two machines are the thing worth checking, and one run shows both.

What this does not do

  • It does not make you anonymous. Behaviour, address reputation and account history are separate problems, and they close more accounts than fingerprints do.
  • It does not give each site a different set. The seed belongs to the profile, and values that shift between two tabs of one session are themselves a signal.
  • It does not hide that a browser exists. Every reading answers with something plausible, because refusing to answer is rarer than any particular answer.
  • It does not undo a link that already exists. Two accounts opened from one profile stay linked whatever the readings do afterwards.

Check it

Every number above comes from a file you can open.

The whole list of checks the self-test runs
apps/desktop/src/lib/fpAudit.js
The two acceptance runs quoted above
docs/замеры/приёмка-до-заплат-25-08.log · docs/замеры/приёмка-windows-02-09.log
A build is not accepted until these hold
engine/scripts/engine-invariants.js · engine/scripts/accept-engine.js
The checks run in a real browser
apps/desktop/test/fp-audit.js · apps/desktop/test/audit-on-builtin.js

Questions

How many values make up a fingerprint?
There is no fixed number, and that is the point. Our acceptance run measures twenty nine of them on a desktop profile, and names each one in its report.
Does clearing cookies change it?
No, and the technique exists because it does not. Cookies are storage on your side, while a fingerprint is recomputed from the machine on every visit.
Is a fingerprint unique to one person?
Often it is close to it, and rarely on the strength of one value. Uniqueness comes from the combination, which is why a single edited value changes little.
Do two profiles on one computer share a fingerprint?
Not in our engine: the values come from the seed of each profile, so two profiles read as two machines. A separate check in the app says whether another profile shares them.
Can a browser extension do the same job?
An extension writes over values after the page has already loaded, and it cannot reach a worker or a frame. That gap is what the realm checks measure.

See what your own profile answers

The self-test runs inside a profile and reports every check by name, green and red alike.