Glossary
navigator.languages
navigator.languages is the ordered list of languages a browser reports, from the one it prefers down to its fallbacks.
Where the list is read
Two routes lead to the same answer, and a site is free to take both and compare them.
- 1
A header on every request
The list goes out in order, with a falling weight on each entry after the first.
- 2
The list in script
One line of code returns the whole list, and another returns the first entry on its own.
- 3
Formatting
Dates, numbers and currency come out in the first language, so a page can read it without asking.
Your languages right now
These are read in your browser on this page, and the clock beside them is read the same way.
A site reads the pair together, because a language and a clock from different countries do not happen by accident.
Your machine, right now
- Languages
- measuring on your machine
- Primary language
- measuring on your machine
- Time zone
- measuring on your machine
- Hours from UTC
- measuring on your machine
Read in your browser and shown here. Nothing is sent anywhere.
Why the list follows the address
Where your traffic comes out decides the list and the clock together, out of one answer.
The country is measured through the proxy itself over an encrypted connection, and several providers are asked in turn so that one refusal cannot decide who a profile is.
The country decides the stack
A Ukrainian exit gets the Ukrainian stack and a German exit the German one, with the fallbacks a real browser there carries.
The clock comes from the same answer
The time zone is drawn from that same country, so the two can never name different places.
A silent provider invents nothing
When nobody names the country, the profile keeps the country it was born with instead of getting a guessed one.
The whole list not the first entry
Real Chrome answers with the whole stack, so a single entry standing next to a foreign address is a mark in itself.
The browser is launched with the profile's list and with the setting that shortens it turned off, and the self-test compares the entire list rather than the first entry.
| What is compared | What the shipping run answered |
|---|---|
| Primary language | uk-UA, for a Ukrainian exit |
| The whole list | uk-UA, uk, ru, en |
| Time zone | Europe/Kyiv, from that same country |
Often confused with
The request header
The same list sent to the server with weights, while the script value is what the page itself sees.
The primary language
One value, the first entry of the list, and it is read far more often than the list is.
The language of the app
The interface you read the manager in belongs to you, and it never reaches a profile.
How to check your own
The panel above shows the list your current browser answers with, and nothing leaves the page.
Inside a profile, the self-test compares the whole list and the clock against the profile, so a shortened list shows up red instead of passing quietly.
What this does not do
- It does not translate anything. The list states a preference, and what a site shows you after reading it is still the site's decision.
- It does not let a language and a clock drift apart. A language picked by hand moves the clock to that country and a zone picked by hand moves the language, and only setting both by hand leaves both exactly as you set them.
- It does not follow the address in the middle of a session. The list is settled when the profile starts, so moving to another country takes effect on the next start.
- It does not make the rest of the machine fit. Fonts, cards and behaviour are read separately, and a perfect language stack does not move any of them.
Check it
Everything above comes from a file you can open.
- Where the exit country is measured
- apps/desktop/src/lib/exitGeo.js · apps/desktop/test/exit-geo.js
- Country, clock and list come from one draw
- packages/shared/src/index.js
- A language picked by hand pulls the clock along
- apps/desktop/test/fingerprint-consistency.js
- The measured run of the shipping engine
- engine/приёмка-отчёт.json
Questions
- Why does the order matter?
- Because the order is half the answer. A browser that puts English first and German second is a different reader from one that does the reverse, and both orders reach the server.
- Is one language enough?
- No. Real Chrome carries the base language and usually English behind the regional one, so a list with a single entry stands out on its own.
- Does a VPN change my languages?
- No. A VPN changes the address your traffic comes out of, and the list stays whatever the browser was told to say, which is exactly the mismatch sites look for.
- Where does the list come from with no proxy?
- From a country drawn out of the profile's own seed, together with the clock. The pair still agrees with itself, and that agreement is what a check reads.
- Can I pick the list by hand?
- Yes, from the stacks the editor offers, and the clock moves to that country with it. Set both by hand when you want a combination of your own.
See the list your own profile answers with
The self-test runs inside a profile and shows all 29 measurements, green and red alike.