Cloudflare introduced Kitesurf on August 6, offering a browser engine built for AI agents that fetch web content and take screenshots. Written from scratch in Rust and compiled to WebAssembly, it runs inside Cloudflare Workers V8 isolates rather than starting a Chromium instance for each browsing workload.
As of August 23, 2026, Kitesurf is still in beta. Cloudflare reports that it uses 3 to 7 times less CPU and 4.7 to 7 times less memory than Chromium for its target tasks, and passes more than 215,000 Web Platform Tests. Those results make it worth testing for high-volume retrieval. They don't establish it as a replacement for every kind of browser automation.
The main tradeoff is straightforward: Kitesurf uses fewer resources, but it can take longer to finish a request and supports a narrower range of browser behavior. Whether that helps depends on what an agent needs to do.
Lower resource use, longer requests
Headless Chromium has become a standard choice for automation that needs JavaScript execution, dynamic page content, or screenshots. It works across a wide range of sites, but that compatibility comes with the architecture of a browser built for people.
Chromium supports persistent state across tabs and sessions, extensions, a rendering pipeline designed for smooth display output, GPU process infrastructure, and a separate network process with browser-level cookies and credentials. Headless operation doesn't remove all of that machinery.
An agent extracting content often needs a smaller set of functions: HTML parsing, a document object model, CSS computation, JavaScript execution, and network access. Supporting the rest of a general-purpose browser can add costs when a service runs millions of sessions per day.
Cloudflare compared Kitesurf with a warm Chromium pool across 14 URLs. Its reported results show substantial CPU and memory savings:
| Task and metric | Kitesurf | Chromium |
|---|---|---|
| HTML extraction CPU time | 229 ms | 877 ms |
| HTML extraction memory | 39.4 MiB | 273.7 MiB |
| Screenshot CPU time | 380 ms | 1,173 ms |
| Screenshot memory | 57.8 MiB | 271.0 MiB |
| HTML extraction wall-clock time | 820 ms | 472 ms |
For HTML extraction, Kitesurf used about one-seventh of Chromium's memory. Screenshots needed about one-fifth. Both tasks also consumed less CPU time.
Elapsed time tells a different story. HTML extraction took 820 ms in Kitesurf versus 472 ms in Chromium, making Kitesurf about 1.7 times slower from start to finish. CPU time measures processor work; wall-clock time measures how long the caller waits. A service can save compute resources while making an individual request slower.
That delay matters for an interactive task waiting on a page. It may matter less for an agent running thousands of parallel fetches, especially when model inference takes more time than retrieval. The benchmark supports a resource-efficiency argument, not a general speed claim.
How the browser fits inside Workers
Kitesurf divides its work among three Workers components: Engine, PageScript, and SandboxOutbound. The separation keeps the public interface, page execution, and network controls in different parts of the system.
Engine manages session state and serves as the sole public interface. It handles the Chrome DevTools Protocol, or CDP, over WebSocket, along with REST APIs. CDP is the browser-control protocol used by tools such as Puppeteer and Playwright.
PageScript performs the page work. It uses Dynamic Workers to create isolated, long-lived isolates for individual pages. Its stack uses Blitz for HTML parsing, Stylo, Firefox's Rust-based CSS parser, for CSS, and Boa for JavaScript execution.
Boa is an important distinction. Workers uses V8 as its host runtime, but JavaScript from a page runs through Boa, a separate ECMAScript engine written in Rust. Running inside a V8 isolate doesn't give the page V8's JavaScript compatibility. Boa can handle the JavaScript needed for typical scraping tasks, while complex single-page applications may encounter features it doesn't yet support.
SandboxOutbound controls network access. It enforces network policy, cross-origin resource sharing rules, browser headers, and per-page cookie isolation. The other components don't access the network directly. For a service executing untrusted web content, that provides a single place to inspect and enforce outbound access rules.
The stack compiles to WebAssembly through wasm-bindgen, allowing it to run inside Workers isolates. WebAssembly brings overhead of its own, but the design gives each page load a fresh sandbox and makes a misbehaving session inexpensive to terminate. Page and session state still exist during execution; the important limitation is that Kitesurf doesn't provide a persistent cookie jar across requests.
CDP reduces adoption work, not compatibility testing
Cloudflare chose an existing browser-control protocol rather than asking agent developers to adopt a new one. In principle, frameworks already using CDP can direct suitable requests to Kitesurf with relatively few application changes.
That is a useful infrastructure decision. A different backend is easier to test when the application can keep its existing browser-control interface. Protocol compatibility, however, doesn't mean that every page will render correctly or every existing automation flow will work. The JavaScript engine and browser features still need testing against the target sites.
The expected economics could encourage substantial migration once Kitesurf leaves beta and has an established pricing model. The forecast that most headless-browser operators will migrate is more ambitious than the benchmarks alone can support, though. Actual adoption will depend on compatibility, latency requirements, and service pricing.
The memory result illustrates the potential. If memory alone limits capacity, a sevenfold reduction could allow the memory budget for 7 sessions to support roughly 49. That doesn't automatically mean 49 sessions for the same total cost. CPU, request duration, network usage, and the eventual pricing model also affect the bill.
Where Chromium remains the safer choice
Kitesurf's current limits rule it out for several common browser workloads:
- Video playback and WebGL rendering.
- TLS fingerprinting and browser fingerprint emulation.
- Persistent authenticated sessions that depend on a cookie jar surviving across requests.
- Heavy JavaScript single-page applications that depend on features Boa doesn't yet cover.
The authentication limit is especially relevant to enterprise automation. An agent working in an internal application or behind single sign-on often needs to preserve a login while moving through a sequence of requests. Chromium or another browser with persistent session support remains the more appropriate choice for those flows.
Public content retrieval is a better match. HTML extraction and screenshots of static or lightly dynamic pages can benefit from the smaller resource footprint without needing the full range of browser features.
Cloudflare reports more than 215,000 passing Web Platform Tests across CSS, DOM, HTML, selection, SVG, and XHR, with coverage expanding weekly. Those tests cover much of the functionality needed to read and render web pages. They are useful evidence of progress, but the count doesn't establish compatibility with any particular application.
Boa's continued development could narrow the JavaScript gap with V8. How quickly that happens will affect how much work can move away from Chromium.
The connection to agent payments
Cloudflare introduced Kitesurf during Agents Week, alongside x402. The payment protocol is presented as an HTTP-native way for AI agents to pay for web content and APIs using stablecoins through Cloudflare's Monetization Gateway, without requiring human approval for each transaction.
More than 20 companies are reported to be participating. The proposed flow is that a paywalled API states its price in response headers, an agent with a wallet pays, and the agent consumes the content before continuing its task. Individual microtransactions wouldn't need manual review.
The intended effect is to let agents purchase access as they work, rather than limiting retrieval to services that someone has already arranged access to. That remains a platform proposition, not evidence that autonomous payments are already a routine part of web browsing.
Kitesurf and x402 fit together commercially. One offers lower-resource browser access to the public web; the other offers a way to pay for gated content. Cloudflare is pitching both as parts of a single-provider system for agents retrieving live information. The combination is broad, although a claim that it is more complete than every competing offering would require a separate comparison.
Choosing a backend by task
Kitesurf is worth testing for new retrieval workloads with modest JavaScript requirements and a strong need to control resource use. Cloudflare's published methodology and 14-URL benchmark provide a starting point for evaluation. They don't replace testing with the pages and request patterns a service will handle.
Latency-sensitive tasks need particular attention because the reported HTML extraction result is slower end to end. Persistent authentication, video, WebGL, and complex single-page applications remain reasons to keep Chromium available.
For an agent platform with mixed workloads, running both is a practical approach. Light public-web retrieval can go to Kitesurf, while complex or authenticated sessions stay on Chromium. CDP compatibility makes that division easier to explore without requiring a completely different browser-control interface for each backend.
The resource savings may justify adopting Kitesurf for a useful subset of tasks before its compatibility approaches Chromium's. The decision can be made per workload rather than waiting for one browser engine to cover everything.