
Puppeteer
github.com/puppeteer/puppeteer- Category
- Developer Tools
- Rank
- No. 21Tools index
- Pricing
- Open Source
- Platform
- cli
- Type
- TOOL
- Builder
- puppeteer
- GitHub
- 95.5k stars
- Latest release
- puppeteer-v25.7.0
- Added
- Jul 2, 2026
About
Puppeteer is a JavaScript library that provides a high-level API to control Chrome or Firefox via the DevTools Protocol or WebDriver BiDi. It runs browsers in headless mode by default, making it ideal for web scraping, automated testing, screenshot generation, and browser automation tasks.
What it does
Puppeteer lets JavaScript programs drive real browser sessions through page navigation, selectors, keyboard and mouse input, request interception, screenshots, PDFs, and script evaluation. It can also install, locate, launch, and remove compatible browser builds.
Why it's ranked here
Puppeteer is a strong choice when browser control belongs inside a Node.js application. The repository shows broad Chrome and Firefox testing, explicit browser version compatibility, typed APIs, install testing, and active handling of two automation protocols. Its boundaries are equally clear.
What's good
The default package supplies a compatible browser, while the core package avoids that download. Locators can target accessible names or visible text. Generated input events are trusted browser events. Releases pin browser versions to reduce unexpected protocol breakage.
Tradeoffs
JavaScript is the only language binding, and large-scale automation orchestration sits outside the project. WebDriver BiDi still lacks coverage, tracing, accessibility, several emulation controls, and other features available through Chrome's protocol. Blocked package install scripts can prevent browser downloads and cause runtime errors.
How to use it well
Pick it for Node.js workflows that need direct, programmable control of Chrome or Firefox, including integration tests, scraping, rendering, screenshots, PDFs, and request inspection. Use the core package when browser installation is managed separately. Add other tooling for assertions, distributed orchestration, proxy rotation, or task management.
Technical notes+
The root package.json defines an ES module npm workspace with separate puppeteer, puppeteer-core, browser-management, test-server, test, documentation, and tooling packages. packages/puppeteer-core/src/index.ts re-exports browser and Node surfaces. packages/browsers/src/main.ts exposes install, uninstall, launch, cache, platform detection, build resolution, executable-path helpers, providers, and CLI. packages/browsers/src/CLI.ts implements browser installation with build, platform, cache path, base URL, dependency-installation, and output-format controls. package.json wires Chrome CDP, Chrome BiDi, headful, headless, pipe, shell, Firefox, installation, unit, and type-test tasks. packages/testserver/src/index.ts supplies HTTP, HTTPS, WebSocket, authentication, redirect, caching, gzip, CSP, and request-observation facilities for tests.
Observed
- License
- Source headers use SPDX-License-Identifier: Apache-2.0.
- Languages
- The supplied source is primarily TypeScript, with JavaScript module tooling and ES module packaging.
- Packaging
- Published through npm as puppeteer and puppeteer-core; the former downloads a compatible Chrome, while the latter does not.
- Interfaces
- Provides a JavaScript library API and a browser-management command-line interface.
- Browser support
- Supports Chrome and Firefox through Chrome DevTools Protocol and WebDriver BiDi.
- Repository structure
- Uses npm workspaces for public packages, tests, installation tests, documentation generators, lint tooling, and a custom Mocha runner.
- Test coverage surfaces
- Repository scripts cover Chrome and Firefox, headful and headless modes, Chrome BiDi, pipe transport, installation behavior, unit tests, and TypeScript types.
Read from README.md, package.json, packages/browsers/src/CLI.ts, packages/browsers/src/main.ts, packages/testserver/src/index.ts, packages/puppeteer-core/src/index.ts, docs/faq.md, docs/index.md, docs/examples.md, docs/CHANGELOG.md, docs/contributing.md, docs/webdriver-bidi.md, docs/troubleshooting.md, docs/supported-browsers.md.
What it can do
Capture screenshots of web pages
URL or HTML content → PNG or JPEG image file
Scrape content from web pages
URL and CSS/XPath selectors → Extracted text, attributes, or structured data
Generate PDF from web pages
URL or HTML content → PDF file
Automate browser interactions
Script defining clicks, form inputs, navigation steps → Completed browser actions and resulting page state
Run automated end-to-end tests on web applications
Test scripts and target web application URL → Test results and pass/fail reports
Intercept and modify network requests
URL patterns and request/response modification rules → Modified network traffic and captured request/response data
Execute JavaScript in a browser context
JavaScript code and target web page URL → Execution results or modified DOM state
Measure web page performance metrics
URL of a web page → Performance data including load times, resource sizes, and DevTools trace
Tags
Tech Stack
Comments (0)
No comments yet
Indexed by a proprietary survey. Corrections welcome.