What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
You can run Selenium screenshots on an India-based Linux VPS by installing a Selenium language binding and Chrome, enabling Chrome’s current headless mode, setting an explicit viewport, and saving the result with WebDriver. Let Selenium Manager handle the browser driver unless you need a pinned or offline installation; in that case, keep Chrome and ChromeDriver on the same major version. Begin with one browser job, measure your actual pages, and scale the VPS only after observing its memory, CPU, and failure rates.
What you need before taking a screenshot
A working Selenium setup has three parts: a language binding, a browser, and a browser driver. Install Selenium for your chosen language and install Chrome on the VPS. Current Selenium bindings use Selenium Manager by default to manage browser and driver setup; if you maintain a pinned pair yourself, Chrome and ChromeDriver must match at the major-version level, according to Selenium’s Chrome documentation.
For an unattended Linux server, Chrome’s current --headless mode runs without a visible browser window. A virtual display such as Xvfb is not inherently required for this workflow. Chrome’s headless documentation also shows how to use Selenium Chrome options and the command-line screenshot flags: Chrome Headless mode and Chrome Headless command-line reference.
Choose an India VPS based on your workload
An India region can be useful when proximity to Indian users or a particular data-location requirement matters. Compare plans using the resources and terms that affect browser jobs rather than assuming an entry-level plan guarantees a particular number of simultaneous sessions.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →#1 Best Overall
- Memory: available RAM per browser worker and whether it is shared or dedicated.
- CPU: allocation and screenshot completion time on your own target pages.
- Disk: capacity for Chrome, temporary browser profiles, and output files.
- Region: confirm the provider offers the India location you need.
- Transfer: account for fetching image-heavy pages and returning screenshots, including any overage policy.
- Total cost: check monthly price, IPv4 charges, taxes, billing period, and any region-specific differences.
- Operations: consider snapshots or backups and whether the instance can be resized after measuring.
As one concrete example, AWS Lightsail’s published Linux/Unix public IPv4 bundle table lists a 1 GB memory plan with 2 vCPUs and 40 GB SSD at USD 7 per month, and a 2 GB plan with 2 vCPUs and 60 GB SSD at USD 12 per month. AWS says Asia Pacific (Mumbai) plans include half the data-transfer allowance shown in its general bundle table. These are listed plan details, not Selenium performance benchmarks; confirm current price, region availability, transfer, storage, taxes, and IPv4 terms on AWS Lightsail Pricing and AWS Lightsail instance bundles before provisioning.
There is no universal, sourced RAM-per-session figure that guarantees reliable Selenium screenshots. Page complexity, viewport, fonts, images, waits, and the number of parallel browsers all affect resource use, so treat plan size as something to validate with your own workload.
Install and run Selenium on a Linux VPS
The following Python example is a minimal visible-viewport screenshot workflow for a Linux VPS with Python, Chrome, and a network connection available for Selenium Manager’s setup. It saves a PNG to a known path and closes the WebDriver session even if navigation or capture fails.
- Install Python and Selenium. Use your distribution’s package manager for Python, then install Selenium in a virtual environment with
python -m pip install selenium. Selenium’s installation and setup concepts are covered in Selenium documentation. - Install Chrome. Install a Chrome package compatible with your Linux distribution. If the VPS is offline or you pin versions, install a ChromeDriver whose major version matches Chrome’s.
- Save this script as
capture.py. Change the URL and output path to suit your job.
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
Rank #2
url = "https://example.com"
output = Path("/tmp/screenshot.png")
options = Options()
options.add_argument("--headless")
options.add_argument("--window-size=1365,900")
driver = webdriver.Chrome(options=options)
try:
driver.set_page_load_timeout(60)
driver.get(url)
output.parent.mkdir(parents=True, exist_ok=True)
driver.save_screenshot(str(output))
print(f"Saved screenshot to {output}")
finally:
driver.quit()
Run it with python capture.py. The screenshot represents the visible browser viewport at the chosen window size and page state, not necessarily the whole document. For pages that render asynchronously, add a wait for the specific element or state that signals the content you need is ready; do not rely on an arbitrary short sleep for every site.
Rank #3
Set the viewport and wait for the right page state
A fixed viewport makes visible-viewport captures more repeatable. In Selenium, set Chrome’s window size before navigating or capturing, as in the script above. The dimensions affect what is visible in the screenshot; they are not a guarantee that every image, font, or dynamically loaded component has finished rendering.
For simple command-line captures, Chrome documents this form, which writes screenshot.png in the current working directory:
chrome --headless --screenshot --window-size=412,892 https://example.com
The Chrome command-line reference also documents a --timeout option for bounding screenshot capture waits. A Selenium workflow usually needs more specific readiness logic, such as waiting for a selector that appears after the page’s asynchronous content is rendered. Full-page capture and page-specific dynamic readiness require additional script logic beyond the simple command shown here.
Control output files and browser cleanup
Write screenshots to a known writable directory, and use unique filenames when jobs may overlap so one capture does not overwrite another. The Python example uses /tmp/screenshot.png as a simple output path; for a service, choose a persistent directory if files must survive restarts or temporary-file cleanup.
Always close the WebDriver session in a finally block or equivalent cleanup path. This prevents Chrome sessions from being left behind when navigation or screenshot capture raises an error. For recurring jobs, also monitor disk use from temporary profiles and retained output files.
Scale only after measuring your actual pages
Start with one screenshot job at a time on a low-cost instance. Record completion time, memory and CPU use, and failure causes across representative pages before increasing concurrency or resizing. A lightweight static page and an image-heavy page with client-side rendering can have very different browser costs, so a capacity figure observed on one workload should not be treated as a general sessions-per-VPS limit.
More parallel Chrome sessions can improve throughput but also compete for memory and CPU. If jobs begin timing out or Chrome exits under load, reduce concurrency first and inspect resource use; then test a larger instance or a different worker arrangement against the same pages and waits. Provider prices and transfer allowances are volatile, so include the region-specific terms in any cost comparison.
Recommended Free Tools
Troubleshooting common failures
- Chrome or ChromeDriver version error: If versions are managed manually, check their major versions and align them. If you use Selenium Manager, confirm the VPS can reach the resources needed for management and that the installed Chrome binary is available.
- Chrome will not start in a server environment: Confirm that Chrome is installed and that the script uses current
--headlessmode. A graphical desktop is not required for this headless workflow; avoid legacy instructions that depend on--headless=old. - Screenshot is blank or missing expected content: The capture may have happened before asynchronous content appeared. Wait for a meaningful page element or readiness condition, and check that the URL loaded successfully before capturing.
- Output file is missing: Confirm that the destination directory exists and is writable by the account running the script. Print or log the output path and use unique names for simultaneous jobs.
- Jobs become unreliable when run in parallel: Return to one job at a time, inspect memory and CPU under representative pages, then increase concurrency gradually or resize based on the observed workload.
- Legacy headless flag has no effect: Chromium documents that from M132 the old headless implementation is no longer part of the Chrome binary and
--headless=oldhas no effect. That legacy implementation is available separately aschrome-headless-shell; ordinary current Selenium captures should use current Chrome headless mode unless a compatibility requirement calls for otherwise. See the Chromium Headless README.
Or skip the browser setup
If you would rather make a screenshot request than maintain Chrome on a VPS, ScreenshotNeo returns a screenshot or PDF from one GET request. It accepts cookie banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. It also provides an MCP server for AI agents, with tools including take_screenshot, get_page_info, and capture_pdf.
Example cURL request (replace the target URL and API key):
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 options. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots. Sign up for 1,000 free screenshots a month with no card.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsFrequently Asked Questions
Can I use Selenium screenshots on a VPS without Xvfb?
Yes. Chrome’s current headless mode runs without a visible user interface, so a virtual display is not inherently needed for this workflow.
Does Selenium’s screenshot save the entire web page?
The example captures the visible viewport. Full-page capture needs additional script logic.
How much RAM does one Selenium screenshot need?
There is no universal minimum established here; measure the target pages and concurrency on the VPS you plan to 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.

