the intrinsic size of an undecodable image is reported
Check id broken-image-intrinsic-size
What an ordinary browser yields
Contextual only. A browser drawing to a real surface reports a non-zero placeholder size; zero is what an environment with no placeholder to draw reports.
What a detector infers
An image that cannot decode still has intrinsic dimensions, and where they come from is the interesting part: the browser substitutes a broken-image placeholder, and the placeholder is a drawn asset. A browser with a real render pipeline reports the placeholder's size; one with no display pipeline to draw it has nothing to report and answers zero. That makes a failed image load a cheap probe of whether anything is actually being rendered — no canvas, no WebGL, no timing, just two properties on an <img> that never loaded. It is an old technique and it still fires. The row is REPORTED rather than scored because the placeholder's intrinsic size has changed across Chromium versions and varies with the device scale factor, so asserting a specific pair would be a version table — and a version table is the thing that rots fastest here. The reading is shown, with what each outcome ordinarily means, and the verdict is left to the reader.
How to resolve it
Nothing to fix on an ordinary browser. If a headless environment reports zero here and that is not wanted, give the browser a real render surface — a virtual display rather than no display — so the placeholder is drawn and measured like it would be on a desktop.
Read in the wild by
CloakBrowser issues
A stealth-browser tracker records broken-image intrinsic dimensions as a rendering-pipeline probe that separates a drawn surface from a display-less one.
CloakHQ/CloakBrowser #397, #54, #56 (broken-image dimensions / rendering pipeline)
CloakHQ/CloakBrowser#397Every attribution traces to a published artifact. See the sources and their limits.
Nearby checks in Environment & locale
- the voice list arrives the way Chrome delivers it
speech-voices-async-pathspeech-voices reads WHAT is in the voice list. This reads HOW the list arrived, which is a separate fact and survives a roster whose every… - an OS that ships a speech synthesiser enumerates at least one voice
speech-voices-vs-platformThe plain speech-voices readout above refuses to score an empty list, and as written it is right to: Chrome does not build the voice list in… - a live audio destination corresponds to an audio device that exists
audio-sink-vs-device-listA resource oracle, and deliberately a different resource from the voice list. - WebSQL (openDatabase) is absent for Chrome ≥ 119
opendatabase-removedWebSQL was removed from Chrome in version 119, so window.openDatabase should not exist on any newer Chromium. - BatteryManager fields satisfy the spec's mutual-exclusion invariants
battery-spec-invariantsThe probe calls navigator.getBattery() once and records four fields together: level, charging, chargingTime, dischargingTime. - enumerateDevices exposes audiooutput on a Chromium claim
media-kinds-vs-engineThe probe calls navigator.mediaDevices.enumerateDevices() and keeps only each entry's .kind, sorted — never labels or deviceIds, which is… - mediaCapabilities and canPlayType agree about the same codec
mediacapabilities-vs-canplaytypeTwo different APIs answer from the same platform decoder registry. - the storage quota is reported against the JS heap ceiling it gets compared to
storage-quota-vs-heap-ceilingTwo published classifiers read the ratio between an origin's storage quota and the JavaScript heap ceiling, and — this is the whole point of…
Clearcote is a browser built for fingerprint coherence
It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.
This audit takes no position on how Clearcote scores on Environment & locale checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.
See the other checks in Environment & locale — the family broken-image-intrinsic-size belongs to.