What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Use Playwright for Python. It launches a real browser engine, renders JavaScript, and saves a viewport, full-page, or element screenshot without Selenium. Playwright supports Chromium, Firefox, and WebKit, and runs headless by default. The same API can return image bytes instead of writing a file.
What you need
- Python 3 and a virtual environment for your project.
- The Playwright Python package.
- At least one Playwright browser binary (Chromium, Firefox, or WebKit).
- A URL that the browser runtime can reach.
Browser screenshots are different from downloading HTML with requests. An HTTP client receives markup and resources; it does not reproduce browser layout, JavaScript, fonts, responsive CSS, or user interactions. A headless browser is required when the image must represent what a visitor sees.
Install Playwright and its browser
Install Playwright in your project environment, then install the browser engine you intend to use. The exact installation command and browser-download options can change, so use the current commands in the official Playwright Python documentation for your operating system. After installation, verify that a minimal script can import sync_playwright and launch a browser.
Playwright offers both synchronous and asynchronous Python APIs. Synchronous code is easiest for a one-off command-line script; asynchronous code fits an existing asyncio service or a worker that captures many pages concurrently.
#1 Best Overall
- FULL HD IPS DISPLAY - Enjoy vibrant, crystal-clear images with 178-degree wide-viewing angles
- AMD RYZEN 3 30 PROCESSOR - Everyday performance you can count on; Multitask, stream, game casually, and edit photos smoothly with responsive power and vibrant HDR visuals
- ENJOY UP TO 14 HOURS AND 15 MINUTES OF BATTERY LIFE - HP Fast Charge restores battery from 0 to 50% in approximately 45 minutes
- AMD RADEON 610M GRAPHICS - Experience smooth entertainment; Built for streaming and multitasking, enjoy realistic visuals and efficient performance for work and play
- STORAGE AND MEMORY - 512 GB PCIe NVMe M.2 SSD offers fast speed and efficient storage; and 8 GB LPDDR5 RAM memory boosts performance with higher bandwidth
Minimal synchronous screenshot script
This script opens a URL, waits for navigation, writes a PNG, and closes the browser even when the capture raises an exception.
from playwright.sync_api import sync_playwright
TARGET = "https://example.com"
with sync_playwright() as playwright:
browser = playwright.chromium.launch()
page = browser.new_page()
try:
page.goto(TARGET, wait_until="load")
page.screenshot(path="screenshot.png")
finally:
browser.close()
page.goto() returns after the selected navigation condition. load means the page load event fired; it does not guarantee that a single-page application has finished rendering data. For pages that continue making requests, wait for a known selector or an application-specific state before taking the image.
Choose what to capture
Current viewport
The default screenshot is the visible viewport:
page.screenshot(path="viewport.png")
Set the viewport when reproducibility matters. A fixed viewport also makes responsive layouts deterministic.
Recommended Free Tools
page.set_viewport_size({"width": 1440, "height": 900})
page.screenshot(path="desktop.png")
Full scrollable page
Use full_page=True to produce one tall image covering the page’s scrollable height:
page.screenshot(path="full-page.png", full_page=True)
Very long pages can create large image files and consume substantial memory. For reports or print-ready output, PDF capture or a series of viewport images may be more practical.
One element
Capture a matching element through a locator. Playwright waits for the locator to resolve and then clips the image to that element:
page.locator(".header").screenshot(path="header.png")
Prefer stable attributes such as data-testid over a CSS class that is likely to change with a redesign.
Rank #2
- Intel Celeron N4120: 4 Cores & Threads, 1.1GHz Base Clock, Up to 2.6GHz Boost Clock, 4MB Cache, Intel UHD Graphics 600. The perfect combination of performance, power consumption, and value helps your device handle multitasking smoothly and reliably with four processing cores to divide up the work.
- 14" HD Display: 14.0-inch diagonal, HD (1366 x 768), micro-edge, anti-glare. See your digital world in a whole new way. Enjoy movies and photos with the great image quality and high-definition detail of 1 million pixels.
- Memory & Storage: 4 GB LPDDR4x & 64 GB eMMC Storage. Adequate high-bandwidth RAM to smoothly run multiple applications and browser tabs all at once. An embedded multimedia card provides reliable flash-based storage.
- Ports:2 x USB 3.0 Type-A,1 x USB 3.0 Type-C,1 x HDMI,1 x Headphone Jack
- Chrome OS: Chromebook is a computer for the way the modern world works, with thousands of apps. Enjoy the seamless simplicity that comes with Google Chrome and Android apps, all integrated into one laptop. It’s fast, simple, and secure.
Keep the image in memory
Omit path to receive screenshot bytes. This is useful when an API response, object store, or image-processing pipeline is the destination.
image_bytes = page.screenshot(type="png")
with open("screenshot.png", "wb") as output:
output.write(image_bytes)
PNG, JPEG, WebP, and transparency
PNG is the default and preserves sharp text. JPEG is smaller for photographic pages but is lossy; specify a quality value when appropriate. WebP is available where supported by the installed Playwright version and browser. The screenshot API also exposes controls for animation handling, masking selected locators, and omitting the background for transparency. These are options, not defaults, so set them explicitly when a transparent or privacy-filtered image is required.
page.screenshot(
path="masked.jpg",
type="jpeg",
quality=85,
mask=[page.locator(".account-number")],
)
Check the current API reference for the exact option names and supported combinations in your installed version.
Wait for the page you actually want
Wait for a selector
For client-rendered content, wait for a meaningful element rather than adding an arbitrary delay:
page.goto("https://example.com/dashboard", wait_until="domcontentloaded")
page.locator("[data-testid='dashboard-ready']").wait_for(state="visible")
page.screenshot(path="dashboard.png", full_page=True)
Wait for a known delay
A short timeout can help with a predictable animation or delayed widget, but it is less reliable than waiting for a state:
page.wait_for_timeout(1500)
Do not use a long fixed delay as a substitute for diagnosing a page that never reaches its ready state.
Control motion and dynamic content
Animated elements can produce different pixels on every run. Disable or override animation with a style injection, or use Playwright’s animation-related screenshot options where available. Hide blinking cursors, rotating carousels, timestamps, and other intentionally changing regions before capture when visual comparisons must be stable.
Rank #3
- Stunning 15.6" FHD IPS Display: Experience crisp 1920x1080 resolution on this 15.6 inch laptop with an IPS panel that delivers wide viewing angles and vivid colors. The narrow-bezel design maximizes screen real estate for comfortable viewing on this Win 11 laptop, whether you're studying or working.
- Celeron J4105 Processor & 256GB SSD: Powered by a reliable Celeron J4105 processor paired with 12GB DDR4 memory and a fast 256GB M.2 SSD. This laptop computer supports SSD expansion up to 2TB and TF card expansion up to 1TB, so your storage grows with your needs. Delivers smooth multitasking for daily productivity.
- AI-Powered Win 11 Laptop: Built-in AI features enhance your productivity with smart assistance for writing, summarizing, and task management. Pre-installed with Win 11 and includes Office 365 subscription. This student laptop is backed by 1-year warranty and 24/7 customer support.
- All-Day 7000mAh Battery & 180° Hinge: The high-capacity 7000mAh battery keeps this laptop powered through long classes or meetings. The 180-degree lay-flat hinge lets you share your screen effortlessly during presentations. This durable laptop computer adapts to your dynamic workflow.
- Versatile Connectivity Hub: Equipped with USB 3.2, Type-C, Mini HDMI, and 3.5mm audio jack to connect all your peripherals. Stay online anywhere with high-speed 5G WiFi and Bluetooth 4.2. This college laptop keeps you connected at home, in the library, or on the go.
Set browser, device, and rendering conditions
Playwright’s Python library can launch Chromium, Firefox, and WebKit. Chromium is a sensible default for a general web capture, while Firefox or WebKit can reveal engine-specific layout differences. The browser is headless by default; pass headless=False to watch the page while debugging.
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 glitcheswith sync_playwright() as playwright:
browser = playwright.firefox.launch(headless=False)
page = browser.new_page(viewport={"width": 1280, "height": 800})
page.goto("https://example.com")
page.screenshot(path="firefox-view.png")
browser.close()
For high-density output, create the context with a device scale factor. A larger scale produces more pixels and larger files, so use it deliberately:
context = browser.new_context(
viewport={"width": 1280, "height": 800},
device_scale_factor=2,
)
page = context.new_page()
When a site serves different content by locale, timezone, or permissions, configure those context settings and record them alongside the image. Otherwise two captures of the same URL may legitimately differ.
Asynchronous version
Use the async API when your application already runs an event loop or needs to coordinate multiple captures.
import asyncio
from playwright.async_api import async_playwright
async def capture():
async with async_playwright() as playwright:
browser = await playwright.chromium.launch()
page = await browser.new_page()
try:
await page.goto("https://example.com", wait_until="load")
await page.screenshot(path="async.png", full_page=True)
finally:
await browser.close()
asyncio.run(capture())
Limit concurrency to what your CPU, memory, and target site can handle. A separate browser context is usually cheaper than a separate browser process when captures can share one launched browser safely.
Authentication, cookies, and interaction
Private pages require the same state as a normal browser session. You can create a context with headers or cookies, or perform a login flow before navigating to the target page. Keep credentials out of source code and logs. If the page needs a click to reveal content, locate the control, click it, then wait for the revealed selector:
page.goto("https://example.com/pricing")
page.get_by_role("button", name="Show details").click()
page.locator("#details").wait_for(state="visible")
page.screenshot(path="details.png")
Respect the site’s access rules and avoid automating accounts or data you are not authorized to use.
Rank #4
- Efficient Performance for Everyday Computing: Powered by Intel N150 processor with up to 3.6 GHz Intel Turbo Boost Technology, 6 MB L3 cache, 4 cores, and 4 threads, this HP laptop delivers responsive performance for web browsing, streaming, document editing, and multitasking. Paired with 4GB LPDDR5 RAM and 128GB UFS storage, it handles daily tasks smoothly. Includes 1-year Microsoft 365 Personal subscription for Word, Excel, PowerPoint, and cloud storage to maximize your productivity.
- 14-Inch HD Micro-Edge Display:Enjoy clear visuals on the 14-inch HD (1366 x 768) anti-glare screen with 250-nit brightness and 62.5% sRGB coverage. The micro-edge bezel delivers a 79% screen-to-body ratio in a compact design. An HP True Vision 720p HD camera with noise reduction and dual-array microphones supports clear video calls, remote work, and online learning.
- Modern Connectivity and Wireless Technology: Stay connected with Wi-Fi 6 (2x2) for faster wireless speeds and Bluetooth 5.4 for seamless pairing with accessories. Versatile port selection includes 1 USB Type-C 10Gbps with DisplayPort 1.2 for external displays, 2 USB Type-A 5Gbps ports for peripherals, 1 HDMI 1.4b port, 1 headphone/microphone combo jack, and 1 multi-format SD media card reader. Connect monitors, transfer files quickly, and expand your workspace with ease.
- All-Day Battery Life and Portable Design: Enjoy up to 11 hours of video playback, 7.5 hours of mixed usage, or 7.5 hours of wireless streaming on a single charge, perfect for students and professionals on the go. Weighing just 3.24 lb and measuring 12.76" x 8.86" x 0.71", this lightweight laptop fits easily in backpacks and bags. The stylish willow green top cover with matte finish and natural silver keyboard deck with vertical brushing pattern offer a modern, professional look.
- AI-Enhanced Productivity: Access Microsoft Copilot instantly with the dedicated Copilot key for faster assistance. AI Noise Reduction filters background sounds and improves voice clarity during calls. Dual speakers provide clear audio, while the full-size natural silver keyboard and HP Imagepad support comfortable typing and navigation.
Common failures and fixes
Browser executable is missing
Symptom: Playwright imports successfully but launch reports that an executable is unavailable. Fix: install the browser binary for the Playwright package and ensure the runtime user can read it. Containers often need additional system dependencies.
page.goto() times out
Causes: the host is unreachable, navigation is blocked, a request never finishes, or the timeout is too short. Check the URL from the same machine, inspect network and console errors, and choose a deliberate timeout. Do not hide a broken page by blindly increasing the timeout.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Screenshot is blank or incomplete
Causes: capture occurred before client rendering, the page requires scrolling to trigger lazy loading, or a consent dialog covers the content. Wait for a stable selector, scroll or interact as the page expects, and handle the dialog before capture. For an element screenshot, verify that the locator matches the intended element and is visible.
Fonts or layout differ between machines
Rendering depends on browser version, installed fonts, operating-system libraries, viewport, device scale factor, and locale. Pin your environment where pixel-level consistency matters and use the same engine for comparisons.
Only part of a long page appears
Use full_page=True on the page screenshot, not only a viewport clip. Some pages virtualize content or load it on scroll; in that case, trigger the required scrolling and wait for content before capture.
Cookies or login state disappear
Each new context starts isolated. Reuse the context for related captures, provide cookies or headers when creating it, or save and load authenticated storage state using Playwright’s documented storage-state workflow. Never publish that state file.
Free tools Windows power users keep installed
One-click scans. No signup required.
Performance, reliability, and cost considerations
- Startup: launching a browser is heavier than making an HTTP request. Keep one browser process alive for a batch and create separate contexts where isolation is needed.
- Memory: full-page images, high device scale factors, and many simultaneous pages increase memory use. Bound concurrency and close pages and contexts promptly.
- Determinism: wait for application state, freeze or hide animations, set viewport and locale, and use a consistent browser build.
- Retries: retry transient network failures with a limit, but record the original error. Repeated retries will not fix a selector that never exists or a page that blocks automation.
- Operations: log URL, engine, viewport, timing, and failure reason without logging secrets. Store the image atomically so downstream jobs never read a partial file.
Pyppeteer: a narrower alternative
Pyppeteer’s documentation describes it as an “Unofficial python port of puppeteer (headless) chrome/chromium browser automation library.” Its reference documents PNG and JPEG output, JPEG quality, full-page capture, clipping, and transparent backgrounds. The cited documentation is for version 0.0.25 and is old, so treat Pyppeteer as a compatibility option for a setup that specifically requires its Puppeteer-style interface, not as a claim about current maintenance or support. Playwright is the better-supported default for new Python screenshot scripts because its current official documentation covers the complete browser-launch and screenshot flow.
Best Value
- Portable Lightweight Design: Weighing just 3.6 lbs, the Laptop S7HI is portable, making it perfect for travel, work, and school. Its slim profile and 15-inch HD IPS display offer a great balance of size and portability for everyday use
- Powerful Processor: With a base frequency 1.9GHz Intel 5205U processor, this laptop handles multiple tasks efficiently. Whether you're working, studying, or streaming, enjoy a smooth experience with reliable performance
- Ample Storage with Expansion: 128GB of internal storage with an extra 512GB expansion slot offers plenty of room for your documents, photos, and videos. Ideal for students and professionals needing more space for files and projects
- Pre‑Installed Windows 11: Ready to Use Comes with a genuine Windows 11 system pre‑loaded, offering a clean, intuitive interface and broad software compatibility. Open the box, power on, and you're all set for school assignments, business reports, or daily computing needs.
- Comprehensive Connectivity Options: Equipped with Type-C, HDMI, SD Card Reader, and more, this laptop offers flexible connectivity. Stay connected via dual-band WiFi and Bluetooth 4.2, ensuring fast internet access and peripheral support
Or skip the browser setup
If you need repeatable captures from a service instead of managing browser binaries, ScreenshotNeo provides a website screenshot API and MCP server. One GET 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 turned off. 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.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for options and response details. The same service supports full-page and element capture, device presets and custom viewports, retina scale, PDFs, custom CSS and JavaScript, clicks, selector or network-idle waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, TTL-based caching, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.
ScreenshotNeo has a free plan with 1,000 shots per month and no card. Paid plans start at $5 for 3,000 shots; yearly billing gives two months free, and every feature is included on every plan. Create a free ScreenshotNeo account to start.
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 →Python API call to ScreenshotNeo
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
For a Node.js caller, use:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Use the Python or Node.js request when your application does not need to own a browser process, and retain Playwright when you need in-process interaction, custom debugging, or complete control of the browser context.
FAQ
Can I take a screenshot with Python’s standard library alone?
Not of a browser-rendered page. The standard library can fetch data and manipulate files, but it does not provide a browser layout engine. Use Playwright, another browser automation library, or a hosted rendering API.
Does headless mean the screenshot is lower quality?
No. Headless describes the absence of a visible browser window. Pixel output still depends on the selected engine, viewport, scale factor, fonts, and page state.
Should I choose PNG or JPEG?
Choose PNG for text, interfaces, and lossless output. Choose JPEG when photographic content and smaller files matter, and set quality explicitly.
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 minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Frequently Asked Questions
Can I take a screenshot with Python’s standard library alone?
Not of a browser-rendered page. Use Playwright, another browser automation library, or a hosted rendering API.
Does headless mean the screenshot is lower quality?
No. Headless only means no visible browser window; output depends on engine, viewport, scale, fonts, and page state.
Should I choose PNG or JPEG?
PNG suits text and interfaces; JPEG suits photographic pages when a smaller lossy file is acceptable.
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.

