Infrastructure release

Cloudflare Kitesurf: A Headless Browser for AI Agents That Costs 7x Less Memory

Cloudflare Kitesurf is a stateless, Chromium-free browser for AI agents running in V8 isolates. It uses 3-7x less CPU and memory than Chromium, free in beta.

LUMIEN5 min read
Cloudflare Kitesurf: A Headless Browser for AI Agents That Costs 7x Less Memory

Cloudflare has launched Kitesurf, a stateless browser built for AI agents rather than humans. It runs entirely in V8 isolates on Cloudflare Workers, with no Chromium underneath. On Cloudflare's own benchmarks, Kitesurf uses 3.1 to 3.8 times less CPU and 4.7 to 7.0 times less memory than Chromium for typical agent tasks like screenshots and HTML extraction. It is available now, free while in beta, through Cloudflare's Browser Run service.

What happened

Detail Fact
Product Kitesurf, by Cloudflare
Availability Free beta via Browser Run, with per-account limits
Web Platform Tests passed 215,000+
CPU (screenshot, vs Chromium) 380 ms vs 1,173 ms (3.1x less)
CPU (HTML extraction, vs Chromium) 229 ms vs 877 ms (3.8x less)
Memory (screenshot, vs Chromium) 57.8 MiB vs 271.0 MiB (4.7x less)
Memory (HTML extraction, vs Chromium) 39.4 MiB vs 273.7 MiB (7.0x less)
Wall-clock time penalty Kitesurf is 1.7-1.8x slower than Chromium

Cloudflare built Kitesurf because traditional browser engines like Chromium carry enormous overhead. They were designed for humans: tabs, extensions, 60-fps rendering. AI agents need none of that. They need machine-readable HTML, low memory per session, and isolation from threats like prompt injection. Kitesurf strips away the human-facing layer and keeps what models actually consume.

Benchmarks come from Cloudflare’s own 14-URL corpus, with medians across five Quick Action runs per URL. The numbers show a clear trade: lower CPU and memory cost per session, but slower wall-clock time due to rasterization and image encoding. For bursty, cost-sensitive agent workloads, that trade makes sense. For tasks where speed matters more than cost, Chromium remains the right choice.

How the architecture works

Kitesurf splits the browser into isolated Cloudflare Workers components. The Engine is the only public-facing piece. It speaks Chrome DevTools Protocol (CDP) over WebSocket plus HTTP REST and holds each session’s state. Every other component is stateless and disposable.

  • PageScript runs on Dynamic Workers. Each page or out-of-process iframe gets its own isolate with a clean JavaScript global scope and DOM. HTML and CSS parsing use Blitz, a Rust rendering engine, and Stylo, Firefox’s CSS parser. Because Cloudflare Workers does not support native eval, those calls are handled by Boa JS, a Rust-based ECMAScript engine.
  • PageRenderer rasterizes scenes into JPEG, PNG, or PDF using blitz-paint and Parley for text shaping.
  • SandboxOutbound is the only component that can make network requests. It enforces CORS, injects browser-shaped headers, maintains per-page cookie jars, and returns a 403 for anything that violates policy.

This design means each agent session is isolated by default. No shared state bleeds between users or tasks, which directly addresses prompt injection risks in automated pipelines.

What works today and what does not

Kitesurf already renders TodoMVC (vanilla, React, Vue, Angular, Preact), Wikipedia, and Hacker News. It supports agent web browsing, HTML extraction, screenshots, PDF rendering, and one-shot Quick Actions.

The following are not supported yet and should stay on Chromium:

  • Video playback
  • WebGL
  • TLS-fingerprint bot challenges
  • Long authenticated stateful sessions

Cloudflare plans to open-source Kitesurf so users can deploy their own instances.

How do you switch to Kitesurf?

The adoption path is intentionally minimal. Existing Puppeteer, Playwright, chrome-remote-interface, and MCP clients work without modification. The only change is adding a browser=kitesurf parameter to the Browser Run CDP endpoint or the Quick Actions API. Cloudflare also provides a public playground with injected Chrome DevTools showing DOM, console, network, and per-isolate WebAssembly memory.

Why it matters

The cost of running a browser per agent session is one of the real friction points for teams scaling automation fleets. At 39.4 MiB per extraction session versus 273.7 MiB for Chromium, you can run roughly seven Kitesurf sessions for the price of one Chromium session. For teams building AI integrations with web browsing steps, that difference shows up directly in infrastructure bills.

The architecture also matters for security. Prompt injection via malicious web pages is a genuine threat in agent pipelines. The SandboxOutbound worker and per-page isolation in Kitesurf are structural mitigations, not just policy controls.

For SEO and data teams running large-scale crawls or RAG ingestion pipelines, the lower per-session cost makes higher-frequency crawling economically viable. Teams already tracking organic search performance at scale may find this relevant sooner than they expect.

Our take

The benchmarks are Cloudflare’s own, on Cloudflare’s own URL corpus, so treat them as directional rather than gospel. That said, the memory numbers are hard to ignore: cutting from 273 MiB to 39 MiB per extraction session is not a minor optimization, it is a structural change in how much compute you need per concurrent agent.

The wall-clock slowdown (1.7 to 1.8x on Chromium) will matter for some use cases, but most agent tasks are not latency-sensitive in the way a human browsing session is. A pipeline that extracts product data overnight does not care if each page takes 1.8x longer as long as the fleet cost drops 7x.

The one-parameter migration path is the right call. It lowers the cost of experimenting to nearly zero. Run both in parallel, measure on your own URLs, and let the data decide. Keep Chromium as a fallback for the edge cases that Kitesurf does not yet handle. For teams already building workflow automations that touch the web, this is worth testing in the next sprint.

What to do about it

  1. Sign up for Cloudflare Browser Run and note the per-account beta limits before designing any workload around it.
  2. Add browser=kitesurf to one existing Puppeteer or Playwright job that does simple HTML extraction or screenshots.
  3. Run your own URL corpus through both Kitesurf and Chromium and compare CPU, memory, and wall-clock time.
  4. Keep Chromium as the default fallback for any task involving video, WebGL, or stateful authenticated sessions.
  5. Watch the open-source release: self-hosting Kitesurf on your own Workers account will give you more control over limits and configuration.

If you are running AI agents that browse the web at scale, Kitesurf is worth one afternoon of testing right now.

Source: Marktechpost

Frequently asked questions

What is Cloudflare Kitesurf?

Kitesurf is a stateless web browser built by Cloudflare for AI agents. It runs in V8 isolates on Cloudflare Workers with no Chromium underneath, and is designed to be cheaper and more isolated than a full browser engine for agent tasks like HTML extraction and screenshots.

How much cheaper is Kitesurf than Chromium?

On Cloudflare's benchmarks, Kitesurf uses 3.1 to 3.8 times less CPU and 4.7 to 7.0 times less memory than Chromium for common agent tasks. However, Chromium is still 1.7 to 1.8 times faster on wall-clock time.

How do I use Kitesurf with Puppeteer or Playwright?

Existing Puppeteer, Playwright, chrome-remote-interface, and MCP clients work without any code changes. You only need to add a browser=kitesurf parameter to the Browser Run CDP endpoint or the Quick Actions API.

What does Kitesurf not support yet?

Kitesurf does not yet support video playback, WebGL, TLS-fingerprint bot challenges, or long authenticated stateful sessions. Cloudflare recommends keeping those workloads on Chromium.

More from AI