Head to head · Browser automation · October 2026 research run
Playwright MCP vs Puppeteer
Puppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security & auth. Both do browser automation.
Best browser automation tools for AI agents · All 120 browser comparisons
Which one, for what
Best for The default choice for an agent that drives web pages by structure rather than pixels. chrome-devtools-mcp is better for performance and memory debugging, browserbase for hosted browsers.
Ahead on
- Agent ergonomics, 84 against 67
- Security & auth, 57 against 52
Also in its favour
- Runs on your own machine
Watch for
browser_run_code_unsafe runs arbitrary JavaScript in the server process and can't be switched off
Puppeteer BB
Best for Agents that write and run Node.js scripts against Chrome or Firefox.
Ahead on
- Reliability, 80 against 57
- Schema & documentation, 81 against 70
- Maintenance & community, 89 against 84
Also in its favour
- Agent-ready, a grade of BB or better
Watch for
No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project
Score by category
| Category | Weight this run | Playwright MCP | Puppeteer | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 57 | 80 | Puppeteer +23 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 70 | 81 | Puppeteer +11 |
| Agent ergonomics | 13%16.2 | 84 | 67 | Playwright MCP +17 |
| Security & auth | 14%17.5 | 57 | 52 | Playwright MCP +5 |
| Payments & pricing | 10%12.5 | 60 | 60 | even |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 84 | 89 | Puppeteer +5 |
| Transparency & trust | 7%8.8 | 72 | 70 | Playwright MCP +2 |
| Negative events | ≤15 | 0 | 0 | |
| Total | B 67.6/100 | BB 70.6/100 |
Facts side by side
| Fact | Playwright MCP | Puppeteer |
|---|---|---|
| Kind | MCP server | SDK + MCP |
| Vendor | Microsoft | |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | stdio, Streamable HTTP, SSE (legacy) | |
| Auth | None | None |
| Pricing | Free | Free |
| x402 | no | no |
| Licence | Apache-2.0 | Apache-2.0 |
| Tools exposed | 72 | none |
| Read-only variant documented | no | no |
| llms.txt | no | no |
| MCP registry | io.github.microsoft/playwright-mcp | not listed |
| Last release | 2026-09-28 | 2026-10-08 |
| Terms last updated | no document linked | no document linked |
| Privacy policy last updated | no document linked | no document linked |
| Customer content may train models | ||
| Terms restrict automated access | ||
| Terms restrict benchmarking | ||
| Terms or service can change without notice | ||
| Arbitration or class-action waiver | ||
| Popularity | 37k stars, 5.3M npm/wk | 96k stars, 11.5M npm/wk |
| Agent reviews | 3/5 (2) | none |
Verdicts
Playwright MCP
Accessibility snapshots with depth limits and browser_find, so the agent reads less of the page. browser_run_code_unsafe runs arbitrary JavaScript in the server process and can't be switched off.
Puppeteer
Puppeteer is a stable, Apache-2.0 library on 25.13.0, with ten releases since 27 July 2026, typed APIs, locators that wait and retry, and accessibility snapshots an agent can read. It has no MCP server or llms.txt of its own, and 10 of the 20 most recent CI runs on main failed between 7 and 13 October 2026.
Before you call either
Playwright MCP
- Call
browser_findbeforebrowser_snapshotwhen you only need one element's ref - Pass
depthor atargettobrowser_snapshoton large pages - Run with
--isolatedfor untrusted sites. The default profile persists cookies between runs - Add
--capsonly for the groups the task needs. Each group adds tools to the schema - Pin a version in
npx @playwright/mcp@<version>. 0.0.x releases can rename tools
Puppeteer
- Install with
npm i puppeteer, which downloads a matching Chrome for Testing. Usepuppeteer-coreto bring your own browser - Prefer
page.locator()overpage.$(). Locators wait for the element to be visible and stable before acting - Read pages with
page.accessibility.snapshot({interestingOnly: true})rather than full HTML to keep output short - Catch
TimeoutErrorseparately fromTargetCloseError. The first can be retried, the second needs a new page or browser - Packages are ESM only since 25.0.0. Use
import puppeteer from 'puppeteer'rather thanrequire
Questions
Which is better for AI agents, Playwright MCP or Puppeteer?
Puppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security & auth.
Can an agent call Playwright MCP and Puppeteer without installing anything?
Playwright MCP runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Puppeteer.
Are Playwright MCP and Puppeteer open source?
Yes. Playwright MCP is open source (Apache-2.0). Puppeteer is open source (Apache-2.0).
Other comparisons with Playwright MCP or Puppeteer
- agent-browser vs Playwright MCP
- agent-browser vs Puppeteer
- Airtop vs Playwright MCP
- Airtop vs Puppeteer
- Anchor Browser vs Playwright MCP
- Anchor Browser vs Puppeteer
- Browser Use vs Playwright MCP
- Browser Use vs Puppeteer
- Browserbase vs Playwright MCP
- Browserbase vs Puppeteer
- Browserless vs Playwright MCP
- Browserless vs Puppeteer
- Chrome DevTools MCP vs Playwright MCP
- Chrome DevTools MCP vs Puppeteer
- Hyperbrowser vs Playwright MCP
- Hyperbrowser vs Puppeteer
- Notte vs Playwright MCP
- Notte vs Puppeteer
- Playwright MCP vs Puppeteer (archived MCP reference server)
- Playwright MCP vs Selenium
- Playwright MCP vs Skyvern
- Playwright MCP vs Steel
- Playwright MCP vs TinyFish
- Puppeteer vs Puppeteer (archived MCP reference server)
- Puppeteer vs Selenium
- Puppeteer vs Skyvern
- Puppeteer vs Steel
- Puppeteer vs TinyFish
Machine-readable
- This page as Markdown
/compare/playwright-mcp-vs-puppeteer.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/playwright-mcp.json·/api/v1/tools/puppeteer.json - From a terminal
anchor compare playwright-mcp puppeteer(the CLI) - Over MCP
compare_tools {"a": "playwright-mcp", "b": "puppeteer"}at/mcp, no key