Whole Antidetect Catalog Donut Browser

Catalogue · Section 05

Academic papers & technical writeups

22 entries · 2ND ED., 1ST PRINTING

Corrected to 2026-08-14

22 ACTIVE

The peer-reviewed and specification-grade literature this whole field rests on, from the 2010 paper that first measured a browser in bits of entropy to the inconsistency-detection work that defines what actually gets a spoofed browser caught. Where a publisher refuses automated clients, the open mirror is listed instead, which is why this section avoids publisher URLs.

The peer-reviewed and specification-grade literature this field is built on, preferring open mirrors over publishers that block automated clients.


05 · Academic papers & technical writeups

22 entries
LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Eckersley — How Unique Is Your Web Browser?

ACTIVE

PETS 2010. The paper that started this field, and the origin of measuring a browser in bits of entropy.

https://coveryourtracks.eff.org/static/browser-uniqueness.pdf — printed, not linked

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://coveryourtracks.eff.org/static/browser-uniqueness.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Laperdrix et al. — Browser Fingerprinting: A Survey

ACTIVE

ACM TWEB 2020. The single best orientation document if you are new to the area.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://arxiv.org/abs/1905.01051

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Laperdrix et al. — Beauty and the Beast

ACTIVE

IEEE S&P 2016. Large-scale measurement of fingerprint diversity, including the mobile turn.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.ieee-security.org/TC/SP2016/papers/0824a878.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Iqbal et al. — Fingerprinting the Fingerprinters

ACTIVE

IEEE S&P 2021. Automated detection of fingerprinting scripts in the wild.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://arxiv.org/abs/2008.04480

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Vastel et al. — FP-Stalker

ACTIVE

IEEE S&P 2018. How fingerprints evolve, and how long linkability survives that evolution.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://hal.inria.fr/hal-01652021/document

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Vastel et al. — FP-Scanner

ACTIVE

USENIX Security 2018. The inconsistency-detection paper every anti-detect claim should be read against.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-vastel.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Gómez-Boix et al. — Hiding in the Crowd

ACTIVE

WWW 2018. The counterweight: at real population scale, uniqueness is lower than the early papers implied.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://hal.inria.fr/hal-01718234/document

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Mowery & Shacham — Pixel Perfect

ACTIVE

W2SP 2012. Canvas fingerprinting, first described.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://hovav.net/ucsd/dist/canvas.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Cao et al. — (Cross-)Browser Fingerprinting

ACTIVE

NDSS 2017. Identifying a machine across two different browsers via OS and hardware features.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.ndss-symposium.org/ndss2017/ndss-2017-programme/cross-browser-fingerprinting-os-and-hardware-level-features/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Nikiforakis et al. — Cookieless Monster

ACTIVE

IEEE S&P 2013. The first systematic look at commercial fingerprinting providers.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.securitee.org/files/cookieless_sp2013.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Englehardt & Narayanan — 1-Million-Site Measurement

ACTIVE

CCS 2016. The measurement infrastructure that became OpenWPM.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://webtransparency.cs.princeton.edu/webcensus/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

See also · superseded by · alternatives

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Senol et al. — USENIX Security 2022

ACTIVE

Leakage of form data before submission, measured at scale.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.usenix.org/conference/usenixsecurity22/presentation/senol

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Laperdrix et al. — Fingerprinting defenses (PoPETs 2020)

ACTIVE

An evaluation of the defences, including where randomisation makes you more identifiable rather than less.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://petsymposium.org/popets/2020/popets-2020-0009.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

W3C — Mitigating Browser Fingerprinting

ACTIVE

The specification-authoring guidance. Read it to understand why new web APIs look the way they do.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.w3.org/TR/fingerprinting-guidance/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Mozilla Security/Fingerprinting wiki

ACTIVE

A browser vendor's own working notes on which surfaces leak and what it intends to do about them.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://wiki.mozilla.org/Security/Fingerprinting

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Akamai — Passive Fingerprinting of HTTP/2 Clients

ACTIVE

Black Hat EU 2017. The origin of HTTP/2 frame-order fingerprinting, from the detection side.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://blackhat.com/docs/eu-17/materials/eu-17-Shuster-Passive-Fingerprinting-Of-HTTP2-Clients-wp.pdf

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

TUM/LRZ — Fingerprinting HTTP/2

ACTIVE

