Zenrows
Talk to sales Start free

What is a headless browser?

A headless browser is a real browser running without a graphical window. It parses HTML, applies CSS, executes JavaScript, makes network requests and builds a full DOM, exactly as the browser on your desktop does. The only thing missing is somebody watching.

It is driven by code instead of by a person, usually through Puppeteer, Playwright or Selenium, which connect to the browser over a control protocol and issue instructions.

What it gives you over an HTTP request

An HTTP client sends a request and receives bytes. A headless browser gives you everything that happens next:

  • Script execution, so client-rendered content actually exists.
  • Interaction, clicking, typing, scrolling, submitting forms.
  • State, cookies and storage persisting across navigations, which is what a login flow needs.
  • Observation, screenshots, PDFs, and visibility of the network calls the page makes.

If none of those are needed, an HTTP request is the better tool by a wide margin.

What it costs

Hundreds of megabytes of memory per instance with a real page loaded, seconds rather than milliseconds per page, and a running process that can hang, leak or crash and needs something watching it.

Concurrency is where this bites hardest. Fifty simultaneous HTTP requests is unremarkable. Fifty simultaneous browsers is a substantial server doing nothing else.

Headless is more detectable, not less

This surprises people who reach for a browser expecting it to look more human.

A default headless Chrome announces itself in several ways at once: navigator.webdriver is set, there is no real GPU so WebGL reports a software renderer such as SwiftShader, the font set is whatever the server has, touch support is absent, and the window size is often an exact default. Individually each is plausible. Together they describe a machine almost nobody browses on, which is precisely what fingerprinting is built to catch.

Add a datacenter IP address and you have the clearest possible signal. A headless browser makes rendering possible; it does not make you look legitimate, and treating it as an anti-bot measure is a common and expensive mistake.

Where Zenrows fits

Two paths, depending on what you actually need. If you only need the page after scripts run, JavaScript rendering on a Fetch request handles it without you running anything.

If you need genuine interaction, Browser Sessions gives you a remote browser over the Chrome DevTools Protocol, so your existing Puppeteer or Playwright code connects with a one-line change. Memory moves off your machine, sessions run in parallel, and traffic routes through residential IPs, which addresses the detectability problem that running your own headless browser creates.

Go deeper on the blog

In the docs

Last updated: Aug 16, 2026

Get reliable web data in minutes.

Free plan, 5,000 credits every month, no credit card required.