Signal · signalsVersion 5

vendor

The browser vendor string from navigator.vendor: Google Inc., Apple Computer, Inc., or empty in Firefox.

vendor at a glance (from the library code, signalsVersion 5)
Component namevendor
In the visitorIdyes
structuredId groupbrowser (engine and build)
Hashingplain value; a digest only when longer than 128 characters or not printable ASCII
Excluded underno browser class
Inner timeout1000 ms
Added insignalsVersion 1
In plain words

Browsers report a vendor name to web pages. Chromium-based browsers say Google, Safari and every browser on iPhone say Apple, and Firefox says nothing. WhiskerJS records that short string. On its own it only splits browsers into three big families, but it is stable and is checked against other values for signs of spoofing.

What it reads

navigator.vendor, a string.

How the technique works

The property is read once. An empty string is reported as the word empty; any other string as it is; a non-string gives unavailable. A throwing getter reaches the runner and gives blocked.

Why it helps

It is one of the clearest engine hints a page can read: Google Inc. for Chromium browsers, Apple Computer, Inc. for WebKit, empty for Gecko. It feeds browser_class, and because it is in the id, a tool that changes it changes the id.

Its most useful role on your server is as a cross-check. A result whose vendor is Google Inc. while the request’s user agent header names Safari, or whose vendor is empty while ua_client_hints is available (only Chromium offers it), describes a browser that is not what it claims. WhiskerJS never draws that conclusion itself; it gives you the values.

Stability

Fixed per engine family. It changes only when the browser changes engine, or a user agent switcher changes it.

Browser support and what blocks it

Browser Typical value
Chrome, Edge, Brave, Samsung Internet Google Inc.
Safari and every iOS browser Apple Computer, Inc.
Firefox empty

No browser class excludes it.

Privacy

A family name shared by every user of that engine. Nothing personal.

How WhiskerJS handles noise and failures

Status ruleId When
ok the vendor string, or empty
unavailable no_api not a string
blocked threw, security_error the getter throws
excluded caller_excluded you excluded it
timed_out timeout, aborted budget or abort

vendor is also compared with a clean iframe by iframe_mismatch and watched by navigator_own_property. The engine_mismatch flag checks whether the class it helped pick matches how the engine behaves.

Example value

In the container test: headless Chromium Google Inc., Firefox empty, WebKit Apple Computer, Inc..

Questions and answers

Why does Firefox report empty?

Firefox returns an empty string for navigator.vendor. WhiskerJS writes it as the word empty so that it is a visible, ok value rather than looking like a missing one.

Why do all iPhone browsers say Apple Computer, Inc.?

They all run on WebKit, which reports that vendor. It is one reason WhiskerJS classes every iOS browser as safari.