Free tools Windows power users keep installed
One-click scans. No signup required.
Short answer: use Microsoft’s Playwright image for Playwright projects and cross-browser testing, Puppeteer’s image for Puppeteer with Chrome for Testing, and Browserless when you want a browser service rather than a browser embedded in your application. Build from node:bookworm or Ubuntu only when you need to control every OS package, font, browser, and layer yourself. Pin browser and library versions together, and check CPU architecture before choosing Chrome, Edge, or a multi-engine image.
What a headless-browser base image actually provides
A headless-browser base image is the operating-system layer that makes browser automation runnable in a container. It normally includes a browser executable, shared libraries, font packages, sandbox support, certificates, and other Linux dependencies. Your application, test suite, and automation library are layered on top.
The browser package and the automation package are not always the same thing. Microsoft’s Playwright image contains Playwright browser binaries and their system dependencies, but you still install the Playwright package in your project. Puppeteer’s official image contains Chrome for Testing, required dependencies, and a pre-installed Puppeteer version.
Compare the main image families
| Image family | Contents | Best fit | Important constraints |
|---|---|---|---|
| Microsoft Playwright | Playwright browsers and system dependencies | Playwright projects and Chromium, Firefox, and WebKit testing | Pin the image and project to the same Playwright version. Alpine/musl is unsupported for Playwright Firefox and WebKit builds because those builds require glibc. |
| Puppeteer | Chrome for Testing, dependencies, and a pre-installed Puppeteer version | Puppeteer-centric Chrome automation | Sandboxed execution requires the SYS_ADMIN capability. Use an init process such as Docker’s --init option. |
| Browserless single-engine | Chromium, Chrome, Firefox, WebKit, or Edge behind a browser service | Remote sessions when one engine is sufficient | Chrome and Edge images are amd64-only. |
| Browserless multi | Multiple engines exposed on separate service paths | Teams needing several engines from one browser service | On arm64 it includes Chromium, Firefox, and WebKit, but not Chrome or Edge. |
| General Node or Ubuntu base | OS and runtime only | Teams requiring exact control over packages, fonts, layering, or hardening | You must install the browser and every system dependency, then maintain and pin them. |
Choose by workload
Use the official Playwright image for Playwright
This is the least surprising choice when your code imports Playwright or your test matrix includes Chromium, Firefox, and WebKit. The image already carries the browser builds and Linux libraries expected by Playwright. Playwright currently documents Ubuntu 22.04 (Jammy), Ubuntu 24.04 (Noble), and Ubuntu 26.04 (Resolute) image bases.
Recommended Free Tools
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
Keep the Docker image tag and the project’s Playwright dependency on the same version. If they diverge, Playwright may be unable to locate browser executables. A practical pattern is to use one version variable in your Docker build and dependency lockfile, then update both in the same change.
FROM mcr.microsoft.com/playwright:v1.55.0-noble
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
CMD ["npm", "test"]
Replace the illustrative tag with the exact Playwright version your project uses; do not rely on a moving latest tag for reproducible CI.
Use Puppeteer’s image for Puppeteer and Chrome
Puppeteer’s documented family is ghcr.io/puppeteer/puppeteer:latest, or a version tag such as ghcr.io/puppeteer/puppeteer:16.1.0. It includes Chrome for Testing and a matching pre-installed Puppeteer release.
The image runs Chrome in sandbox mode. Grant the container the capability it needs and provide an init process so orphaned browser children are reaped:
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →docker run --init --cap-add=SYS_ADMIN
ghcr.io/puppeteer/puppeteer:16.1.0
node /app/capture.js
Do not add broad privileges merely to make a launch error disappear. If your platform cannot provide SYS_ADMIN, use a browser configuration and image designed for that security model, or move the browser into a separately managed service after reviewing its sandbox guidance.
Use Browserless when the browser should be a service
Browserless publishes ghcr.io/browserless/chromium, chrome, firefox, webkit, edge, and multi. A single-engine image is useful when an application connects over a browser protocol or WebSocket and only one engine is required. The multi image exposes several engines on separate paths for teams that need a shared browser endpoint.
Browserless documents Linux images for amd64 and arm64, with Chrome and Edge available only on amd64. On arm64, the multi image contains Chromium, Firefox, and WebKit, not Chrome or Edge. Confirm the node architecture before deployment:
docker image inspect ghcr.io/browserless/multi
--format '{{.Architecture}}'
A remote-browser design can keep browser processes out of application containers and let several services share a managed pool. It also introduces network latency, endpoint authentication, capacity planning, and WebSocket failure handling that do not exist when the browser runs beside your code.
ARM64, Alpine, and operating-system compatibility
ARM64 is an image-by-image decision
Do not infer ARM64 support from the fact that an image is published to a public registry. Browserless states that its Chrome and Edge images are amd64-only, while its Chromium, Firefox, WebKit, and arm64 multi variants are available for ARM64. Verify the manifest and test the exact image on the same CPU family used in CI or production.
Rank #2
- Fully assembled for plug-and-play operation
- Includes Raspberry Pi 5 with 8GB RAM
- 256 GB PCIe Pi NVMe SSD (Pre-loaded with Pi 64-Bit OS)
- M.2 HAT+
- CanaKit Turbine Black Case for the Pi 5
For a heterogeneous cluster, schedule amd64-only workloads onto amd64 nodes, or select Chromium, Firefox, and WebKit variants that publish arm64 images. A multi-architecture application image does not help if its browser layer lacks a matching browser binary.
Why Alpine can break Playwright coverage
Alpine Linux uses musl libc. Playwright’s Firefox and WebKit builds require glibc, so an Alpine base is not supported for those browsers. If your test plan includes all Playwright engines, use the official Ubuntu-based image or another glibc distribution. Alpine may still be appropriate for a Chromium-only design that you have validated, but it is not a drop-in replacement for the official Playwright environment.
Building from node:bookworm or Ubuntu
A general base is justified when you need a particular OS release, private fonts, security baseline, native libraries, or a carefully minimized application layer. The trade-off is maintenance: browser downloads, shared libraries, font configuration, sandbox behavior, and version compatibility become your responsibility.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- Choose a glibc-based distribution and pin its digest or release.
- Install the browser package or download a pinned browser build.
- Install all shared libraries, font packages, certificates, and locale data required by that browser.
- Install a pinned Playwright or Puppeteer version.
- Run the library’s dependency check and a real navigation during the image build or CI smoke test.
- Record the browser, automation-library, OS, and architecture versions together.
FROM node:bookworm
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends
ca-certificates fonts-liberation
&& rm -rf /var/lib/apt/lists/*
COPY package*.json ./
RUN npm ci
COPY . .
CMD ["node", "capture.js"]
The package list above is only a starting point, not a complete browser dependency set. The exact libraries depend on the browser and automation framework. If you choose this route, use the framework’s documented dependency installer or a vetted internal package rather than guessing from a launch error one library at a time.
Container settings that affect reliability
Shared memory
Chromium can use shared memory heavily. A small Docker /dev/shm mount can cause renderer crashes on pages with large canvases, PDFs, or many tabs. Increase shared memory for the workload, or use the browser’s documented fallback only after understanding its security and performance consequences.
Fonts, certificates, and locales
Missing fonts produce blank glyphs, changed line wrapping, and screenshots that differ from a developer laptop. Install the font families your application supports and keep them stable across CI and production. Ensure CA certificates are present for HTTPS navigation; a browser that works against HTTP can fail TLS verification in a minimal image.
Init and process cleanup
Browser launches create child processes. Run an init process such as Docker’s --init, or use an equivalent PID 1 process in Kubernetes. This prevents zombie processes from accumulating during long test runs.
Sandbox and permissions
Prefer the browser sandbox. For Puppeteer’s official image, sandboxed execution requires SYS_ADMIN. Avoid running as an unrestricted root user or disabling the sandbox simply to bypass a container configuration problem; correct the runtime capability and user setup instead.
Performance, image size, and CI cost
Browser layers are large compared with ordinary Node dependencies. Browserless describes bundling Chromium, Firefox, and WebKit with their dependencies as a multi-gigabyte base, without publishing a reproducible size figure. That qualitative difference still matters: cold pulls consume CI bandwidth, evict registry caches, and lengthen autoscaling.
Rank #3
- Pi5 8GB Pack: RasTech Pi 5 8GB kit includes 1 x Pi5 8GB board ,1 x 64GB Card, 2 x Card Readers,1 x Active Cooler,1 x Case for Pi5, 2 x 4K Micro HD Out Cable,1 x GaN 27W 5A USB-C Power supply,1 x Screwdriver and 1 x instructions.
- Pi5 8GB Board: The Pi5 board is equipped with a 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz and an 800MHz VideoCore VII GPU with support for OpenGL ES 3.1 and Vulkan 1.2, which delivers a significant increase in graphics performance. Dual HD Out 4Kp60 display outputs and a built-in dual 4-channel MIPI camera/display transceiver provide state-of-the-art camera support. The Pi 5 offers a 2-3 times increase in CPU performance compare to Pi4.
- Important Graphics Features: Equipped with an 800MHz VideoCore VII GPU and providing better graphics performance, suitable for multimedia applications,gaming,and graphics intensive tasks.Provides 1 UART interface,1 card slot that supports high-speed operation, 2 USB. 3 0.5 ports that support synchronous 0Gbps operation,2 USB 2.0 port ports,2 4Kp60 display outputs that support HDR.Built-in dedicated dual 4-channel 1Gbps MIPI DSI/CSI connectors,triple the total bandwidth.
- Cooling Kit for Pi 5: Compatible with Active Cooler for Raspberry Pi5, It can provide Pi 5 board with better cooling effect in using. The Case can accurately access usb-c power jack,Micro HD Out ports, usb ports, Ethernet jack, card slot, power button, 4-lane MIPI DSI/CSI connectors and so on, and it also supports installation of cooling fan.
- 64GB Card Kit and GaN 27W USB-C Power Supply: With extra 64GB card to store more files and card readers for multiple medium, keep better performance for Raspberry Pi 5, 27W USB C Power Supply is Compatible with Pi5 8GB, offers a variety of output voltage options, including 5.1V at 5A, 9.0V at 3.0A, 12.0V at 2.25A, and 15.0V at 1.8A, providing for different device requirements.
- Cache the immutable browser layer in your registry and pin tags or digests.
- Separate infrequently changing browser layers from frequently changing application code.
- Use a single-engine image when your tests do not require several engines.
- Warm the image on CI runners or nodes that execute many jobs.
- Measure cold-start and navigation time on your own architecture; no named benchmark establishes a universal winner.
Troubleshooting common failures
“Executable doesn’t exist” or Playwright cannot find a browser
Most often the image and project versions differ, or the browser was never installed in a custom image. Align the Playwright image tag with the locked package version, rebuild without a stale cache, and verify the browser path inside the container.
Firefox or WebKit fails on Alpine
This is the musl/glibc mismatch. Move to an Ubuntu-based Playwright image or another glibc image supported by the browser build.
Chrome exits immediately in Puppeteer
Check that the container has the required SYS_ADMIN capability and an init process. Also inspect shared-memory limits and run the image’s browser as the intended non-root user.
Image pulls on the wrong architecture
Inspect the image manifest and node architecture. For Browserless, select arm64-compatible Chromium, Firefox, WebKit, or multi images; Chrome and Edge require amd64 according to its published guidance.
Navigation hangs or pages render blank
Check outbound DNS and HTTPS access, CA certificates, fonts, proxy settings, and resource limits. Add explicit navigation and browser-launch timeouts, capture browser console output, and reproduce the URL in the same container rather than on the host.
CI becomes slow after an image update
Compare the old and new browser/OS layers, cache hit rate, and architecture. A multi-engine image can add a multi-gigabyte pull even when a test uses only Chromium. Pin the previous known-good version while you investigate, then update deliberately.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →A practical decision checklist
- Playwright plus cross-browser coverage: official Playwright image, matching package and image versions.
- Puppeteer plus Chrome for Testing: official Puppeteer image,
SYS_ADMIN, and an init process. - One remote engine: the corresponding Browserless single-engine image.
- Several remote engines: Browserless multi after checking whether the deployment is amd64 or arm64.
- Unusual OS, fonts, or hardening requirements: build from Node or Ubuntu and own the dependency and patching process.
- Any architecture: verify the image manifest and run a smoke test on the target CPU before rollout.
Or skip the browser setup
If your actual requirement is producing reliable website screenshots rather than maintaining browser containers, ScreenshotNeo provides a website screenshot API and MCP server. A single request returns PNG, JPEG, WebP, or PDF. Before capture it accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled.
Only clean shots are billed. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and each 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.
Example using the documented API format (see 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}`);
Features include full-page captures with lazy images loaded, CSS-selector element shots, dark mode, 12 device presets plus custom viewports, retina scale, PDF paper and page controls, custom CSS and JavaScript, clicks, selector or network-idle waits, ad/tracker/request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, chosen TTL caching, signed image links, asynchronous jobs with signed webhooks, bulk capture for 100 URLs per call, a usage API, and an OpenAPI specification. Parameters used by other screenshot APIs also work, easing migration.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallRank #4
- [ULTIMATE RASPBERRY PI 5 CASE & MINI PC] - Unlock the full potential of your Raspberry Pi 5 with the Pironman 5-MAX — the most advanced Raspberry Pi 5 Case for power users. This high-performance Raspberry Pi 5 Cooling Case features dual NVMe M.2 slots with RAID 0/1 support, AI accelerator compatibility ( e.g. Hailo-8l M.2 AI), a PCIe Gen2 switch, a PWM tower cooler + dual RGB fans and a smart OLED display. With its dual transparent panels and optimized cable management (including full-size HDMI), it’s the ideal Raspberry Pi 5 Enclosure for building a high-speed NAS, AI edge computing device, or Home Assistant hub. (Raspberry Pi NOT Included)
- [DUAL NVMe M.2 SLITS & NAS RAID SUPPORT] - Supercharge your storage with the best Raspberry Pi 5 NVMe Case solution. Featuring two expandable NVMe M.2 slots (2230-2280) powered by a built-in PCIe Gen2 switch, this Raspberry Pi 5 NAS Case supports RAID 0/1 for ultra-fast data setups. Whether you're using a high-speed NVMe SSD or a Hailo-8L AI accelerator, Pironman 5-MAX delivers the ultimate performance boost for advanced Raspberry Pi 5 AI applications and edge computing
- [ADVANCED COOLING SYSTEM] - Engineered for high-performance builds, Pironman 5-MAX features a powerful tower cooler, one PWM fan, and dual RGB fans for enhanced airflow. The dual transparent panel design improves ventilation while showcasing vibrant RGB lighting. Ideal for cooling both the Raspberry Pi 5 and dual NVMe SSDs or AI accelerators like Hailo-8L, it ensures stable operation under heavy workloads with low noise and long-term durability
- [SMART OLED DISPLAY WITH VIBRATION WAKE-UP] - Pironman 5-MAX features a 0.96" OLED screen that delivers real-time system insights including CPU usage, memory, temperature, IP address, and disk status. With customizable display options and auto sleep mode, the screen can be instantly reactivated by a light tap thanks to the built-in vibration sensor—offering a smarter and more interactive experience
- [ENHANCED FUNCTIONALITY] - Pironman 5-MAX empowers your Raspberry Pi 5 with advanced features like safe shutdown via a metal power button, customizable RGB lighting, dual full-size HDMI ports, vibration-triggered OLED wake-up, and an external GPIO extender. It also includes RTC battery support for timekeeping and seamless Home Assistant integration. With detailed guides, online tutorials, and full technical support from SunFounder, setup and use are effortless and worry-free
The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan, and yearly billing provides two months free. Create a free ScreenshotNeo account to try it without a card.
FAQ
Can I use a Playwright image with Puppeteer?
You can, but the image’s browser versions and installed libraries are selected for Playwright. For a Puppeteer workload, the official Puppeteer image gives you a matching Chrome for Testing and Puppeteer installation with fewer compatibility variables.
Should production use a moving latest tag?
No. Pin a version tag, and preferably an image digest, so browser updates occur through a reviewed deployment rather than an unrelated rebuild.
Is a multi-engine image always better?
No. It is useful when several engines are genuinely required, but its multi-gigabyte footprint can increase pulls and cache pressure. A single-engine image is simpler when coverage is narrow.
Frequently Asked Questions
Can I use a Playwright image with Puppeteer?
You can, but the image’s browser versions and installed libraries are selected for Playwright. For a Puppeteer workload, the official Puppeteer image gives you a matching Chrome for Testing and Puppeteer installation with fewer compatibility variables.
Should production use a moving latest tag?
No. Pin a version tag, and preferably an image digest, so browser updates occur through a reviewed deployment rather than an unrelated rebuild.
Is a multi-engine image always better?
No. It is useful when several engines are genuinely required, but its multi-gigabyte footprint can increase pulls and cache pressure. A single-engine image is simpler when coverage is narrow.
The Bottom Line
Match the image to the automation library, pin browser and package versions together, and treat architecture, sandboxing, fonts, shared memory, and image-pull cost as deployment requirements—not afterthoughts.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesQuick Recap
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.




