WebmasterID logoWebmasterID
User agents

Playwright and Puppeteer user agents

Playwright and Puppeteer are browser-automation libraries that drive real Chromium, Firefox, or WebKit instances. Because they use the actual browser engine, their default user agent matches a normal browser — sometimes with a HeadlessChrome marker — so the user agent alone rarely reveals them. Detection relies on automation signals, not the string.

Verified against primary sources

What this means

Playwright and Puppeteer control full browser engines (Chromium, and for Playwright also Firefox and WebKit). Because they render with the real engine, by default they present a normal browser user agent. Puppeteer's headless Chromium has historically included a HeadlessChrome marker in its user agent, but that is easily overridden and newer headless modes may not show it.

The practical consequence: you cannot reliably detect these tools from the user agent. They look like browsers because they are browsers.

Signals beyond the user agent

More reliable automation signals include the navigator.webdriver property (true under automation per the WebDriver spec), absence of expected browser headers or plugins, headless rendering quirks, and behavioural patterns like inhumanly fast navigation or no mouse movement.

Operators of these tools can spoof the user agent and patch some signals, so detection is probabilistic. Combine multiple signals rather than relying on any single one, and never treat the user agent as proof.

How to treat this traffic

If you operate the automation (testing, monitoring), set a custom user agent identifying it so your own logs are clean. If you are defending against unwanted automation, weigh combined signals and apply rate limiting or challenges rather than UA-substring blocks, which both miss spoofed agents and risk blocking real browsers.

Because Playwright and Puppeteer drive real engines, they execute JavaScript and load assets, so JS-based detection differs from how you would catch simple HTTP libraries.

How it appears in analytics and logs

A request from Playwright or Puppeteer usually carries a browser-like user agent, optionally containing HeadlessChrome when running headless Chromium. The user agent is a weak signal; automation is better identified by navigator.webdriver, missing browser headers, and behavioural patterns.

Diagnostic use case

Understand why Playwright and Puppeteer traffic blends in with real browsers, and which automation signals (beyond the user agent) actually distinguish it.

What WebmasterID can help detect

WebmasterID looks at automation signals server-side rather than trusting the browser-like user agent, so headless Playwright/Puppeteer traffic can be separated from genuine human visits where signals allow.

Common mistakes

Privacy and accuracy notes

Detecting headless automation uses request and capability signals, not human identity. WebmasterID treats confirmed automation as a bot event, separate from human analytics, without fingerprinting individuals.

Frequently asked questions

Can I detect Puppeteer from the user agent?
Not reliably. Headless Chromium may include a HeadlessChrome marker, but it is easily overridden. Use navigator.webdriver and behavioural signals alongside the UA, never the UA alone.

Related pages

Sources and verification notes

Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.