A live HTTP/2 fingerprint readout attached to the research behind it.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://privacycheck.sec.lrz.de/passive/fp_h2/fp_http2.html

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceNOASSERTION
Pushed2026-08-06
Release—
Stars1.4k
StateACTIVE
Silent8 d

OpenWPM

ACTIVE

The web-measurement platform most of the papers in this section were produced with.

Source

Evidence

Why ACTIVE: pushed_at = 2026-08-06 — 8 days, within the 90-day ACTIVE threshold.

FieldValue at this printing
pushed_at2026-08-06
archivedfalse
latest_release—
license.spdx_idNOASSERTION
stargazers_count1400
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/openwpm/OpenWPM

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

See also · superseded by · alternatives

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Antoine Vastel's blog

ACTIVE

Practical detection writeups from an author who also publishes the peer-reviewed version.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://antoinevastel.com/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Castle blog

ACTIVE

Detection-side engineering posts with unusual technical specificity.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://blog.castle.io/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Incolumitas (Nikolai Tschacher)

ACTIVE

Long-running bot-detection experiments, including a self-hosted detection test.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://incolumitas.com/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

LicenceN/A
HTTP200
Checked2026-08-14
StateACTIVE
Silent—

Fingerprint blog

ACTIVE

The commercial identifier vendor's engineering blog. Vendor-authored; read as a primary source about their own product.

Source

Evidence

Why ACTIVE: No repository. The link check returned 200 at 2026-08-14T09:12:00Z, and 200–399 is ACTIVE for a non-repository entry.

FieldValue at this printing
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://fingerprint.com/blog/

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.


The two findings that should change how you read everything else

The first is that uniqueness measured on a self-selected sample overstates uniqueness in a population. The early results came from volunteers visiting privacy research sites, and later work at genuine population scale found substantially lower uniqueness. Any scanner that tells you how rare you are is telling you how rare you are within its own corpus, and the honest ones publish that corpus.

The second, and more practically important, is that detection in the wild is driven by contradiction rather than by rarity. A fingerprint whose components disagree with each other is identifiable as spoofed regardless of how common each individual component is. That result is why coherence is the property an anti-detect stack has to hold, and why a randomising defence can be worse than no defence at all — a finding published in this section rather than asserted here.

How to read a fifteen-year literature without reading all of it

Start with the survey, which organises the whole field into a structure the rest of the papers slot into. Then read the inconsistency work, because it defines the test that matters. Then read the population-scale measurement, because it defines the limits of what any uniqueness number means.

The network-layer material is filed here too rather than with the tooling, because the origin of HTTP/2 client fingerprinting was written from the detection side and reads as research rather than as a product. Its practical consequences live in section 07, and the two are best read together.


State marks used in this section


Questions about fingerprinting papers

Answered from the fields printed above, and from nothing this register has not checked.

Which browser fingerprinting paper should I read first?

The survey, which orders fifteen years of attack and defence research into a structure the individual papers make sense inside. After that, the inconsistency-detection work, because it describes the test that actually catches a spoofed browser, and then the population-scale measurement, which bounds what any uniqueness figure can mean.

Are these papers still current?

The mechanisms are; the measurements are snapshots. Canvas fingerprinting works the way it was first described; the percentages attached to it in a 2012 paper describe the web of 2012. This register prints a link status and a check date for each entry and makes no claim about a paper's currency, because no HTTP status can carry that.

Why are publisher links avoided in this section?

Because several major publishers refuse automated clients, and this register does not list an address it cannot check. Where an open mirror exists — an author copy, a preprint server, an institutional repository — that is what is listed, and the publishers that refused are recorded on the field log.


Donut Browser is filed in section 01 of this same catalogue, under the same rubric, with the same fields printed against it and no exemption: an open-source anti-detect browser under AGPL-3.0 whose Wayfern Chromium fork applies fingerprint overrides at engine level over CDP rather than by patching page JavaScript, with a local REST API and MCP server on your own machine, self-hostable sync, zero telemetry, and a pre-launch gate that refuses to start a profile when the proxy's exit geography contradicts the profile's fingerprint. It is judged here the same way everything in this section is judged.

Download Donut Browser

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

macOS · Windows · Linux · Nix. Desktop only. Source, AGPL-3.0 · Its entry · The rubric · The data, CC0 · The keepers' disclosure

Other sections