Skip to content
All fingerprint checks
Environment & locale

A three-digit year parses the way V8's date parser reads it

Pim· Clearcote Research 2 min readCheck id date-three-digit-year-vs-engine

On a V8 browser, Date.parse('12/1/999') − Date.parse('999-12-01') is exactly 0. N/A on other engines (severity: warn).

What a detector infers

ECMAScript only fixes how Date.parse reads its own ISO format; everything else is left to the engine, and engines differ at the edges. V8 rejects '999-12-01' as ISO (the format needs four digits), falls back to its legacy parser, and reads it as local time — the same thing it does with '12/1/999' — so the two parse to the same instant and their difference is 0. JavaScriptCore reads the ISO form as UTC, so on Safari the difference is the zone's offset.

A widely deployed CAPTCHA's challenge script parses exactly this pair. The row also catches Date classes rebuilt in JavaScript by time zone spoofers: they bring their own parser, and a parser written to look right for ordinary dates rarely reproduces V8's fallback for a three-digit year. Measured on 2026-10-28 on Linux: 0 in Google Chrome 154, 155 and 156, Chromium 153 and Clearcote r52, under New York and Amsterdam.

Only asserted when the measured engine is V8 and the user agent claims a Chromium browser.

How to resolve it

Do not replace Date. If the time zone has to change, change it where V8 reads it, so the engine's own parser stays in place.

Spec invariants as lie detectors

Nearby checks in Environment & locale

See all 41 checks in Environment & locale
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 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 date-three-digit-year-vs-engine belongs to.