What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
If a PHP Browsershot screenshot times out, first identify what timed out: the PHP-side browser process, a Puppeteer navigation, a browser protocol operation, or a page-readiness wait. Then check that Chromium can reach the target URL from its own runtime environment, confirm the page’s readiness condition and installed versions, and adjust only the matching timeout. A longer timeout will not fix a URL Chromium cannot reach or a wait condition that never becomes true.
Identify which timeout occurred
Save the complete exception and command output before changing configuration. Similar-looking failures can come from different layers, and Browsershot exposes separate settings for its process timeout and the browser protocol timeout. Puppeteer also has a navigation timeout API. A message such as “Navigation timeout of 30000 ms exceeded” points to the navigation path; it does not, by itself, prove that PHP’s process timeout is too short.
- PHP-side process: Browsershot’s script or process may exceed its allowed runtime.
- Navigation: Chromium is still navigating, or the configured navigation/readiness condition has not completed.
- Protocol operation: A browser communication operation exceeded its own limit.
- Page readiness: A selector, JavaScript condition, delay, or network-idle condition is still waiting.
Browsershot’s timeout() accepts seconds and converts that value to milliseconds for its browser script; protocolTimeout() is a distinct setting. Check the API and defaults in the installed-version source, since they can change between releases.
Check that Chromium can reach the target URL
A URL opening in your desktop browser does not establish that the process running Chromium can reach it. The screenshot browser may run in a container, worker, or server with different DNS, networking, certificates, credentials, and ports.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
- Confirm the hostname resolves from the machine or container that runs Chromium.
- Check that the target port is open and that the application is serving requests in that environment.
- Inspect authentication, redirects, and TLS certificate behavior.
- For
localhost, establish which machine or container “localhost” refers to. It may not be the machine where you opened the URL manually.
A Browsershot community discussion documents an individual localhost case with the error “Navigation timeout of 30000 ms exceeded.” Its suggested PHP built-in server adjustment is to increase PHP_CLI_SERVER_WORKERS so the server can process more than one request. Treat that as a case-specific possibility, not a universal Browsershot requirement: it applies only if your deployment uses the PHP built-in server and the request flow matches the reported issue. See the discussion and context.
Use a readiness condition that matches the page
Waiting for network activity to stop can be a poor fit for pages with persistent connections, analytics, polling, or other ongoing requests. Browsershot offers strict and non-strict network-idle modes, networkidle0 and networkidle2, as well as waitForSelector() and waitForFunction(). Choose the condition that represents the content you actually need in the screenshot.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
- Use a selector when the page exposes a reliable element only after the relevant content renders.
- Use a function when readiness is represented by application state rather than a single element.
- Use network idle only when the page’s network behavior makes that a meaningful completion signal.
- Use a fixed delay only when you have a known timing need and no better signal; a delay can still be too short or waste time.
Browsershot’s available options are documented in its source. Puppeteer documents navigation timeout behavior in Page.setDefaultNavigationTimeout() and navigation in Page.goto().
Verify installed versions and browser paths
Confirm that Node.js, Puppeteer, and Chrome or Chromium are installed and executable in the environment where PHP runs. Check any custom Node, module, or browser binary paths and verify executable permissions. Do not assume configuration copied from a different Browsershot release applies to your application.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
The Browsershot changelog says version 5.0.0 requires Puppeteer 23.0 or higher, and that protocol-timeout options were added in 4.2.0. These are release-specific compatibility details; check the changelog alongside the version actually installed in your project.
Increase only the timeout for the failing layer
Once the URL is reachable, dependencies are compatible, and the wait condition can complete, increase the timeout that corresponds to the failure. The current Browsershot source defines a 60-second default process timeout and converts timeout($seconds) to milliseconds for the browser option; verify those details against your installed version rather than treating them as permanent defaults.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
- For a genuinely slow but successful browser-script operation, adjust Browsershot’s
timeout(). - For a browser protocol operation, use the separate
protocolTimeout()setting available in supported versions. - For navigation, review the navigation wait and Puppeteer navigation-timeout behavior rather than assuming the PHP process limit is responsible.
Increasing a limit is reasonable when the operation is valid and predictably needs more time. It will not repair an unreachable URL, missing browser executable, incompatible dependency, or readiness condition that never becomes true.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Keep Chrome CLI timeout advice separate
Chrome’s standalone headless command-line --timeout flag controls when that CLI captures content, even if the page is still loading. It is not the same setting as Browsershot’s PHP API timeout. If you are invoking Chrome directly, consult the Chrome Headless command-line reference; do not apply that flag as though it changed Browsershot’s own timeout.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Or skip the browser setup
If your goal is simply to capture a URL rather than maintain the PHP, Node.js, Puppeteer, and Chromium setup, ScreenshotNeo provides a screenshot API and MCP server. A GET request can return a PNG, JPEG, WebP, or PDF. For example, this cURL request saves a WebP screenshot of Stripe; replace the URL and API key with your own. See the API documentation for parameters and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie banners and consent notices are accepted and removed before capture, and known newsletter popups and chat widgets are removed; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The Free plan includes 1,000 screenshots per month with no card required; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to try it with 1,000 screenshots a month and no card.
Quick Recap
Troubleshooting checklist
| Symptom | What to check | Next step |
|---|---|---|
| “Navigation timeout of 30000 ms exceeded” | URL reachability from Chromium, redirects, authentication, TLS, and the navigation/readiness condition. | Fix access or choose a completion signal that can become true; then adjust the relevant navigation limit if the valid page needs more time. |
| Only localhost targets fail | Which host or container owns localhost, whether the server is reachable there, and whether the PHP built-in server is handling concurrent requests. |
Correct the target address or server flow. Consider PHP_CLI_SERVER_WORKERS only when the built-in-server case matches. |
| Network-idle wait never finishes | Persistent requests such as polling, analytics, or open connections. | Wait for a reliable selector or application state instead. |
Timeout persists after increasing timeout() |
Whether the failure is navigation, protocol, readiness, or access-related rather than the process limit. | Set the matching timeout only after resolving reachability and dependency problems. |
| Browser fails to launch or behavior differs by environment | Node.js, Puppeteer, Chrome/Chromium versions, custom paths, and executable permissions in the PHP runtime. | Install compatible dependencies and correct paths and permissions; verify the Browsershot version and its changelog. |
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.




