Playwright Stealth is a plugin, ported from the older puppeteer-extra-plugin-stealth, that patches the automation fingerprints a stock Playwright browser leaves behind.
What it is
Out of the box, Playwright sets navigator.webdriver to true and, in older Chromium builds, leaves HeadlessChrome in the user-agent string, both of which a page script can read in one line. The stealth plugin injects scripts early, before the page's own code runs, to delete or rewrite those and a handful of other JavaScript-visible properties. The goal, as its own documentation puts it, is to pass common fingerprint tests like fpscanner, Intoli, and areyouheadless, not to make automation undetectable, just considerably harder to detect with those specific checks.
How it gets used to scrape
It's usually the first thing a developer adds once a scraper written in Playwright starts getting blocked. Because it's a drop-in plugin rather than a browser fork, teams add it without changing their existing automation code, which makes it one of the most widely deployed evasions in scraping stacks that never invested in a patched Chromium build.
Why it's hard to catch with old checks
The plugin was built to defeat exactly the checks it's named after: navigator.webdriver, the headless user-agent string, and a set of well-known JavaScript fingerprint leaks. A detector that only runs those specific tests will miss a Playwright Stealth session by design. What it wasn't built to change is the browser's automation protocol footprint underneath the JavaScript layer, or how the session behaves once it starts navigating, and those are exactly where its coverage runs out against a modern detector.
Centinel detects it
In our September 2026 benchmark, Centinel identified every session that ran with Playwright Stealth active. Because the plugin patches JavaScript-visible properties rather than the underlying automation protocol or session behavior, it doesn't touch the layers Centinel scores: connection, request, and behavioral signals evaluated together across the session.
Key takeaways
- Playwright Stealth patches a known list of JavaScript-visible automation tells at page load; it doesn't change the browser's underlying protocol footprint.
- It's a drop-in plugin, so it shows up in scraping stacks that never moved to a patched-Chromium build.
- Its own maintainers describe it as raising the bar, not eliminating detection, and multi-layer behavioral checks are exactly what it doesn't cover.
