Dedicated vCPU on 2022+ server CPUs · NVMe · no KYC. Pay in crypto: BTC, USDT, USDC, ETH, SOL, LTC, XMR
Language: English
Pick your cores

Guide · Puppeteer · Playwright

How many dedicated vCPU does a VPS for web scraping with headless Chrome need?

What VPS do I need for web scraping with headless Chrome (Puppeteer or Playwright)? How many browsers each plan keeps busy, why Chrome is heavy on CPU, how to run it safely in Docker, and what to watch while the workers run.

Last updated: · 7 min read

Quick answer

What VPS do I need for web scraping with headless Chrome (Puppeteer or Playwright)?

A VPS for web scraping with headless Chrome needs about 2 dedicated vCPU per browser that renders at the same time: on Cobaltfell, Fell 4 runs two browsers, Fell 8 four and Fell 16 eight. That follows Playwright's default of one worker per two logical cores; BrowserStack asks 1.5 CPUs per Linux browser (both checked 2 November 2026). Each plan brings 2 GB of RAM per vCPU.

How many headless browsers can each plan run?

One headless Chrome browser needs between 1.5 and 2 vCPU: two published rules land in that range. Playwright Test starts, by default, half as many workers as there are logical CPU cores. BrowserStack, which runs real browsers as its business, asks self-hosted customers for 1.5 CPUs per browser on Linux for standard websites, and at least 2 for intensive sites or round-the-clock use. Applied to each plan:

The two published rules applied to each plan, rounded down. RAM per browser is counted before the system takes its share. A page heavy in scripts needs more; a page with images and fonts blocked needs less. Our own YABS and Geekbench 6 results, together with the steal time we measure, will be published with their date once our first test machine is delivered. Until then we quote no performance figure of our own.
PlanvCPURAMBrowsers by Playwright's defaultBrowsers at 1.5 vCPU eachRAM per browser if shared evenly
Fell 224 GB114 GB
Fell 448 GB224 GB
Fell 8816 GB453.2 to 4 GB
Fell 161632 GB8103.2 to 4 GB

According to Cobaltfell's survey of 2 November 2026, 27 of the 202 dedicated-CPU plans recorded at hosts that take crypto without an ID check gave less than 2 GB of RAM per vCPU, and one host's whole line stopped at 1 GB per vCPU. A browser pool runs out of memory before it runs out of cores on plans like those. How a vCPU maps to a core is explained in is a dedicated vCPU a core or a thread.

Why does headless Chrome use so much CPU?

A headless browser does everything a visible one does except paint to a screen. It downloads the page, parses HTML and CSS, runs every script, lays the page out and keeps timers firing. Chromium splits that work over several processes: a browser process that manages the rest, and renderer processes for web content, with each new tab or window as a rule opening in its own. Ten tabs cost close to ten renderers' worth of CPU.

Three changes cut the bill without changing the result:

  • Block what is never read. Images, fonts and media cost bandwidth and decode time; request interception in Puppeteer or routing in Playwright refuses them.
  • Reuse one browser, open fresh contexts. Starting Chrome is the expensive step; a new context or page inside a running browser is far cheaper.
  • Skip the browser when the data allows it. Data that sits in the HTML or in a JSON API the page calls comes back from a plain HTTP client, which runs no script at all.

Since Chrome 132, the old headless mode ships only as a separate binary, chrome-headless-shell; --headless on regular Chrome runs the new mode.

Do dedicated vCPU matter for scraping workers?

A starved browser fails instead of slowing down. Navigation and selector timeouts are set in seconds. When a neighbour takes CPU time, pages finish rendering late, waits expire, and a job that would have succeeded is retried, which costs more CPU. Browserless, which sells hosted Chrome, states it in its documentation: lower concurrency gives each browser more CPU and memory, reduces timeouts and improves stability. Lost CPU time shows up as steal, explained in what CPU steal time is and how to check it on a VPS.

At Cobaltfell the CPU side of that trade is fixed. A vCPU is one hardware thread of the host processor. Yours are pinned one to one to your VPS and never lent to another customer, and the two threads of a physical core stay together, so every 2 vCPU make one whole core that no neighbour shares. Full load is allowed for as long as your work needs it: no CPU credits, no burst window and no throttling after some minutes at 100%.

Concurrency is found the same way on any host: start at one browser per two vCPU, raise it while the error rate holds steady, and stop at the first rise in timeouts.

