| Component name | heap_limit |
|---|---|
| In the visitorId | yes |
| structuredId group | device (screen, memory, CPU) |
| Hashing | plain value; a digest only when longer than 128 characters or not printable ASCII |
| Excluded under | no browser class |
| Inner timeout | 1000 ms |
| Added in | signalsVersion 2 |
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
okin Chromium-based browsers: Chrome, Chrome on Android, Edge, Brave, Samsung Internet.unavailable/no_apiin Safari, every iOS browser and Firefox.- Not in the exclusion table.
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.