Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsYou can capture a webpage on an Ubuntu server without a desktop or visible browser window. For a one-off capture, run Chrome with --headless --screenshot; for repeatable workflows that need browser control, use Puppeteer or Playwright. The important details are choosing a viewport, allowing the page enough time to render, installing the browser’s system dependencies, and keeping Chrome’s sandbox enabled.
Capture a screenshot with Chrome’s command line
For a single capture or a simple shell job, Chrome’s headless command-line mode is the shortest route. From a shell on the server, run:
chrome --headless --screenshot --window-size=412,892 https://developer.chrome.com/
Chrome writes screenshot.png to the current working directory. The --window-size=WIDTH,HEIGHT option sets the browser viewport; the example requests a 412-by-892 viewport. Replace the URL with the page you want and use the executable name for the Chrome or Chromium installation on your system.
To control the destination, run the command from the directory where you want the file, then move or rename the result, or use Chrome’s documented screenshot output option if available in the installed version. Check the output path and browser version in your deployment rather than assuming a different working directory in cron, a service, or a container. Chrome’s command-line reference documents the basic command and the current-working-directory default.
#1 Best Overall
- 【AMD Ryzen 7330U】 – The Efficiency-Tuned Powerhouse,AMD Ryzen 7330U (Zen 3, SMT, 4C/8T) in KAMRUI P2 mini PC crushes rivals: Intel i3-10110U (2C/4T, 2019) and N95 (4 efficiency cores, no HT, single-channel memory). Vs predecessor Ryzen 3 4300U (4C/4T): ~50% faster single-core, ~46% multi-core, 8MB L3 cache (vs 4MB). Beats both Intel chips hugely in multi-core, making heavy multitasking, coding, data work smooth at just 15W TDP. High-end power in a cool, efficient box.
- 【AMD Radeon Graphics】– Triple 4K Vision & Fluidity,The integrated Radeon Graphics (based on the modern Vega architecture with 6 CUs) is a visual beast, outclassing the iGPU offerings from both AMD's prior generation and Intel. The Intel UHD Graphics (i3-10110U/N95) struggles with single-channel memory and low execution units, crippling its gaming performance and barely handling basic 4K video without stuttering. While the older Radeon Vega 5 (4300U) was decent, our 7330U's Radeon Graphics (6 CUs) pushes the boundaries, delivering higher graphics clock speeds (up to 1.8GHz) and significantly better rendering capabilities. It can drive triple 4K@60Hz displays with zero lag, edit photos/videos.
- 【Generous Storage & Easy Expansion】The KAMRUI Pinova P2 mini desktop computers comes with 16GB LPDDR4X RAM (higher frequency, lower power) for buttery‑smooth multitasking, and a 256GB M.2 SSD for blazing fast boot‑up, quick file transfers, and no more long loading screens. It also features two storage expansion slots (1x M.2 2280 SATA/NVMe PCIe 3.0 slot + 1x M.2 2280 SATA slot), supporting up to 4TB total (not included). You’ll have all the space you need for projects, media, and important data.
- 【Triple 4K Display Output】The KAMRUI Pinova P2 mini desktop pc is equipped with HDMI 2.0 ×1 + DP 1.4 ×1 + USB 3.2 Gen2 Type‑C ×1 (with DP Alt Mode), enabling simultaneous triple 4K@60Hz output. Whether for home entertainment, remote work, or conference room presentations, it delivers an immersive visual experience. Two USB 3.2 Gen2 Type‑A ports (up to 10Gbps – 21x faster than USB 2.0) make data transfers and device expansion a breeze.
- 【USB 3.2 Gen2 Type‑C: 10Gbps & Versatile Connectivity】The USB 3.2 Gen2 Type‑C port on the KAMRUI P2 small pc supports 10Gbps data transfer speeds and can also output DisplayPort 1.4 video. Together with Gigabit LAN, Wi‑Fi, and Bluetooth, you get a fast, flexible, and productive connected environment – wired or wireless.
What headless means
Headless mode runs the browser without showing its user interface. It does not mean the page is reduced to a text-only fetch: Chrome’s updated Headless mode creates platform windows without displaying them and shares Chrome’s functionality. Chrome 132.0.6793.0 marked an implementation boundary: the old Headless implementation is available as the separate chrome-headless-shell binary, while the updated mode is integrated with Chrome.
That distinction matters when comparing outputs. A framework’s headless shell is not necessarily identical to the current headless mode in branded Chrome or Edge. If screenshots need to match a production browser closely, pin the browser and mode you intend to use, then verify the actual rendered output.
Choose between the CLI, Puppeteer, and Playwright
Use the command line when a shell script needs a screenshot and little interaction. Choose a browser automation library when you need to navigate, wait for a particular element, capture a region, or handle multiple browser steps. Selenium is another reasonable fit for a project already built around WebDriver.
| Route | Best fit | Browser management | Important consideration |
|---|---|---|---|
| Chrome CLI | One-off captures and straightforward shell automation | Uses the browser installed on the server | Limited control compared with a browser automation script |
| Puppeteer | Node.js automation using a Chrome-compatible API | Normal installation downloads Chrome for Testing and a compatible headless-shell binary | Browser downloads and Linux dependencies add deployment work |
| Playwright | Automation using Playwright’s browser and page APIs | Manages its browser builds separately; can install headless shell or regular Chromium | Its default headless shell can differ from newer Chrome or Edge headless mode |
| Selenium WebDriver | Existing Selenium suites and WebDriver-based automation | Depends on the configured browser and driver setup | Chrome’s Headless documentation shows adding --headless to Chrome options |
Choose based on the language already used by the application, how much browser interaction the task needs, who will pin and update browser binaries, and whether branded Chrome or Edge fidelity matters. Chrome, Puppeteer, Playwright, and Selenium documentation can change; check the live project guidance for the exact browser release and operating system you deploy.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Control when the screenshot is taken
A browser can take a screenshot before a page has reached the state you want. Chrome documents --timeout as a maximum wait in milliseconds before capture flags such as --screenshot proceed. It also documents --virtual-time-budget, which advances page code that uses timers. These options help with timing-sensitive pages, but neither proves that every API request, animation, lazy-loaded image, or application state is complete.
Use a timeout only after checking how the target page behaves. A fixed delay can be too short on a slow response and waste time on a fast one. For scripted automation, prefer a meaningful readiness condition—such as waiting for a selector that represents the content to capture—when the site provides one. Validate the condition against the actual page; a navigation event alone may not mean that all client-side content is ready.
Viewport, full-page output, and lazy content
The CLI example sets a viewport, not a guarantee that the entire document appears in a single image. When a workflow needs full-page output, check the capabilities and defaults of the selected automation library and verify how it handles content outside the initial viewport. Lazy-loaded content may not exist until it is scrolled into view. A screenshot process that merely waits at the top of the page can therefore miss images or sections that load on scroll.
Rank #2
- 12th Intel Alder Lake N95 Processor – The GMKtec G3 S Mini PC is powered by the 12th Gen Intel N95 processor with 4 cores, 4 threads, 6MB cache and a burst frequency up to 3.4GHz. Compared with N100/N5105/N5100/N5095, the N95 delivers up to 36% overall performance improvement. Perfect for routine tasks, office work, and home entertainment, this compact mini desktop is more convenient than traditional bulky PCs.
- 8GB RAM & 256GB SSD Storage – Pre-installed with 8GB DDR4 memory and a fast 256GB M.2 2242 SSD, the G3 S mini desktop offers quicker startup, smoother multitasking, and faster file transfers. Enjoy seamless performance whether you’re working on multiple applications, browsing, or streaming content.
- Rich Interfaces & Connectivity – The G3 S mini computer comes equipped with USB 3.2 (up to 10Gbps), dual HDMI 2.0 (4K@60Hz), and a 3.5mm audio jack. With support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet (RJ45 1000MbE), it connects easily with monitors, projectors, printers, office equipment, and other peripherals, making it versatile for both home and business use.
- Dual 4K Display Support – Featuring upgraded Intel UHD Graphics (up to 1000MHz), the G3 S supports 4K video playback and AV1 decoding for a smooth viewing experience. With dual HDMI outputs, you can connect two 4K@60Hz displays simultaneously, enabling efficient multitasking for work and entertainment.
- GMKtec WARRANTY - GMKtec offers a 1-year limited GMKtec's warranty for each mini PC, starting from the date of the purchase. All defects due to design and workmanship are covered. With a professional after sales team always ready to attend to your needs, you can simply relax and enjoy your mini PC.
For stable results, decide whether the target is a viewport screenshot or a full-page capture, use the same viewport in production as in testing, and explicitly trigger or wait for lazy content when necessary. Large pages can take longer to render and produce larger image files.
Recommended Free Tools
Use Puppeteer for a programmable capture
Puppeteer is a Node.js library for controlling a browser. Install it in the project with:
npm i puppeteer
Under the normal installation flow, Puppeteer downloads Chrome for Testing and a compatible chrome-headless-shell binary. The Puppeteer installation guide lists an approximate Linux browser download of about 282 MB; that is a guide’s approximate download figure, not a memory requirement or a guaranteed package size for every version.
Here is a minimal capture script. Save it as screenshot.js and replace the URL as needed:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
try {
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'screenshot.png', fullPage: true });
} finally {
await browser.close();
}
})();
This example requests a 1280-by-800 viewport and a full-page screenshot. The networkidle2 navigation condition is a choice, not a universal definition of readiness: pages with polling, long-lived connections, or delayed rendering may need a selector-based wait or another condition. Conversely, waiting for network idleness can add unnecessary delay when the page continues to make background requests.
The try/finally block ensures the browser is closed if navigation or capture fails. In a long-running service, also handle the error at the job boundary, log the URL and failure context safely, and avoid leaving a browser process open after a failed request.
Check Puppeteer’s runtime requirements
The current Puppeteer system-requirements page specifies Node.js 22.12 or later and lists Debian/Ubuntu on x64 and arm64 as supported Chrome for Testing platforms. Confirm the requirements for the Puppeteer and browser version you install before deploying. If package-manager policy blocks install scripts, Puppeteer’s browser download may be skipped; its installation guide documents this manual browser installation command:
Rank #3
- 【Great power in a small computer】Get fast performance from the Ryzen 5 3501U processor (2.1GHz-3.7GHz, 4 Cores 8 Threads) inside this mini pc, TDP 15W up to 25W. It's perfect for all your home office and business use, like daily computing, web browsing, and smooth media streaming. This small desktop computer handles everyday tasks easily and quietly.
- 【Work on many things at once with lots of storage】This mini PC comes with 16GB of fast DDR4 RAM (expandable up to 32GB), allowing you to smoothly run multiple programs, dozens of browser tabs, and large files all at once. It also features a spacious 512GB SSD that provides ample storage and delivers dramatically faster boot-ups, app launches, and file transfers compared to a traditional hard drive.
- 【See everything clearly on three 4K screens】Connect three monitors for more space to work or play. 1*Type-C 3.2 DP+DATA+PD and 2*HDMI ports on this mini pc support super sharp 4K Ultra HD video. It's great for doubling your work area for business or watching movies in high definition.
- 【Fast modern connections in a tiny box】Enjoy a better and more stable internet connection with the latest WiFi 6. Use Bluetooth 5.3 to connect wireless headphones, keyboards, and mice without wires. This small pc is very compact to save desk space and has extra USB ports (2*USB3.2, 2*USB 2.0, 1*Type-C 3.2 DP+DATA+PD, 1*Type-C 2.0, 2*HDMI 4K60Hz) for your printer, webcam, or other computer accessories.
- 【Ready to use, saves space, and runs quiet】This mini desktop computer comes with the OS 11 Pro operating system pre-installed, so you can set it up and start using it immediately. Its compact, small form factor not only saves valuable desk space but also operates very quietly, ensuring it won't distract you whether you're working, studying, or streaming media.
npx puppeteer browsers install
Use Playwright when it fits the project
Playwright manages its browser builds separately from the system Chrome installation. Its documented install command for a headless-shell-only setup is:
npx playwright install --with-deps --only-shell
To install regular Chromium without the shell, Playwright documents:
npx playwright install --with-deps --no-shell
A compact Node.js capture using Playwright looks like this:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
try {
const page = await browser.newPage({ viewport: { width: 1280, height: 800 } });
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'screenshot.png', fullPage: true });
} finally {
await browser.close();
}
})();
Playwright also documents using branded Google Chrome and Microsoft Edge channels; those browsers are not installed by default. Its newer Chrome/Edge headless mode differs from the Chromium headless shell Playwright uses by default. If visual fidelity to a particular browser matters, select the intended browser channel and headless mode, then compare real captures rather than assuming the modes are interchangeable.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Install and diagnose Ubuntu browser dependencies
A browser binary can exist and still fail to launch if Ubuntu lacks one of its shared libraries or other system dependencies. Puppeteer’s troubleshooting guidance lists common Debian/Ubuntu requirements such as certificates and Liberation fonts, plus audio, accessibility, GTK, NSS, Pango, X11, and supporting libraries. The exact package set can change with browser packaging and Ubuntu releases, so use the current requirements for the browser build you actually deploy instead of copying a package list blindly.
For a missing shared library, Puppeteer suggests checking the browser binary with:
Free tools Windows power users keep installed
One-click scans. No signup required.
ldd chrome | grep not
Use the actual Chrome executable path in place of chrome if it is not in the current directory or on the shell’s path. A mismatch between the executable you inspected, the browser version your library expects, and the installed dependencies can mislead diagnosis; verify all three before changing host security settings.
Rank #4
- 【Ryzen 5 3500U Processor】Equipped with Ryzen 5 3500U 4-core 8-thread processor with a max boost of 3.7GHz and integrated Radeon Vega 8 graphics, this ORIGIMAGIC mini PC delivers stable and responsive computing power. Perfectly handles daily office work, 4K video playback, casual gaming and light multimedia creation.Advanced features like Auto Power On, RTC Wake, and Wake-on-LAN make it ideal for business, kiosks, digital signage, and remote management
- 【8GB DDR4 & 256B SSD & Expandable】The Mini computer is equipped with 8GB DDR4 2400MT/s SO-DIMM memory, dual SO-DIMM slots expandable up to 32GB. Pre-installed 256GB M.2 2280 PCIe3.0 NVMe SSD; extra M.2 2280 PCIe3.0 ×1 slot reserved for storage expansion. Whether for daily office work, entertainment, or creation, the Mini PC can deliver excellent performance and ample storage.
- 【4K@60Hz Triple Display & Full-Featured Ports】Featuring HDMI 2.0, DP and USB-C interfaces, this mini computer supports simultaneous output of three 4K@60Hz monitors. It greatly improves multi-window work efficiency and brings immersive visual enjoyment for movies and games. Rich USB 3.2 high-speed ports and 3.5mm audio jack fully meet your daily peripheral connection and high-speed transmission needs.
- 【Dual Gigabit LAN, WiFi 5 & Bluetooth 5.0】This mini PC is equipped with dual RJ45 gigabit Ethernet ports, dual-band WiFi 5 and Bluetooth 5.0. It provides ultra-stable network transmission for 4K streaming, online meetings and large file transfers. The stable wireless connection supports fast pairing with Bluetooth keyboards, headsets and speakers, and it can also be used as a soft router and home server for diverse usage scenarios.
- 【Multiple interface configurations】This computer provides a rich interface configuration to meet the connection needs of multiple scenarios, 2×USB3.2 Gen2 10Gbps, 1×USB3.2 Gen1, 1×USB2.0, 3.5mm TRRS audio jack. Dual RTL8111H Gigabit Ethernet RJ45 ports, ideal for soft routing, network monitoring, office and home network setup. Comes with clear CMOS reset hole and LED power button for convenient operation.
Keep Chrome’s sandbox enabled
Do not treat --no-sandbox as a routine fix for public URLs. Puppeteer recommends running Chrome with sandboxing and strongly discourages running without it. Its documentation describes --no-sandbox only for cases where the content is absolutely trusted. A public webpage is not content you should casually assume to be trusted.
On Ubuntu 23.10 and later, Puppeteer’s troubleshooting guide reports that an AppArmor profile for Chrome stable binaries under /opt/google/chrome/chrome may prevent Puppeteer-downloaded Chrome for Testing binaries from using user namespaces. One symptom can be No usable sandbox!. Check the installed browser path, host policy, and current upstream guidance for the specific environment. Do not disable security controls without understanding the actual cause and the security implications.
Troubleshoot common capture failures
| Symptom | Likely cause | What to check or do |
|---|---|---|
chrome: command not found |
Chrome is not installed under that executable name, or is not on the shell’s PATH. |
Find the installed browser path, use its executable name, and ensure the service or scheduled job has the expected PATH. |
| Browser launch reports a missing shared library | An Ubuntu dependency required by the browser is absent. | Run ldd against the actual browser binary and consult current Puppeteer/browser requirements for the installed Ubuntu release. |
No usable sandbox! |
Sandboxing could not be initialized; host policy or browser packaging may be involved. | Verify the browser path and host policy, including the documented Ubuntu 23.10+ AppArmor scenario, then follow current upstream guidance. Keep sandboxing enabled while diagnosing. |
| Puppeteer launches but no compatible browser is found | The install script may have been blocked, so the expected browser download did not occur. | Check the Puppeteer installation output and run npx puppeteer browsers install if appropriate for the project. |
| Screenshot is blank or missing late content | Capture happened before the page rendered the desired state, or lazy content was never triggered. | Inspect the target page’s readiness behavior; use a suitable timeout, selector wait, or scroll strategy and verify the resulting image. |
| Image is cropped or has unexpected dimensions | The viewport and full-page behavior do not match the intended output. | Set the viewport explicitly and check whether the chosen API captures the viewport or the full document. |
| Different output between local and server captures | Browser builds, headless modes, fonts, dependencies, viewport, or page state differ. | Pin the browser and library versions, align viewport and environment, and test the exact deployed mode. |
Make server captures more reliable and affordable to operate
For a single screenshot, the CLI avoids writing application code. For recurring jobs, browser startup, browser downloads, Linux dependencies, and browser-version maintenance become part of the service’s operating cost. Reuse browser processes where appropriate in a controlled worker rather than launching an unbounded number of instances, and limit concurrent jobs to what the server can support. The article establishes no universal memory or throughput figure: actual capacity depends on the pages, browser build, server, and concurrency.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →For dependable jobs, record the URL, browser/library version, viewport, capture timestamp, and whether the output was created. Set explicit timeouts, handle navigation and screenshot errors, close browser resources in a cleanup path, and validate a sample of outputs after browser upgrades. If captures are user-triggered, constrain concurrency and consider how untrusted pages are isolated; a screenshot process executes page scripts and should not be treated as a harmless static file fetch.
Or skip the browser setup
If maintaining Chrome binaries and Ubuntu dependencies is the part you want to avoid, ScreenshotNeo is a website screenshot API and MCP server for developers. One GET request can return a screenshot or PDF. Its capture flow accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each of those steps can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in X-Page-Verdict and X-Billed headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
Example cURL request:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo documentation for API setup. The service also has Python and Node.js examples, custom viewports and device presets, full-page and element captures, PDF settings, custom CSS and JavaScript, wait conditions, request blocking, custom headers and cookies, caching, asynchronous jobs, webhooks, and bulk captures. Free includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is available on every plan. An MCP server lets AI agents take screenshots without maintaining your own browser setup.
Sign up free for 1,000 screenshots a month with no card.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Frequently Asked Questions
Does headless Chrome need an X server on Ubuntu?
No visible desktop or browser UI is required for Chrome’s updated Headless mode.
What is the simplest way to set the screenshot viewport?
For Chrome’s CLI, use --window-size=WIDTH,HEIGHT, such as --window-size=412,892.
Can I safely use --no-sandbox to fix a launch error?
Puppeteer strongly discourages it; diagnose the browser, dependencies, and host policy while keeping sandboxing enabled.
Quick 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.




