Skip to content
All fingerprint checks
Automation surface

the media-session counter runs forward and does not restart

Pim· Clearcote Research 2 min readCheck id eme-session-counter-monotonic

Three sessions numbered in strictly increasing order, with the third — opened from a separate MediaKeys object — continuing the sequence rather than restarting it.

What a detector infers

A deployed commercial agent opens a ClearKey media session purely to read its identifier as a number — and then, if that number comes back below ten, opens as many as 2500 further sessions and reads it again. You do not inflate a counter unless you believe somebody else is going to read it, and that single detail is what makes this worth a row.

Measuring what the identifier actually is: a Chromium ClearKey session id is eight bytes shown as sixteen hex characters, the first four random and the last four a little-endian counter. It increments per session, it continues across independent MediaKeys objects, and it survives across separate script evaluations — observed running one through four, then five through seven in a later probe on the same page.

Its scope is the renderer PROCESS, not the document, the origin, or the object that created the session. So it is an odometer for the browser process. A browser launched to serve a single page load reads near one; a browser somebody has had open all afternoon reads high. No fingerprint value carries that information, no persona sets it, and clearing storage does not touch it — which is precisely why a collector would rather inflate it than read it honestly.

The absolute value is reported and never scored, because starting your browser recently is not a fault and scoring it would convict most of the people who run this page. What is scored is the invariant no real Chromium breaks: the counter runs strictly forward and does not restart when a new MediaKeys object is made.

A build that resets it per object is manufacturing freshness, which is an action rather than a state, and a far more distinctive one than the number it was trying to hide.

How to resolve it

Leave the counter alone. A low reading is not a defect; a counter that restarts is a claim no real build makes, and it stands out more than the high number it was concealing. If short-lived browser processes are the underlying concern, the answer is process lifetime, not the odometer.

How automation gets caught, layer by layer

Nearby checks in Automation surface

See all 49 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 eme-session-counter-monotonic belongs to.