Questa pagina non è ancora nella sua lingua. Sta leggendo il testo in inglese.
Blog
Why Facebook links your accounts to each other: seven signals
Il team ARMANOS8 min
Matches decide this, not names
A platform does not look for one person behind two names. It collects the small things your browser hands over, then watches for two columns sitting too close.
Seven of those small things are named below. The platform takes the first three itself: the handshake between the apps, the logging inside the page, and the counter on other sites. The other four arrive from your side.
The handshake between Facebook and Instagram
Facebook and Instagram belong to one company and pass a user identifier between themselves directly. The exchange runs on a plain page load, with no click of yours and no login form.
One request leaves Facebook, another comes back from Instagram, and each carries the neighbouring app's identifier. Open both in one profile and you hand them a finished pair of accounts.
- 1
You open the page
Neither a login nor a click is needed for the exchange.
- 2
Facebook calls its neighbour
The address facebook.com/ig_xsite_user_ carries the identifier outward.
- 3
Instagram answers in kind
The address instagram.com/accounts/xuserid names the same person.
The platform's own logging inside the page
Besides that handshake, Meta logs inside the page what you opened, how long you looked, how far you scrolled. Those requests go to the address you came to, so they look nothing like an outside counter.
An ordinary domain blocker lets them through. Only a rule written against the request address closes them, and a profile on the Social media scenario carries those rules.
| Platform and its own requests | Addresses under a rule |
|---|---|
| Facebook and Instagram | 11 |
| X | 6 |
| 4 | |
| In this set altogether | 21 |
A rule works only on its own addresses
An address piece like /ajax/bz turns up on other sites too, and cut everywhere it would break unrelated pages. So the social set's rules are locked to the platforms' own addresses: Facebook and Instagram have two names each, their own and their image store, and five more names belong to X and Pinterest.
On somebody else's site the same piece goes through as usual. On its own platform it is cut, and the platform loses a report rather than a page.
A pixel that waits on other sites
The second layer of record keeping lives off the platform. A shop, a blog or a landing page puts the counter there, and it reports your visit before you click anything.
That counter recognises a browser by the same small things, so it pairs your two profiles just as easily. Below is the social counter list that comes with the Social media scenario, laid out by network.
| Whose counter waits outside | Addresses on the list |
|---|---|
| Meta | 6 |
| TikTok | 13 |
| X | 5 |
| 3 | |
| Other networks alongside | 6 |
One exit address across several accounts
A platform compares the exit address first, and that comparison costs it least. Two profiles on one address look like two tabs of one person, however far apart their fingerprints sit.
A datacentre address is known by whoever owns the range, and Meta has known those ranges for years. A home or mobile address costs more, and it does not label your profile in advance.
Clock and language against the exit country
A page reads your timezone and your browser language list without asking. When a proxy takes you out through Brazil while the clock says Moscow, a platform sees someone hiding.
The zone and the language set have to follow the exit country, not the machine on your desk. In the app they come from a table of 114 countries and land in the profile once the proxy country is known.
The exit country is asked of four sources
Timezone and languages come from the exit country, and the country has to be learned first. The profile asks four independent sources in turn, through its own proxy and only over a secure connection, and takes the first clear answer.
If all four stay silent the country is not invented: the profile opens on the zone it drew at creation, and a warning about it appears on screen. An invented country would be worse than an honest «unknown».
A window wider than the claimed screen
Your browser tells a page the screen size and the window size, and the page reads both in one line. A window wider than the claimed screen describes a machine that does not exist.
Across a pool of 900 profiles a maximised window did not fit the claimed screen for about six profiles in ten, and that figure is for a 1920 by 1080 monitor. On another monitor the share is its own. The pool held 18 distinct screens.
The GPU disagrees with the architecture
A site asks the browser for the graphics card name and, separately, for the processor architecture. Each answer alone looks ordinary, and together they describe a machine nobody ever built.
That pair used to show up on macOS profiles: the name Apple M1 next to the architecture x86. It is the case our card-against-architecture check was written for, and today it holds them together. A real Mac with that card does not report x86, and one contradiction is enough.
What to check on your own profiles
Six of the seven signals are visible from a browser console in one evening, with nothing to install: the network list is that same console. The seventh is the exit address: a browser does not show you its own external address, you ask an outside source for it.
Walk your profiles in pairs: those meant to stay strangers have to differ at least in exit address, clock and screen. A matching pair is the one a platform writes its rule for.
- 1
Compare the exit address
Two profiles meant to stay strangers leave through different addresses.
- 2
Compare clock and languages
The zone and the language set follow the country you exit through.
- 3
Compare screen and window
A window is never wider than the screen a profile claims.
- 4
Watch the network list
The first load shows whether the identifier exchange goes out.
What this does not claim
- This is not the full list of what a platform reads. It names seven signals you can check yourself, and no platform publishes the list it works from.
- It does not claim that seven signals in agreement make an account safe. Behaviour, payment details and the history of complaints stay with you, and no browser changes them.
- The order of the signals says nothing about their weight. Which one counts for more is something platforms do not say, and nothing outside lets you derive it.
- The rule set numbers describe the Social media scenario as it stands today. The set is a file inside the app and travels with its updates: there is no separate feed pulling it in.
Where you can see this yourself
Every number above comes out of code you can open and run.
- Each platform's own requests are listed one by one, together with the exchange between Facebook and Instagram
- apps/desktop/src/lib/tracker-rules.js
- Those rules run against a profile and stay locked to their own hosts
- apps/desktop/test/слежка-по-хостам.js
- Off-site counters sit in a separate list, by network
- apps/desktop/assets/trackers_social.json
- Clock and languages are derived from the country and checked on real fingerprints
- packages/shared/src/index.js · apps/desktop/test/fingerprint-consistency.js
- A profile's graphics card and architecture never contradict each other
- apps/desktop/test/fingerprint-consistency.js
- A profile window never opens wider than the screen it claims
- apps/desktop/src/lib/окноПрофиля.js · apps/desktop/test/окно-не-шире-экрана.js
Questions
- I already run different proxies, is that not enough?
- The address is one signal out of seven. Two profiles on different addresses still pair up by clock, by screen or by the exchange between the apps.
- If I never open Instagram, is there no link?
- The exchange runs on a page load, not on a login. A tab of the neighbouring app open in the same profile is enough.
- Does private browsing help?
- It forgets cookies when the window closes and touches neither the exit address, nor the clock, nor the screen, nor the graphics card. Four signals out of seven stay where they were.
- Will an ad blocker close these requests?
- Domain lists close counters on other people's sites. They leave the platform's own requests alone: those go to the address you came to.
- How is this different from changing the user agent?
- The user agent string is one field, and there are seven signals. Swapping one field more often creates a fresh contradiction than closes an old one.
- How many accounts can I run from one computer?
- The limit comes from matches between profiles, not from the computer. Once address, clock, screen and card differ, the question moves from how many profiles to how unlike they are.
Next to this
Why platforms link accounts
What gets compared between two accounts and how each signal is closed.
Facebook accounts
Daily ceilings, the first week and the cost of switching between accounts.
A window wider than the claimed screen
Where the 900 profiles and that share in this entry come from.
Free fingerprint check
12 values read in your browser, with nothing sent anywhere.
See what your own browser says about you
The check reads 12 values in the window and sends nothing anywhere.