Hosts that sell dedicated vCPU, ranked on the same written criteria, are in which is the best dedicated CPU VPS provider in 2026.

How do I run Chrome workers safely on a VPS?

Keep the Chrome sandbox on, run as a normal user and give the container an init process. Scraped pages are untrusted code by definition, and the official guides agree on each point:

  • Sandbox. Puppeteer's troubleshooting guide calls running without a sandbox strongly discouraged. Playwright's Docker guide notes that running as root disables the Chromium sandbox, and recommends a separate user plus its seccomp profile for scraping and crawling.
  • Init process. Both guides recommend Docker's --init flag, so finished Chrome child processes are reaped instead of piling up as zombies.
  • Shared memory. Playwright recommends --ipc=host for Chromium, because without it Chromium can run out of memory and crash.

Two numbers tell how a pool is doing: the memory held by all Chrome processes, and the steal column of mpstat.

Memory of every Chrome process, then load and steal per vCPU
# total resident memory of chrome / chromium / headless shell processes, in MB
ps -eo rss=,comm= | awk '/chrom/ {s+=$1} END {printf "%.0f MB\n", s/1024}'

# how many renderer processes are alive right now
pgrep -fc -- '--type=renderer'

# per-vCPU load and %steal while the pool works (package sysstat)
mpstat -P ALL 5 3

What about the websites' rules, and proxies?

Scraping stays within each site's terms and the law that applies to the operator and to the site. This page sizes the machine, not the legality of a project. Attacks on systems that are not yours, including brute-forcing and denial of service, are banned under what Cobaltfell's acceptable use policy allows, so request rates stay polite.

Proxies and IP rotation are a separate subject, and Cobaltfell sells neither. Each VPS gets one IPv4 address and an IPv6 /64 on a 1 Gbit/s port. The monthly traffic of your plan counts outgoing data only, and going past it never adds a charge by itself. Plan prices are listed under how much a dedicated-core VPS costs.

What other questions do people ask about scraping workers on a VPS?

Does Puppeteer or Playwright change the VPS sizing?

Barely: both drive the same Chromium, and the browser does the heavy work. The difference is the default. Playwright Test picks half the logical cores as its worker count; Puppeteer leaves concurrency to you, so one browser per two vCPU is the starting point.

Are many tabs in one browser cheaper than many browsers?

On memory, slightly, because the browser process is shared. On CPU, hardly: each new tab as a rule gets its own renderer process, and rendering is where the CPU goes.

Does headless Chrome need a GPU?

No. Headless Chrome runs on servers without a graphics card, which is the normal case on a VPS; Cobaltfell VPS have no GPU.

Can scraping workers run at full CPU all day?

At Cobaltfell, yes. Full load is allowed for as long as your work needs it: no CPU credits, no burst window and no throttling after some minutes at 100%. What is not allowed: Mining any cryptocurrency is not allowed, on any plan and with any software. Your own heavy CPU work, such as builds, encoding, inference or databases, may run at full load, and a node that only validates a blockchain is not mining.

Which Linux image suits Chrome workers?

Any of the offered images: Debian 13, Debian 12, Ubuntu 24.04 LTS, AlmaLinux 10, Rocky Linux 10. Installing the browser with the tool's own installer brings its system libraries along, for example npx playwright install --with-deps chromium on Debian or Ubuntu.

Sources (10)
  1. Playwright TestConfig: workers — Microsoft Playwright (checked 2026-11-02)
  2. Playwright: Docker — Microsoft Playwright (checked 2026-11-02)
  3. Automate self-hosted: set up best practices — BrowserStack (checked 2026-11-02)
  4. Browserless Enterprise: long queues and concurrency — Browserless (checked 2026-11-02)
  5. Puppeteer troubleshooting — Puppeteer (Google Chrome team) (checked 2026-11-02)
  6. Puppeteer in Docker — Puppeteer (Google Chrome team) (checked 2026-11-02)
  7. Chrome Headless mode — Chrome for Developers (checked 2026-11-02)
  8. Multi-process architecture — The Chromium Projects (checked 2026-11-02)
  9. HostSailor KVM VPS NVMe (1 GB of RAM per dedicated core) hostsailor.com/kvm-vps — HostSailor (checked 2026-11-02)
  10. mpstat(1) manual page (%steal) — man7.org / sysstat (checked 2026-11-02)

From $10.49/month · no KYC

Pick your cores