Free tools Windows power users keep installed
One-click scans. No signup required.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
PHP does not have a built-in function that renders a webpage into a screenshot. To capture a URL as an image, run a browser engine such as Chrome or Chromium and control it from PHP with a library. The usual sequence is: install the PHP package and browser dependencies, open a page, navigate to the URL, wait for the content you need, then save a viewport or full-page screenshot.
Choose a PHP screenshot approach
The right option depends mainly on which runtimes your server can host and how much browser control your application needs. These packages all rely on a real browser to render the page; Composer installing a PHP library does not, by itself, install Chrome or Chromium.
| Approach | What it offers | Runtime and qualification |
|---|---|---|
chrome-php/chrome |
Direct PHP control of a headless Chrome/Chromium browser, including navigation and screenshot capture. | Requires a compatible Chrome/Chromium executable. Its README lists PHP 7.4–8.5 and Chrome/Chromium 65+; confirm current requirements before deployment. Project README |
| Spatie Browsershot | A compact URL- or HTML-to-image interface, including Browsershot::url(...)->save(...). |
Its maintained approach uses Puppeteer and Node alongside headless Chrome. The README says the older Chrome CLI v2 route is no longer maintained. Project README |
| Playwright PHP | A PHP-facing workflow for launching Chromium, navigating, and saving a screenshot. | Verify current releases, installation instructions, supported browser versions, and project maturity before making it a production dependency. Project README |
| ScreenshotNeo | A hosted screenshot API that returns an image or PDF from a GET request, avoiding local browser setup. | It provides a PHP-compatible HTTP endpoint; details and available options are in the documentation. Its plans and billing behavior are described in the hosted-service section below. |
For the most direct local PHP example, use chrome-php/chrome. Pick Browsershot if its higher-level interface fits your application and the Node/Puppeteer requirement is acceptable. Consider Playwright PHP only after checking that its current package and browser requirements suit your deployment.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesTake and save a screenshot with chrome-php/chrome
Install the package with Composer:
composer require chrome-php/chrome
Then make sure Chrome or Chromium is installed and discoverable. The project documents using CHROME_PATH or selecting an executable explicitly when the browser is not found automatically. Configure that dependency in the same environment where PHP runs—such as your container, worker, or CI runner—not just on a developer workstation.
#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
This minimal example opens a URL, waits for navigation, writes a PNG, and closes the browser even if capture fails:
<?php
require __DIR__ . '/vendor/autoload.php';
use HeadlessChromiumBrowserFactory;
$browser = (new BrowserFactory())->createBrowser();
try {
$page = $browser->createPage();
$page->navigate('https://example.com')->waitForNavigation();
$page->screenshot()->saveToFile(__DIR__ . '/screenshot.png');
} finally {
$browser->close();
}
Replace the URL and output path for your application. The output directory must exist and be writable by the PHP process. The package README demonstrates PNG, JPEG, and WebP output; consult its current API for the exact format-selection syntax and other options. See the chrome-php/chrome README.
Wait for the content, not just the URL
waitForNavigation() is a useful starting point, but navigation finishing does not guarantee that a modern page has completed its own work. Client-side data, lazy-loaded images, custom fonts, or animations may still be changing. If the page has a reliable application-specific signal, wait for that state before capturing. Choose a condition that corresponds to the content your screenshot must include rather than adding an arbitrary delay to every request.
Capture the viewport or the whole page
A normal screenshot captures the currently visible browser area. A full-page screenshot is a separate choice; do not assume a default capture includes the entire scrollable document. The chrome-php README describes a full-page clipping approach, while Playwright documents a full-page option. For the package you use, follow its own current API example rather than transferring option names between libraries. Playwright Page screenshot API.
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
Full-page output can be very tall. That can mean a larger image and more memory or storage use than a viewport capture. Also decide whether output should be sized in CSS pixels or scaled for higher-density output: increasing the scale raises pixel dimensions and usually file size. Playwright’s screenshot API documents scale choices; check the corresponding controls in the library you adopt.
Other local PHP workflows
Spatie Browsershot
Browsershot’s documented URL workflow is deliberately concise:
use SpatieBrowsershotBrowsershot;
Browsershot::url('https://example.com')
->save('/path/to/screenshot.png');
It can also accept HTML input. Behind the PHP interface, its maintained approach uses Puppeteer and headless Chrome, so deployment needs Node and Puppeteer as well as the browser setup. If your PHP application cannot run those components, the short PHP call does not remove that constraint. Check the project’s current detailed installation requirements and avoid relying on its older Chrome CLI v2 route, which the README says is no longer maintained. Browsershot README.
Playwright PHP
The Playwright PHP project documents a workflow that starts headless Chromium, creates a page, navigates to a URL, and calls $page->screenshot(...) to save a file. Its API is another way to drive browser rendering from a PHP-facing interface. Before choosing it for production, check its current installation steps, supported PHP and browser versions, release history, and compatibility with your operating system and CI environment. The documentation example alone does not establish long-term release guarantees. Playwright PHP project README.
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.
Or skip the browser setup
If you would rather make an HTTP request than install and manage a browser runtime, ScreenshotNeo accepts a URL and returns a screenshot. Here is a PHP example using cURL:
<?php
$url = 'https://stripe.com';
$endpoint = 'https://api.screenshotneo.com/v1/shot';
$query = http_build_query([
'access_key' => 'YOUR_API_KEY',
'url' => $url,
]);
$ch = curl_init($endpoint . '?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 90,
]);
$image = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($image === false || $status < 200 || $status >= 300) {
throw new RuntimeException('Screenshot request failed: ' . $error);
}
file_put_contents(__DIR__ . '/shot.webp', $image);
This example writes the response body to a file; check the response and content type when adapting it to a format or error-handling policy for your application. Keep your access key out of public source code and client-side pages. See the ScreenshotNeo API documentation for request options and response details.
ScreenshotNeo removes cookie and consent banners, 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 cost nothing, and the response identifies the page verdict and billing status in headers. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, or another MCP client. The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000, with all features on every plan. Learn about ScreenshotNeo.
PC 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 & 11Crashes, 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 minutecurl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
For Python:
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)
For Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Sign up free for 1,000 screenshots a month with no card.
Make capture behavior reliable
- Install all runtime dependencies. Confirm the PHP package, browser executable, and any additional runtime it needs are present in the production image or worker environment.
- Confirm browser discovery. If the browser cannot be found, configure the path using the package’s documented mechanism, such as
CHROME_PATHor explicit executable selection for chrome-php. - Navigate to the exact target. Use the intended URL and wait for the navigation operation supported by your chosen library.
- Wait for application readiness. Add a selector or other application-specific readiness condition when navigation alone is insufficient. Consider lazy images, client-rendered content, and fonts.
- Choose output scope and format. Decide viewport versus full page, image type, and output scale before saving. Verify the selected library’s syntax in its own documentation.
- Save safely and close cleanly. Check that the target directory is writable. Put browser shutdown in a
finallyblock so exceptions do not leave browser processes running.
Troubleshooting common failures
Composer install succeeds, but launch fails
The PHP package may be installed while Chrome or Chromium is missing, incompatible, or not discoverable. Install a supported browser in the runtime environment and set the executable path as documented by the package. Confirm the PHP worker has permission to execute it.
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
The screenshot is blank or missing dynamic content
Navigation completion and application rendering are different events. Wait for the element or state that indicates the target content is ready, and check whether images are lazy-loaded or depend on client-side requests. A fixed delay may mask a race on one run without making the capture reliable.
The output file is absent or empty
Check the destination path, directory permissions, and whether the save method threw an error. For an HTTP screenshot service, check the HTTP status before treating the response body as an image; an error response should not be written as if it were a valid screenshot.
The full-page image is unexpectedly huge
Full-page capture includes more of the document than a viewport shot. Use viewport capture when that is all the feature needs, and avoid a higher output scale unless the additional pixels are useful. Large captures increase the size of files your application must move and store.
Browsershot cannot run on the server
Check the Node and Puppeteer prerequisites as well as Chrome. Browsershot’s PHP syntax does not mean it is a PHP-only runtime. If those dependencies cannot be installed, use a compatible local browser-control option or an HTTP screenshot API.
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
Local browser capture gives the application direct control but means your environment must install, launch, and close a browser for the work. Make sure the worker can sustain that process lifecycle and that capture timeouts are appropriate for the pages being rendered. Browser and package compatibility can change, so validate the actual PHP version, OS image, executable, and library release together before deployment.
Capture readiness is a reliability decision as much as a timing decision: capturing too early produces incomplete output, while waiting without a meaningful condition can make requests slow. Full-page and high-scale screenshots can also raise memory, transfer, and storage needs. Set output scope according to the feature instead of always requesting the largest image.
Recommended Free Tools
Local package documentation does not establish a per-capture service price or a performance benchmark, so compare your own infrastructure and operational requirements rather than assuming one implementation is faster or cheaper. For ScreenshotNeo, pricing is $5 for 3,000 shots on Starter, $15 for 15,000 on Growth, $39 for 60,000 on Pro, $99 for 250,000 on Scale, and $249 for 1,000,000 on Business; yearly billing gives two months free. Free includes 1,000 per month without a card, and every feature is available on every plan.
Frequently Asked Questions
Can PHP take a screenshot without Chrome or another browser?
Not for a rendered webpage using the browser-based approaches described here: the page has to be rendered by a browser engine. A hosted screenshot API is an alternative when you do not want to install that runtime locally.
Does a normal screenshot include the entire webpage?
No. Viewport capture and full-page capture are distinct choices; select and configure full-page behavior explicitly in the library you use.
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.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →

