What Your Browser Knows About Your Hardware

A look at the web APIs that expose CPU, GPU, screen, battery, and network information — what they reveal and what stays private.

7 min read
privacyweb APIssystem info

Your web browser knows a surprising amount about the device it is running on. Without installing any software or granting special permissions, a website can discover your screen resolution, GPU model, CPU core count, approximate RAM, network type, and more. This information powers both useful tools (like the diagnostic tools on this site) and less welcome practices like browser fingerprinting.

Here is a tour of what is exposed, how it works, and what stays private.

CPU and Memory

The navigator.hardwareConcurrency property tells a website how many logical processors are available. On a CPU with 8 cores and hyper-threading, this returns 16. The system information tool displays this value. Websites use it to decide how many Web Workers to spawn for parallel processing — image editors, video encoders, and complex web apps perform better when they know how many threads they can use.

The navigator.deviceMemory property reports your approximate RAM in gigabytes, but it is deliberately imprecise. To limit fingerprinting, browsers round the value to the nearest power of 2 and cap it: a machine with 32 GB of RAM may report only 8. The goal is to let websites serve lighter experiences to low-memory devices without revealing your exact hardware configuration.

GPU and Graphics Capabilities

WebGL, the browser's 3D graphics API, necessarily exposes your GPU model. When a website creates a WebGL context, it can query the WEBGL_debug_renderer_info extension to get the GPU vendor and renderer strings — for example, "ANGLE (NVIDIA GeForce RTX 4070 Direct3D11)". The GPU information tool and WebGL test read this information.

Beyond the GPU name, WebGL also exposes: maximum texture size, the number of vertex and fragment shader attributes, supported extensions, and the maximum render buffer size. This data helps web games and graphics applications adapt their quality settings automatically, but it also creates one of the most unique fingerprinting vectors — GPU configurations vary widely between devices.

Screen and Display

The screen object exposes your display resolution (screen.width and screen.height), color depth, and the devicePixelRatio, which indicates how many physical pixels make up one CSS pixel (2x on Retina displays, typically 1x on standard monitors). The screen resolution checker displays all of these values.

Websites use this to serve the right image sizes (a 2x display gets a higher-resolution image) and to layout responsive designs correctly. The combination of resolution, pixel ratio, and color depth is also a fingerprinting data point, though it is less unique than GPU information since many people share common screen configurations like 1920×1080 at 1x.

Network Information

The Network Information API (supported in Chrome and Edge) exposes your approximate connection type ("4g", "3g", "wifi"), downlink speed estimate, round-trip time, and whether the user has enabled data-saving mode. The connection info tool reads this data.

This API is designed so websites can adapt: serving lower-quality video on slow connections, deferring non-essential downloads, or showing offline fallbacks. Firefox and Safari have chosen not to implement it, arguing that the same adaptive behavior can be achieved by measuring actual download speed without exposing connection metadata.

Battery Status

The Battery Status API provides your current charge level, whether you are plugged in, and estimated time to empty or full. The battery information tool uses this API. It was designed so web apps could save work more aggressively on low battery, but researchers discovered that the precise battery percentage could uniquely identify devices across sites.

Firefox removed the Battery Status API in 2017. Safari never implemented it. Chrome still supports it, but only in secure contexts (HTTPS). If battery information matters to you, this is one of the most browser-dependent APIs — it works in Chrome and Edge, and nowhere else.

What Stays Private

Despite all the data above, several categories of information are not available to websites without explicit permission:

  • Camera and microphone — require an explicit permission prompt. The browser shows a clear indicator when they are active.
  • Location — requires a permission prompt. Websites cannot silently access GPS data.
  • Exact CPU model — the browser reveals core count but not the specific processor name (e.g., it does not say "Intel i7-13700K").
  • Exact RAM amount — only an approximate, rounded value is provided.
  • Storage capacity and file system — websites cannot see your disk size or browse your files.
  • Other installed software — browsers no longer expose installed plugins or fonts through JavaScript (a major fingerprinting vector that was closed in recent years).

The Fingerprinting Trade-Off

Every piece of hardware information a browser exposes serves a legitimate purpose — adapting content, optimizing performance, or enabling diagnostic tools like the ones on this site. But that same data, combined across many APIs, can create a surprisingly unique browser fingerprint that tracks you without cookies.

Browser vendors are actively working to reduce fingerprinting surface area. Chrome's Privacy Sandbox initiative, Firefox's Enhanced Tracking Protection, and Safari's Intelligent Tracking Prevention all aim to preserve useful API functionality while making it harder to combine these data points into a unique identifier. The trend is toward less precise hardware information being available by default, with more data gated behind permission prompts or removed entirely — as happened with the Battery API in Firefox.

In the meantime, tools like the ones on CheckRig use these APIs for exactly their intended purpose: helping you understand and test your own hardware, running entirely in your browser, with nothing sent to any server.

Try These Tools