# What is a headless browser? A headless browser is a real web browser run without a window, controlled by code, for tests, scraping, screenshots and AI agents. **On Runtime each headless browser gets a Linux microVM of its own, so parallel runs never share cookies, a profile or a kernel, and it bills only the CPU it uses.** Playwright's Chromium installs in two commands on the stock Ubuntu 24.04 image ([the sandbox environment](/docs/sandbox-environment)). ## Headless and headed Chrome's documentation puts it plainly: "With Chrome Headless mode, you can run the browser in an unattended environment, without any visible UI." Since Chrome 112 headless and headed Chrome share one implementation; the older separate build lives on as `chrome-headless-shell`. Playwright runs tests headless by default (`--headed` shows the window) and uses that lighter shell for headless Chromium unless you opt into the full browser with the `chromium` channel. | Mode | What it is | On Runtime | | --------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------- | | Headless shell | Lightweight Chromium build, no display | Playwright's default headless Chromium, via `exec` | | New headless (`chromium` channel) | Full Chrome with no window | The same install, `channel: "chromium"` | | Headed | A visible browser on a desktop | The sandbox [desktop](/docs/javascript#a-desktop) with Firefox, live view and recording | ## Why AI agents use one An agent that reads documentation, checks a deployed app or fills a form needs a browser that code can drive and that renders JavaScript. Running it on your own server hands untrusted pages your network; running it in a sandbox keeps those pages behind the sandbox's egress rules, with private and internal addresses always refused. Agents that plan from pixels use a headed desktop and [computer use](/glossary/computer-use). Agents that act through the page's structure, clicking selectors and reading text, are faster and cheaper with a headless browser. ## Run one ```bash no-run sudo npx playwright install-deps chromium npx playwright install chromium ``` ```ts check import { Sandbox } from "withruntime"; const script = ` const { chromium } = require("playwright"); (async () => { const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); await page.goto("https://example.com"); console.log(await page.title()); await browser.close(); })(); `; await using sbx = await Sandbox.create({ diskMiB: 8192 }); const slow = { check: true, timeoutMs: 600_000 } as const; await sbx.exec("npm install --no-fund --no-audit playwright", slow); await sbx.exec("sudo npx playwright install-deps chromium", slow); await sbx.exec("npx playwright install chromium", slow); await sbx.files.write("/workspace/title.cjs", script); console.log((await sbx.exec(["node", "title.cjs"], { check: true })).stdout); ``` Ask for 8 GiB of disk: Chromium and its libraries take a large share of the default 4 GiB. Put the install in a [custom image](/docs/images) and later sandboxes start with the browser ready. ## Related - [How to run Playwright in a cloud sandbox](/integrations/playwright) - [How to run a browser automation agent](/use-cases/browser-automation-agent) - [What is computer use?](/glossary/computer-use) - [What is egress control?](/glossary/egress-control) ## Sources - [Chrome for Developers, Chrome Headless mode](https://developer.chrome.com/docs/chromium/headless), checked 25 September 2026 - [Playwright, Browsers](https://playwright.dev/docs/browsers), checked 25 September 2026 - [Playwright, Command line](https://playwright.dev/docs/test-cli), checked 25 September 2026 Facts on this page were checked on 25 September 2026.