Skip to content
All fingerprint checks
Automation surface

A burst of history updates is rate-limited, as Chrome's IPC flooding protection does

Pim· Clearcote Research 2 min readCheck id history-updates-rate-limited

On a Chromium engine, fewer than all 300 replaceState calls in a burst take effect (genuine Chrome: 200). N/A on other engines and when the browser throws or ignores the updates (severity: warn).

What a detector infers

Every history.pushState or replaceState call sends a message from the page to the browser process. To keep a page from flooding that channel, Chrome counts them per frame and silently ignores further calls once a frame has made 200 within 10 seconds (it logs a 'Throttling navigation' warning in the console). The switch --disable-ipc-flooding-protection turns that limit off, and the common automation drivers pass it by default.

So a page can make 300 replaceState calls in a row, each storing its own number in history.state, and read which one stuck: in Chrome the state stops at 200, with the switch it reaches 300. The audit does this in a throwaway frame so the page's own history and address bar are never touched, and the frame's limit is its own. Other engines handle the burst differently: Firefox throws an exception at call 201 and Safari at call 101.

A thrown error or an unreadable state is therefore reported as inconclusive, never as a failure.

How to resolve it

Launch without --disable-ipc-flooding-protection. Remove it from the driver's default arguments; nothing an ordinary page does depends on it.

How automation gets caught, layer by layer

Nearby checks in Automation surface

See all 59 checks in Automation surface
Who builds this test

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 Automation surface 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 Automation surface — the family history-updates-rate-limited belongs to.