WorkerNavigator: hardwareConcurrency property

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.

Note: This feature is only available in Web Workers.

The navigator.hardwareConcurrency read-only property returns the number of logical processors available to run threads on the user's computer.

Value

A Number indicating the number of logical processor cores.

Modern computers have multiple physical processor cores in their CPU (two or four cores is typical), but each physical core is also usually able to run more than one thread at a time using advanced scheduling techniques. So a four-core CPU may offer eight logical processor cores, for example. The number of logical processor cores can be used to measure the number of threads which can effectively be run at once without them having to context switch.

The browser may, however, choose to report a lower number of logical cores in order to represent more accurately the number of Workers that can run at once, so don't treat this as an absolute measurement of the number of cores in the user's system.

Examples

In this example, one Worker is created for each logical processor reported by the browser and a record is created which includes a reference to the new worker as well as a Boolean value indicating whether or not we're using that worker yet; these objects are, in turn, stored into an array for later use. This creates a pool of workers we can use to process requests later.

The following code can be run in a worker:

js
let workerList = [];

for (let i = 0; i < navigator.hardwareConcurrency; i++) {
  let newWorker = {
    worker: new Worker("cpu-worker.js"),
    inUse: false,
  };
  workerList.push(newWorker);
}

Specifications

Specification
HTML
# dom-navigator-hardwareconcurrency-dev

Browser compatibility

desktop mobile server
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
hardwareConcurrency
Chrome – Full support
Chrome 37 (Release date: 2014-08-26)
footnote Full support
Edge – Full support
Edge 15 (Release date: 2017-04-05)
footnote Full support
Firefox – Full support
Firefox 48 (Release date: 2016-08-02)
footnote Full support
Opera – Full support
Opera 24 (Release date: 2014-09-02)
footnote Full support
Safari – No support
Safari 10.1 – 10.1 (Release date: 2017-03-27)
footnote Removed in 11 and later
Safari – Full support
Safari 15.4 (Release date: 2022-03-14)
footnote
footnote The value of this property is clamped to 4 or 8 cores, to prevent device fingerprinting. See bug 233381.
Chrome Android – Full support
Chrome Android 37 (Release date: 2014-09-03)
footnote Full support
Firefox for Android – Full support
Firefox for Android 48 (Release date: 2016-08-02)
footnote Full support
Opera Android – Full support
Opera Android 24 (Release date: 2014-09-10)
footnote Full support
Safari on iOS – No support
Safari on iOS 10.3 – 10.3 (Release date: 2017-03-27)
footnote Removed in 11 and later
Safari on iOS – Full support
Safari on iOS 15.4 (Release date: 2022-03-14)
footnote
footnote The value of this property is clamped to 4 or 8 cores, to prevent device fingerprinting. See bug 233381.
Samsung Internet – Full support
Samsung Internet 3 (Release date: 2015-04-10)
footnote Full support
WebView Android – Full support
WebView Android 37 (Release date: 2014-09-03)
footnote Full support
WebView on iOS – No support
WebView on iOS 10.3 – 10.3 (Release date: 2017-03-27)
footnote Removed in 11 and later
WebView on iOS – Full support
WebView on iOS 15.4 (Release date: 2022-03-14)
footnote
footnote The value of this property is clamped to 4 or 8 cores, to prevent device fingerprinting. See bug 233381.
Deno – Full support
Deno 1.13 (Release date: 2021-08-10)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
See implementation notes.
Has more compatibility info.

See also