Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To manually install Playwright, install the language package first, then download the matching Playwright browser binaries. For Node.js, run npm install -D playwright followed by npx playwright install. Installing only the package is not enough: each Playwright version requires specific browser-binary versions.

What a manual Playwright installation includes

Playwright has two separate installation layers:

  1. Language package: the JavaScript/TypeScript, Python, Java, or .NET binding used by your code.
  2. Browser binaries: Playwright-managed builds of Chromium, Firefox, and WebKit that match the binding version.

The official Playwright browsers guide states: “Each version of Playwright needs specific versions of browser binaries to operate.” A package upgrade can therefore require another browser download.

Node.js: complete manual installation

1. Create or open a project

mkdir playwright-manual
cd playwright-manual
npm init -y

Use a supported, currently maintained Node.js release for your operating system. Keeping package-lock.json in version control makes the package version reproducible.

2. Install the package

npm install -D playwright

This adds the full Playwright package as a development dependency. If you intentionally need one browser package, Playwright also publishes @playwright/browser-chromium, @playwright/browser-firefox, and @playwright/browser-webkit. Choose a browser-specific package only when your project and deployment process are designed around that narrower installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Download browser binaries

npx playwright install

Download only the browser engines your tests use when reducing installation time or cache size:

npx playwright install chromium
npx playwright install firefox
npx playwright install webkit

Inspect available installer options and verify the CLI version with:

npx playwright install --help
npx playwright --version

4. Run a smoke test

node -e "const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); await page.goto('https://example.com'); console.log(await page.title()); await browser.close(); })();"

A title printed without an executable error confirms that the package and Chromium binary are both available.

Python, Java, and .NET

Python

python -m pip install playwright
playwright install

On a Linux machine where browser system libraries are absent, use:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
playwright install --with-deps

The first command installs the Python binding; the second downloads browsers. Keep the commands in that order so the CLI installs binaries for the package version actually present in the environment.

Java

Install the Playwright Java dependency using your build tool, then invoke the Playwright CLI generated by the Java package to install browsers. The exact invocation depends on whether the project uses Maven or Gradle; use the command shown by the version of the official Java installation documentation and keep it tied to the same dependency version.

.NET

Install the Playwright NuGet package, build the project, and run the generated PowerShell browser-install script from the build output. The generated script is version-specific, so do not copy a script from a different project or package version.

Linux system dependencies and CI

Install operating-system libraries

Browser binaries can download successfully while failing to start because Linux shared libraries are missing. Install dependencies together with the browsers:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx playwright install --with-deps

To install dependencies for only Chromium:

npx playwright install-deps chromium

The --with-deps option is intended for Linux environments where you control package installation. On hosted runners, the job user must have permission to install packages, or the runner image must already contain them.

Recommended CI order

npm ci
npx playwright install --with-deps
npx playwright test

npm ci uses the lockfile, so the browser download corresponds to the package version selected by the build. The official CI guidance recommends one worker in CI for stability and reproducibility unless the runner is deliberately sized for parallel work. Increase parallelism only after providing enough CPU, memory, and isolated resources.

Docker

For Linux CI, the official Playwright Docker image is an alternative installation boundary. Align the image’s Playwright version with the project’s package version. A mismatch can prevent Playwright from locating browser executables even when both the image and package appear installed. Pin the image tag and project dependency together rather than treating the image as a replacement for version pinning.

Choosing browsers and reducing installation cost

Need Command Result
All Playwright browsers npx playwright install Installs Chromium, Firefox, and WebKit required by the package release.
Chromium only npx playwright install chromium Downloads Chromium and avoids unused engines.
Firefox only npx playwright install firefox Downloads Firefox only.
WebKit only npx playwright install webkit Downloads WebKit only.
Chromium Linux libraries npx playwright install-deps chromium Installs system dependencies without downloading every browser.

Selecting one browser is safe only when your tests never launch another. A later test change that calls Firefox or WebKit will need another explicit install.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Proxies, mirrors, and private certificates

Corporate proxy

Set HTTPS_PROXY before running the installer:

HTTPS_PROXY=http://proxy.example.test:8080 npx playwright install

Use your organization’s actual proxy URL and authentication method. Do not commit credentials in shell history, CI YAML, or source files.

Internal browser mirror

Set PLAYWRIGHT_DOWNLOAD_HOST to the internal artifact host before downloading:

PLAYWRIGHT_DOWNLOAD_HOST=https://artifacts.example.test/playwright npx playwright install

Browser-specific host variables take precedence when you need different repositories for different engines. Configure the mirror so it contains the browser revisions expected by your Playwright package.

TLS interception and private CAs

If a corporate TLS proxy produces a self-signed-certificate error, point Node.js at the organization’s trusted CA file before installation:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
NODE_EXTRA_CA_CERTS=/path/to/company-ca.pem npx playwright install

