v148 · privacy · shipped
Predictable reported storage quota
StorageManager's estimate() now returns a predictable quota for sites that don't hold unlimited-storage permission. This closes a side channel that let pages detect whether the user was in incognito by reading the dramatically smaller available space.
concepts
-
Quota Inspector
Call
navigator.storage.estimate()live and see what the browser reports. Compare regular vs incognito: the numbers should be indistinguishable in Chrome 148+. -
Incognito Fingerprint Sandbox
Reproduce the privacy attack this change closes. The same heuristic ("quota under ~120 MB ⇒ incognito") that pre-148 fingerprinted users reliably now produces an unreliable verdict. Run in regular + incognito tabs and compare.
-
Quota Planner
Use
StorageManager.estimate()to read the predictable quota Chrome 148 reports, then plan your storage budget across IndexedDB, Cache API, and OPFS with interactive sliders and a live stacked bar chart. -
Quota Budget Planner
Shows real
navigator.storage.estimate()with ausageDetailsbreakdown bar chart. Asset budget sliders track pages, images, SW cache, and IDB records against your real quota. A mode comparison toggle simulates the pre-Chrome-148 incognito fingerprinting gap, and a cleanup generator outputs LRU eviction and quota-threshold code snippets. -
Storage Privacy Tester
Calls
navigator.storage.estimate()live and shows your actual quota, usage, and available space. Then simulates the pre-Chrome-148 incognito fingerprinting attack — comparing your quota against the 120 MB detection threshold — with a verdict showing whether the old heuristic would have flagged your session as incognito.
why it shipped
This mitigates an avenue through which it was possible to detect that a user is in incognito mode. Incognito allocates a much smaller storage quota than regular browsing; any page could read that quota via navigator.storage.estimate() and reliably fingerprint the user's mode. Chrome 148 makes the reported quota predictable enough that the side channel closes without changing actual storage behaviour.
references
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