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.
For a precise screenshot of a rendered web page, use browser automation such as Playwright or Puppeteer. Set the viewport and pixel scale deliberately, wait for the content that matters, then capture either the viewport, a specific element, a clipped region, or the full page. Use the browser’s Screen Capture API only when a person must choose a screen, window, or tab to share.
This guide shows how to capture repeatable screenshots with JavaScript, choose the right capture scope, stabilize dynamic pages, and diagnose common problems. Exact API behavior can change between framework versions, so check the documentation for the version installed in your project.
Choose the right JavaScript screenshot method
For unattended screenshots of a website, use a browser automation framework. Playwright and Puppeteer render the page in a real browser and expose APIs to save screenshot files or return image data. Use the framework already in your project unless you need an option it does not provide.
- Playwright: a good fit when you want page, locator, and full-page capture along with screenshot assertion controls for repeatability.
- Puppeteer: a good fit when your project already uses Puppeteer or needs its documented screenshot controls such as clipping, output format, quality, and transparent background.
- Screen Capture API: use
getDisplayMedia()when a person needs to select a display surface. It requires user interaction and is not a substitute for an unattended page screenshot. See MDN’s getDisplayMedia() documentation.
Neither framework is established as faster by the documentation cited here. Base the choice on your existing dependencies, capture targets, output controls, and repeatability needs.
#1 Best Overall
- CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
- WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
- A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents
Install and capture with Playwright
Install Playwright in your JavaScript project if it is not already present. The example below uses its Chromium browser, sets the viewport before navigation, waits for an application-specific element, and captures the whole page. It is an API example, not a tested result; change the readiness selector to match the page you are capturing.
npm install playwright
import { chromium } from 'playwright';
const browser = await chromium.launch();
try {
const page = await browser.newPage({
viewport: { width: 1440, height: 1000 },
deviceScaleFactor: 1,
});
await page.goto('https://example.com');
await page.locator('main').waitFor();
await page.screenshot({
path: 'page.png',
fullPage: true,
scale: 'css',
});
} finally {
await browser.close();
}
Playwright’s screenshot guide describes a full-page capture as an image of the full scrollable page, as if it fit on a very tall screen. See Playwright’s Screenshots guide and its screenshot tool documentation. Use the documentation matching your installed version; the “next” guide may describe documentation for a development version.
Capture the viewport, one element, or the full page
- Viewport: omit
fullPageor set it tofalseto capture the currently visible viewport. - One element: take a locator screenshot, for example
await page.locator('.product-card').screenshot({ path: 'card.png' });. Wait for the target and ensure it is visible before capture. A locator screenshot targets that element, not the full scrollable page. - Full page: set
fullPage: true. Playwright documents that full-page capture cannot be combined with a target element. For a component, use a locator screenshot instead. - Defined region: if you need a rectangular area rather than an element, use the relevant clipping option supported by the framework and version in your project. Puppeteer documents a
cliprectangle.
Set output scale and viewport intentionally
The viewport controls the browser’s CSS layout width and height. A desktop viewport can produce a different responsive layout from a phone-sized viewport, so set it to match the scenario you need to record. In Playwright, scale: 'css' produces output at CSS-pixel scale; scale: 'device' uses device-pixel scale. Device-pixel output can be larger. Choose based on whether layout-sized images or higher-density output is required.
Rank #2
- CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
- SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
Playwright’s browser context also accepts a deviceScaleFactor. Treat it separately from viewport dimensions: the viewport affects responsive layout, while scale and device pixel ratio affect pixel density. Confirm the combination against the installed Playwright version and your target image dimensions.
Capture an element or region with Puppeteer
Puppeteer exposes page.screenshot() and supports settings including fullPage, clip, omitBackground, type, quality, and path. Here is a complete ESM example that saves a full-page PNG after the target content appears:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 1000 });
await page.goto('https://example.com');
await page.waitForSelector('main');
await page.screenshot({
path: 'page.png',
fullPage: true,
type: 'png',
});
} finally {
await browser.close();
}
For an element, select it and use the element’s screenshot method where available in your installed Puppeteer version. For a rectangular crop, provide a clip rectangle with the required coordinates and dimensions rather than capturing the entire page. Consult the Puppeteer ScreenshotOptions interface and Page.screenshot() API for option types and version-specific details.
Rank #3
- Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
- Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
- Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
- In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
- Ultra-thin bezels: Maximize your viewing experience with thin bezels.
Use omitBackground when a transparent background is appropriate, and select type and (where supported) quality to control output format and compression. Quality applies to formats that support it; it does not turn a PNG into a lossy image.
Make captures stable and accurate
A screenshot is only as useful as the page state it records. Waiting for a navigation event alone does not prove that the particular image, font, animation, or application update you care about has finished. Use a condition tied to the content or state you need.
- Navigate to the intended URL. Specify the exact route and any required query parameters.
- Wait for the meaningful state. Wait for a known selector, application-ready indicator, or other page-specific condition. Replace generic selectors such as
mainwith a marker that actually signals the content is ready. - Control changing visuals. Playwright screenshot assertions document controls for disabling animations, hiding the caret, masking elements, and applying a stylesheet. Use these when timestamps, blinking cursors, transitions, or changing regions make captures inconsistent. See Playwright PageAssertions.
- Capture only after the state is correct. Choose viewport, element, clip, or full-page capture after the target content is present.
Do not treat a generic network-idle wait as a guarantee that every image, font, animation, or app update has completed. Pages may continue making requests, or may render important content after requests stop. A page-specific wait is usually a clearer readiness condition.
Rank #4
- CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
- SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
- MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
- KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
- INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient
Choose image dimensions and formats carefully
Large or full-page screenshots can consume substantial memory and produce large files. Estimate the output dimensions before choosing a high-density scale: page height multiplied by output pixel density can make the resulting image much larger than the visible viewport.
If you draw a screenshot into a canvas or use canvas as part of an image-processing workflow, do not assume the canvas can hold an arbitrarily tall image. Browser and device limits vary. MDN reports a 4096 × 4096 pixel canvas limit on iOS devices in its canvas documentation, published in 2025; that is a platform-specific limit, not a universal ceiling for all browsers. See MDN’s canvas documentation. For tall captures, prefer the automation framework’s screenshot mechanism and test the required dimensions on the actual target devices. If a single image is not practical, capture defined sections and assemble them only if your workflow can preserve alignment and avoid duplicated or missing content.
Recommended Free Tools
Use PNG when preserving sharp text and lossless detail matters. JPEG or WebP may be preferable when file size matters and lossy compression is acceptable. The available output choices and defaults depend on the framework and version; specify the format when downstream systems depend on it.
Best Value
- 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
- 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
- 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.
Performance, reliability, and cost considerations
- Reuse a browser process for batches. Launching a browser for every screenshot adds setup work. For multiple pages in one job, keep the browser open while creating pages or contexts as appropriate, then close it reliably.
- Bound waits. Use explicit timeouts and page-specific readiness signals so a broken or slow page does not stall a batch indefinitely. Record failures with the URL and failed readiness condition.
- Limit output size. Capture the smallest scope and pixel density that satisfies the use case. Full-page and high-density output can increase memory use and storage or transfer costs.
- Plan for page variability. Third-party content, consent prompts, responsive breakpoints, and changing data can make two captures differ. Control or document those inputs when consistency matters.
- Do not infer a performance winner. The cited framework documentation describes API capabilities, not a comparative benchmark.
For production use, handle browser launch errors, navigation failures, missing selectors, and screenshot write failures separately. Close browser resources in a finally block, as in the examples, so an exception does not leave a process running.
Troubleshoot common screenshot problems
- The page is blank or missing content: the page may not have reached the state your script assumes. Wait for a page-specific element or state, and verify the URL and navigation outcome before capturing.
- An element screenshot fails: the selector may match nothing, or the element may not be visible. Check the selector against the rendered page and wait for that element before taking the screenshot.
- The full-page image cuts off or is unexpectedly large: confirm you selected full-page rather than viewport capture, and check the page dimensions and output scale. Extremely tall image workflows may encounter device or browser limits, especially if they rely on canvas.
- The screenshot differs between runs: dynamic content, animation, blinking carets, or changing elements may be responsible. Use documented repeatability controls such as animation disabling, masking, and injected styles where appropriate.
- The responsive layout is wrong: set the viewport to the intended CSS dimensions before navigation or layout-dependent checks. Do not confuse viewport width with output pixel density.
- The output format or transparency is wrong: set the format and background options explicitly, then check which formats support the quality setting in your framework version.
getDisplayMedia()does not run unattended: it requires user interaction to choose a display surface. Use Playwright or Puppeteer for automated page capture instead.
Or skip the browser setup
If you need a screenshot endpoint rather than managing a browser, ScreenshotNeo is a website screenshot API and MCP server for developers. Its one-call API accepts a URL and returns an image or PDF. For example, save a WebP capture with cURL:
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 API documentation for request parameters and output options. The same endpoint can be called from Python:
Free tools Windows power users keep installed
One-click scans. No signup required.
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
Or from Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);
In Node.js environments without Bun, write the response body using that runtime’s file APIs. ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, and failed loads are never billed; and an MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots per month with no card, and paid plans start at $5 for 3,000. Sign up for the free plan.
Frequently Asked Questions
Can JavaScript screenshot a web page without opening a browser window?
Yes. Playwright and Puppeteer can run browser automation without displaying a browser window to the user; the exact launch configuration depends on the project and browser environment.
Can I capture only part of a page?
Yes. Use an element-targeted screenshot for a component or a clipping rectangle for a defined region. Full-page capture is a separate scope and cannot be combined with Playwright’s element target.
Does a full-page screenshot always include content that loads later?
No. Capture only after the particular content you need has reached its ready state; a generic network-idle condition is not a guarantee that all visual updates are complete.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteQuick 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.

