Language Class
asset.js reads navigator.language, takes the primary language code, and records that as the language class for the visit. The board shows how your traffic is distributed across language settings.
What navigator.language contains
navigator.language is set by the browser based on the language the user has configured in their operating system or browser preferences. It typically returns a value like "en", "fr", "de", "es", "zh", or a region variant like "en-US", "pt-BR", or "zh-TW". The value reflects the user's preferred language for content, not their location.
The value is set at browser configuration time, not at visit time. A person who has set their browser to English and visits your site from Germany will report "en". A person who has set their browser to German and visits from the United States will report "de". The language class reflects the browser setting, not the IP geolocation.
How the bucket is formed
asset.js takes navigator.language and extracts the primary language code — the part before the first hyphen. "en-US", "en-GB", and "en-AU" all become "en". "pt-BR" becomes "pt". "zh-TW" becomes "zh". This collapses regional variants into a single language bucket.
Collapsing regional variants keeps the bucket count manageable and prevents the region suffix from adding a dimension that narrows the identity space. Two visitors with "en-US" and "en-GB" settings are both counted as "en". They are not distinguishable by their language class, which is the intended result.
Reading the distribution
A large share of one language class tells you the dominant browser-language setting of your audience. This is not the same as knowing where your visitors are located or what language they read your content in — if your site is in English and attracts German readers who understand English, their browser may still be set to "de".
A shift in language class distribution over time can reflect a campaign that reached a new language community, organic growth from a different audience, or content that started ranking in a new locale. It is a coarse signal and should be read alongside other evidence.
When the field is unusual or absent
Automation tools, headless browsers, and some bots do not set navigator.language to a standard value, or set it to a low-frequency value. A small number of visits with an unusual two-letter code — one that does not correspond to a significant language community — is often a sign of automated traffic.
If navigator.language is empty or undefined in the browser environment, the language class resolves to a fallback value. That fallback will appear in the board as a distinct bucket. A meaningful share of visits in the fallback bucket is worth investigating — it may indicate that a significant portion of traffic comes from environments that suppress the language header.
Troubleshooting
If a language class appears in the board that you do not recognize, look up the two-letter code in the ISO 639-1 language code list to identify the language. If the code is not a valid ISO 639-1 code, it may be from a browser or automation tool that set an unusual navigator.language value. Cross-reference the visit count — a small number of visits with an unusual code is typically automated traffic.
If you run a campaign targeting a specific language community and the expected language class does not appear in the board in proportion to the campaign reach, remember that navigator.language reflects browser configuration, not the language of the page the visitor came from or the language of the ad they clicked. A user whose browser is set to English will report "en" regardless of what language your campaign was in.