The CA file must be readable by the account performing the install. Fix trust configuration rather than disabling certificate verification.

Browser cache locations and reproducible installs

By default, Playwright stores downloaded browsers in these locations:

Operating system Default cache
Windows %USERPROFILE%AppDataLocalms-playwright
macOS ~/Library/Caches/ms-playwright
Linux ~/.cache/ms-playwright

Share or relocate a cache

Set PLAYWRIGHT_BROWSERS_PATH to a directory available to the install and test processes:

PLAYWRIGHT_BROWSERS_PATH=/var/cache/playwright npx playwright install
PLAYWRIGHT_BROWSERS_PATH=/var/cache/playwright npx playwright test

In CI, cache this directory with a key that includes the operating system, architecture, and Playwright package version. Restoring a browser cache from another version can produce missing or incompatible executables.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Hermetic project-local installation

Set the variable to 0 to place browsers under the package directory:

PLAYWRIGHT_BROWSERS_PATH=0 npx playwright install

For Node.js this is node_modules/playwright-core/.local-browsers (or the equivalent package directory). A hermetic install is useful when an artifact must carry its exact browsers, but it increases artifact size and requires rebuilding when the package changes.

Inspect and remove browsers

npx playwright install --list
npx playwright uninstall
npx playwright uninstall --all

The first command shows installations. The second removes the current installation; --all removes browsers belonging to all Playwright installations. Playwright also performs stale-browser garbage collection. Set PLAYWRIGHT_SKIP_BROWSER_GC=1 or pass --no-shell only when supported by your installed CLI; use the documented --no-remove option to disable cleanup on versions that provide it.

Why the browser executable is missing

Only the package was installed

Run the matching install command from the same project and user account:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx playwright install

Different package and browser versions

Check npx playwright --version, remove stale installations if necessary, then reinstall after npm ci or your language package-manager lockfile has selected the intended version.

Cache paths differ

An install performed with PLAYWRIGHT_BROWSERS_PATH is invisible to a test process using the default path. Export the same value for both commands, and ensure the runtime user can read the directory.

Docker image mismatch

Use an image tag matching the project’s Playwright release. Rebuild the image after dependency updates instead of relying on an old layer.

Linux libraries are missing

If the error names shared libraries or the browser exits immediately, run npx playwright install --with-deps (or the browser-specific dependency command) on a supported Linux runner.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Installation troubleshooting

Symptom Likely cause Fix
Download times out Proxy, firewall, or restricted egress Configure HTTPS_PROXY or an approved PLAYWRIGHT_DOWNLOAD_HOST; allow the required host.
Self-signed certificate error TLS interception Set NODE_EXTRA_CA_CERTS to the corporate CA before installing.
Executable not found Browsers were never installed or cache paths differ Run npx playwright install and use one consistent cache path.
Browser launches locally but not in CI Missing Linux dependencies or permissions Use --with-deps, a compatible runner image, and a writable/readable cache.
Tests fail after a package upgrade Old browser revision or stale cache Run npm ci, reinstall browsers, and invalidate a version-agnostic CI cache.
Browser disappears from a shared cache Stale-browser garbage collection Coordinate installs, or set PLAYWRIGHT_SKIP_BROWSER_GC=1/--no-remove where supported.

Or skip the browser setup

If your goal is a clean website image or PDF rather than running browser automation yourself, ScreenshotNeo provides a website screenshot API and MCP server. It accepts a URL in one GET request and can return PNG, JPEG, WebP, or PDF. Before capture it accepts cookie/consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off.

Only clean shots are billed. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies the result with X-Page-Verdict and X-Billed headers. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.

One-call examples

See the full parameter reference in the ScreenshotNeo documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo includes full-page and element capture, dark mode, device presets, custom viewports, retina scale, PDF paper and page controls, HTML/CSS rendering, custom JavaScript and CSS, clicks, waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification. Parameter names used by other screenshot APIs also work.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is on every plan, and yearly billing gives two months free. Create a free ScreenshotNeo account to get started.

Frequently Asked Questions

Do I need all three Playwright browsers?

No. Install only Chromium, Firefox, or WebKit when your tests target one engine; install all three when your test matrix requires cross-browser coverage.

Can I copy a Playwright browser cache between machines?

Only between compatible operating systems, architectures, and Playwright versions. Treat the cache as versioned build output rather than a universal download.

Should browser installation run during every test command?

Usually no. Install browsers in the environment-provisioning or CI setup step, then run tests against that pinned installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Bottom Line

Manual Playwright installation is reliable when you pin the package, install its matching browsers, add Linux dependencies where needed, and keep proxy, cache, and container versions consistent.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.