Unmaintained antidetect tools other lists still recommend
NRND · 12
Not Recommended for New Designs, in the sense the component catalogues use it: it works, it is not where you should start, and something in this register replaces it or has outlived it.
The rule that sets it, second edition:
pushed 365–1095 days before the field check — or pushed more than 180 days ago while an entry in this registry declares it superseded and that successor is ACTIVE.
Not Recommended for New Designs, borrowed from the component catalogues. The second clause is the one that catches undetected-chromedriver and the original curl-impersonate: both work, and neither is where you should start.
All thresholds and the endpoints they read
Why NRND: pushed_at = 2025-04-25 — 476 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2025-04-25
archived
false
latest_release
—
license.spdx_id
null (none declared)
stargazers_count
850
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/itbrowser-net/undetectable-fingerprint-browser
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
No licence file means no grant of rights, whatever the README implies. Read the state mark and the licence field together before you build on it. — ED.
Why NRND: pushed_at = 2024-07-18 — 757 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-07-18
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
7400
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/berstend/puppeteer-extra
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
Still the most-copied answer on the internet and two years without a push. That gap is the single best argument for this catalogue existing. — ED.
Why NRND: pushed_at = 2025-05-09 — 462 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2025-05-09
archived
false
latest_release
—
license.spdx_id
null (none declared)
stargazers_count
1400
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/rebrowser/rebrowser-patches
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 NRND: pushed_at = 2025-07-05 — 405 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2025-07-05
archived
false
latest_release
—
license.spdx_id
GPL-3.0
stargazers_count
12800
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/ultrafunkamsterdam/undetected-chromedriver
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 NRND: pushed_at = 2024-07-29 — 746 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-07-29
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
981
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/AtuboDad/playwright_stealth
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 NRND: pushed_at = 2025-04-25 — 476 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2025-04-25
archived
false
latest_release
—
license.spdx_id
NOASSERTION
stargazers_count
861
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/ttlns/Selenium-Driverless
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 NRND: pushed_at = 2024-07-15 — 760 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-07-15
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
92
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/daijro/hazetunnel
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 NRND: pushed_at = 2024-11-28 — 624 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-11-28
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
503
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/riflosnake/HumanCursor
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 NRND: pushed_at = 2024-12-03 — 619 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-12-03
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
288
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/ttlns/brotector
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 NRND: pushed_at = 2024-07-18 — 757 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-07-18
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
6800
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/lwthiker/curl-impersonate
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
The most common single mistake in this whole field: installing the repository with the most stars. Check the push date first — that is all this catalogue is for. — ED.
Why NRND: pushed_at = 2024-08-25 — 719 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-08-25
archived
false
latest_release
—
license.spdx_id
null (none declared)
stargazers_count
53
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/Zeeshanahmad4/awesome_list_of_anti_detect_browsers_apps
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 NRND: pushed_at = 2024-02-10 — 916 days, inside the 365–1095 day NRND band.
Field
Value at this printing
pushed_at
2024-02-10
archived
false
latest_release
—
license.spdx_id
null (none declared)
stargazers_count
0
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/antidetect/list
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
Where NRND comes from, and why it is the right word
Not Recommended for New Designs is borrowed intact from the electronic component catalogues, where it sits between Active and Obsolete and means something very specific: the part is still in the catalogue, you can still buy it, it still meets its specification, and if you are designing something new you should not design it in. No other vocabulary in this field carries that distinction, which is why a list with only maintained and unmaintained produces bad advice in both directions.
Applied to software, it is the honest answer for the largest and most misleading group in this whole subject: projects with real momentum behind them whose authors have moved on. They still install. They still work on the browser version they were written for. Every tutorial written in the last three years still names them first.
The two clauses that put an entry here
The first is age: a liveness field between 365 and 1095 days before the field check. The second is succession: a project quiet for more than 180 days while another entry in this register declares it superseded and that successor itself reads ACTIVE. Both are printed in full in the rubric, and the second is the interesting one, because it is the only place this register uses a relation rather than a date to set a state.
Succession is declared, never inferred. This register does not conclude that one tool replaces another because it is newer or busier. Somebody has to say so — usually the author, in the successor's own README — and where nobody has, an old project simply ages through the date clause instead.
Questions about the NRND mark
Answered from the rule printed above, and from the fields it reads.
What does NRND mean?
Not Recommended for New Designs. It is a component-catalogue term, and it means the thing still works and is still available but is not where a new build should start. It is not a synonym for broken, and this register uses it precisely because broken and unmaintained are different findings.
Can I still use a tool marked NRND?
Very probably, and many people do. What you are accepting is a maintenance gap you did not create and cannot close: no fixes for the next browser change, no answers to advisories, and a growing distance between what the project was written against and what you are running it on.
Why do other anti-detect lists still recommend these?
Because they carry no check date. A list assembled once and republished has no mechanism for noticing that a project stopped, and the projects in this band are exactly the ones with enough accumulated visibility to keep being copied forward. That gap is the reason this register prints a timestamp against every field.
Every row on this page is a project someone once chose, and the state
beside it is the part that was invisible at the moment of choosing.
Donut Browser is filed in section
01 under the same rule, with the same fields printed against it and
no exemption of any kind: an open-source anti-detect browser under
AGPL-3.0, with engine-level fingerprint spoofing through the Wayfern
Chromium fork rather than injected JavaScript, a local REST API and MCP
server on your own machine, self-hostable sync, and a pre-launch gate
that refuses to start a profile when the proxy's exit geography
contradicts the profile's fingerprint. If it stops shipping, this
rubric marks it without anyone's permission.