Whole Antidetect Catalog Donut Browser

Catalogue · Section 06 · Entry

ClientJS

DEAD

ClientJS is a JavaScript project catalogued in section 06 of this register. An early general-purpose fingerprinting library, still linked from tutorials written after it stopped. It reads DEAD at the last field check, and it is still listed as live by registries that do not check. The status and the instant it was read at are both printed below.

https://github.com/jackspirou/clientjs


The fields this state was derived from

FieldValue at this printing
pushed_at 2023-01-08
archived false
latest_release —
license.spdx_id Apache-2.0
stargazers_count 2200
http_status 200
fetched_at 2026-08-14T09:12:00Z
endpoint GET https://api.github.com/repos/jackspirou/clientjs
rubric_edition 2nd, in force since 2026-08-14
unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

Why it reads DEAD

pushed_at = 2023-01-08 — 1314 days, past the 1095-day outer threshold.

Unreachable, or untouched past the outer threshold.

Under the superseded first edition

Unchanged: the first edition read DEAD from the same fields.

The rubric in force · The superseded first edition · Errata leaf


What ClientJS actually does

An early general-purpose fingerprinting library from the period when the technique was still being popularised, and still linked from tutorials written long after it stopped moving.

What ClientJS's maintenance signals mean

pushed_at reads 2023-01-08 — 1314 days, about 3.6 years, past the 1095-day outer threshold. Three years is where this register stops describing a repository as merely quiet.

DEAD in this catalogue is a statement about a measurement, not an obituary. The code is still there and may still compile; what has stopped is anybody attending to it. Read that against what the project is for. A passive fingerprinting reference from a decade ago can be entirely current as a description of a technique while being entirely unmaintained as software, and this register prints the second fact without implying the first.

No release was captured for this entry, which this register records as unknown rather than as none. The distinction matters more than it looks: a project with no tags and a project whose tags the sweep failed to read produce the same blank cell, and printing them as the same fact would be the register asserting something it has not measured.

Where ClientJS sits in this catalogue

ClientJS is filed in section 06, fingerprinting libraries, whose scope is this: The collectors themselves — the code that reads a browser. Read these to know what is being asked of you. An entry sits in exactly one section here. Where a project could defensibly go in two, it is placed where a reader would look for it first rather than where it fits most tidily, and that is an editorial decision rather than a measured one.

Filed beside it in the same section: BotD (ACTIVE), ThumbmarkJS (ACTIVE), CreepJS (source) (ACTIVE). Comparing an entry against its own section-mates is more informative than comparing it against the catalogue as a whole, because everything in a section is answering roughly the same question and the differences left over are the ones that matter.

It is published under Apache-2.0, alongside the rest of the Apache-2.0 entries in this register, and it sits with everything else currently marked DEAD. Read those two facets together: a permissively licensed project that stopped shipping is not a safer dependency than a copyleft one that did not, and a filter on one axis alone will tell you the wrong thing.

Substitutes for the same job, with no claim that either is better: FingerprintJS, ThumbmarkJS. The alternative relation is symmetric and carries no ranking, because this register publishes no ranking of any kind. The full ClientJS comparison table sets all of them side by side on licence, push date, release cadence and state.

What to settle before you adopt ClientJS

Its surface list predates most of the modern collection points, so anything built on it is measuring the browser of another decade. It is kept here with its dates attached precisely because other lists still recommend it without them.


See also

Relation Entry State Last push
alternative to FingerprintJS ACTIVE 2026-08-09
alternative to ThumbmarkJS ACTIVE 2026-07-17

Full comparison of ClientJS and its alternatives


Questions readers ask about ClientJS

Answered from this entry's own fields, at the field check printed above and at no other instant.

Is ClientJS still maintained?

At the 2026-08-14 field check this register read pushed_at as 2023-01-08 and the archive flag as false, and the rubric in force turned those into DEAD. Unreachable, or untouched past the outer threshold. The clause that fired is printed on this page, so you can check the arithmetic rather than take the word.

What are the alternatives to ClientJS?

FingerprintJS, ThumbmarkJS are recorded as substitutes for the same job. The relation carries no ranking — this register publishes none — so read them side by side on the comparison table, which prints licence, last push, release cadence and state for each.

What licence is ClientJS under?

Apache-2.0, read from the repository's own licence metadata at the field check rather than from a README badge. Other Apache-2.0 entries are grouped together, and the no-licence-declared group is worth a look before you assume any project here carries a grant.

Where does this status come from?

From one sweep, recorded with the instant it ran. The raw fields, the endpoint they were read from, the fetch timestamp and the rubric edition in force are all printed on this page, and the same row is in the CC0 data files in JSON and CSV. Recompute the state from those columns and this page must agree with you; where it does not, the register is wrong.


A collector is the clearest possible statement of what the other side is asking your browser, which makes this section the best place to decide what you actually need to answer. Donut Browser answers it in the engine rather than in the page: the Wayfern Chromium fork applies overrides over CDP, so a library reading a value gets it from the browser instead of from a script that patched the getter a moment earlier.

Download Donut Browser

curl -fsSL https://donutbrowser.com/install.sh | sh

macOS (DMG, Homebrew cask donut), Windows (installer and portable), Linux (deb, rpm, AppImage, with APT and RPM repositories at repo.donutbrowser.com), and a Nix flake. Desktop only — there is no mobile build target. Ten shipped languages. Source, AGPL-3.0 · its own entry, judged by the same rubric · the keepers' disclosure.