This represents the number of logical processors (threads) available to your browser.
Hardware concurrency is accessed through navigator.hardwareConcurrency, which reports the number of logical processor cores available to the browser:
undefined if not supported (rare on modern browsers)The navigator.hardwareConcurrency property was introduced to help web developers optimize multi-threaded applications using Web Workers. It became part of the HTML5 standard around 2012-2013.
Physical Cores: Actual independent CPU cores on the processor die
Logical Processors (Threads): Virtual processors exposed to the operating system
Hyper-Threading (Intel) / SMT (AMD): Technology that allows each physical core to run two threads simultaneously
Physical cores: 8
Hyper-Threading: Enabled (2 threads per core)
Logical processors: 16
hardwareConcurrency reports: 16
Performance cores: 4
Efficiency cores: 4
Total cores: 8 (no hyper-threading on ARM)
hardwareConcurrency reports: 8
| Reported Value | Typical Hardware | Device Examples |
|---|---|---|
2 |
Dual-core CPU (no HT) | Budget laptops, Chromebooks, older Intel Core i3 |
4 |
Dual-core with HT, or Quad-core | Intel Core i3 (HT), AMD Ryzen 3, older MacBook Air |
6 |
6-core (no HT) | Some AMD Ryzen 5, Intel Core i5 (certain models) |
8 |
Quad-core with HT, or 8-core | Intel Core i5/i7, AMD Ryzen 5, Apple M1/M2 |
12 |
6-core with HT, or 12-core | Intel Core i7/i9, AMD Ryzen 7, Apple M1 Pro |
16 |
8-core with HT, or 16-core | Intel Core i9, AMD Ryzen 9, high-end workstations |
20-32 |
10-16 core with HT | HEDT processors, Apple M1 Max/Ultra, AMD Threadripper |
64+ |
High-end workstation/server CPUs | AMD Threadripper Pro, Intel Xeon, server hardware |
| Reported Value | Device Category | Examples |
|---|---|---|
2 |
Budget smartphones/tablets | Entry-level Android devices |
4 |
Mid-range phones | Older iPhones (6/7/8), mid-range Android |
6 |
Modern mid-range phones | iPhone X/XS, Snapdragon 7-series Android |
8 |
Flagship phones | iPhone 12-15, Samsung Galaxy S series, Google Pixel |
Some browsers or operating systems may intentionally report a lower value than actual hardware for privacy or security reasons. For example, browsers in privacy mode might cap the reported value at 2 or 4 cores.
The primary legitimate use case for hardwareConcurrency:
// Optimize worker pool size based on CPU cores
const numWorkers = navigator.hardwareConcurrency || 4;
const workerPool = [];
for (let i = 0; i < numWorkers; i++) {
workerPool.push(new Worker('worker.js'));
}
// Distribute tasks across workers
tasks.forEach((task, index) => {
const worker = workerPool[index % numWorkers];
worker.postMessage(task);
});
Always provide a fallback value (e.g., 4) for cases where hardwareConcurrency is undefined or when you want to cap the maximum number of workers regardless of CPU count.
Modern browsers generally report hardwareConcurrency consistently on the same hardware:
| Browser | Reported Value | Privacy Impact |
|---|---|---|
| Tor Browser | Fixed value (typically 2 or 4) | All users report same value; prevents CPU-based fingerprinting |
| Brave (strict) | May reduce to nearest power of 2 or common value | Reduces precision without completely hiding information |
| Firefox (privacy settings) | Can be configured to return fake value | Requires manual configuration via about:config |
Virtual Machines: Reports the number of vCPUs allocated to the VM, not host CPU count
Docker/Containers: Typically reports host CPU count unless CPU limits are set
Remote Desktop: Reports remote machine's CPU count
CPU core count is a moderately effective fingerprinting attribute. While not as unique as canvas fingerprinting, it provides significant entropy when combined with other hardware attributes.
Common values like 4, 8, and 16 cores are shared by many users, but the distribution fragments users into several groups:
This provides approximately 2-3 bits of entropy (dividing users into 4-8 groups).
Core count strongly indicates device category and price range:
CPU core count becomes much more identifying when combined with:
E-commerce sites detect users with 12+ cores (expensive hardware) and show higher prices or premium product recommendations, assuming higher purchasing power.
User visits site on work laptop (16 cores), then on personal laptop (8 cores). Tracker recognizes two different devices belonging to same user by correlating other fingerprint attributes.
Users with unusual core counts (20, 24, 32+) are highly distinctive. Combined with other attributes, they can be uniquely identified among millions of users.
CPU core count is highly stable:
Protection: Reports fixed value (typically 2 cores) for all users
Effect: Complete protection; all Tor users appear identical
Trade-off: Web Workers limited to 2 threads even on high-core systems
Strict Fingerprinting Protection: May round to nearest power of 2 or cap at common value
Effect: Reduces precision (e.g., 12 cores reported as 8)
Trade-off: Partial protection with minimal usability impact
Some anti-fingerprinting extensions attempt to spoof hardwareConcurrency, but:
// In Firefox, you can manually set hardwareConcurrency via about:config
// Navigate to: about:config
// Search for: dom.maxHardwareConcurrency
// Set value: 2, 4, or desired number (0 = default/actual)
Note: This only affects Firefox and requires manual configuration per profile.
CPU core count is one of many fingerprinting attributes. While moderately identifying (especially for users with unusual core counts), it's not as impactful as canvas fingerprinting or font detection. Focus on comprehensive privacy tools rather than individual attributes.