What is Stealth Mode?
Stealth mode is the collection of patches and habits that keep an automated browser from announcing that it is automated. It removes the flags automation frameworks leave behind and repairs the values a controlled browser reports differently, while pacing actions at something closer to human speed. It hides the tooling and does nothing for anonymity.
The best-known implementation is the stealth plugin for puppeteer-extra, a set of small evasions applied before any page script runs. Each repairs a single tell: navigator.webdriver removed, the plugin and mimeType arrays repopulated, window.chrome restored, notification permission state made consistent, WebGL vendor strings rewritten, iframe contentWindow behaviour corrected. Playwright users get comparable patches from separate packages. Injection goes through the DevTools protocol so the overrides are already in place by the time the page's own JavaScript starts looking.
Patching leaves residue of its own. An overridden native function whose toString() no longer prints [native code] is detectable in one line, so evasions proxy toString as well, and a careless proxy shows up in error stack traces instead. Enabling the CDP Runtime domain has historically been observable from inside the page. All of this moves: each published evasion becomes a signature a detection vendor can write a test for, and the popular open-source stacks are the most heavily studied code in the field.
JavaScript patches stop at the JavaScript boundary. The TLS handshake still produces the JA3 or JA4 fingerprint of whatever client performed it, the HTTP/2 SETTINGS frame and pseudo-header order still identify the engine, and the IP still carries its reputation and its ASN classification. A Node script that fakes Chrome's navigator object while handshaking like Node contradicts itself in a way no page-level evasion reaches. Driving a genuine Chrome build settles the transport half by construction.
Behaviour is the part teams skip. Human sessions have variable dwell time, mouse paths that curve and overshoot, scrolling that stops mid-page, typing with uneven gaps and the occasional correction. Automation without any of that produces near-identical intervals across thousands of requests, which clusters more easily than any single fingerprint value. Over-patching backfires as well, since a profile assembled from mutually impossible values - a Linux platform string beside a Windows font list - is rarer than the default it replaced.
Where you meet it
You turn to stealth after a script that behaves on your own site starts collecting 403s and challenge pages on a protected one. Measure before stacking plugins. Run the automation against a fingerprint-testing page and read which checks fail. Half the time the answer is the datacenter IP or the container's software renderer, and no amount of JavaScript patching moves either one. Repair the layer that is leaking rather than the one that is easiest to edit.
Common questions
Does the puppeteer stealth plugin still work?
It removes the cheapest and most common tells, which is worth doing. It is also public code that detection vendors study and write tests against, so treat it as necessary rather than sufficient in front of a commercial bot-management product. Pair it with a real browser build and clean exit IPs, then slow the pacing down.
What is the difference between stealth mode and an antidetect browser?
Stealth mode patches a standard browser at runtime from your own script, per launch. An antidetect browser ships a modified engine with persistent profiles, each holding its own storage, cookies and fingerprint. Stealth suits one-off automation and scraping; a profile-based browser suits many long-lived accounts that must remain distinct over months.
Does stealth mode hide my IP address?
No. Every evasion operates inside the browser and changes only what page scripts can read about the device. The connection still originates from whatever address your machine or container uses, along with its ASN and reputation history. Hiding the origin address requires a proxy or a VPN, configured separately.
Related terms
Real 4G/5G mobile and residential IPs
PROXIES.SX runs carrier IPs in 100+ countries with HTTP and SOCKS5 on every endpoint. $4/GB down to $2.40/GB at volume, free endpoints and rotation, and your GB never expire.