Signal · signalsVersion 5

heap_limit

The maximum JavaScript heap size Chromium allows the page, in bytes. Chromium only.

heap_limit at a glance (from the library code, signalsVersion 5)
Component nameheap_limit
In the visitorIdyes
structuredId groupdevice (screen, memory, CPU)
Hashingplain value; a digest only when longer than 128 characters or not printable ASCII
Excluded underno browser class
Inner timeout1000 ms
Added insignalsVersion 2
In plain words

Chrome-family browsers give each page a ceiling for how much memory its scripts may use. That ceiling depends on the device and on the browser build, and Chromium shows it to pages. WhiskerJS reads only this ceiling, not what the page actually uses. Other browsers do not offer it.

What it reads

performance.memory.jsHeapSizeLimit, reported as a plain number of bytes when it is a finite number greater than zero.

How the technique works

performance.memory is a Chromium extension of the Performance API with three numbers: the heap limit, the total heap and the used heap. Only the limit is stable enough to be useful; the other two change constantly while the page runs and are not read. Anything other than a positive finite number gives unavailable / no_api.

Why it helps

The limit is set by the browser build and its configuration, and can differ between devices, so it adds a further distinction inside the Chromium population, where the other browsers’ values are not available anyway. On your server it is also a consistency check: a result that claims to be Chrome but has no heap_limit, or a value that changes between two requests in one session, deserves a closer look. Because the value is tied to the browser build, a new Chromium version that changes the limit would move many devices to a new value at once, which would show up as a change of the device part of the structuredId across your traffic rather than on one device. It is in the device group.

Stability

It changes rarely, mostly with a browser version that changes its heap configuration or on a different device.

Browser support and what blocks it

Privacy

A single number about the browser’s memory configuration. No permission, no prompt, no request.

How WhiskerJS handles noise and failures

Status ruleId When
ok none for example 4294705152
unavailable no_api no performance.memory, or not a positive number
blocked security_error, threw reading threw
excluded caller_excluded your exclude list
timed_out timeout, aborted 1000 ms inner timeout, budget, abort

Example value

"heap_limit": { "status": "ok", "value": "4294705152", "hashed": false }

The headless Chromium test browser used for these pages reported 3760000000; headless Firefox and WebKit reported unavailable / no_api.

Questions and answers

Why is heap_limit unavailable in Safari and Firefox?

performance.memory is a non-standard Chromium feature. Other engines do not offer it, so the component reports unavailable with ruleId no_api by design.

Does heap_limit measure how much memory the page uses?

No. It reads only the limit, jsHeapSizeLimit, which the browser sets from the device and its own configuration. The current usage values are not read.