Cloudflare Kitesurf: Lightweight Browser Runtime for AI Agents
In short: Kitesurf is a free, beta, cloud-hosted browser from Cloudflare with zero Chromium code inside it — built in Rust and WebAssembly, running entirely on Cloudflare Workers. It uses 3–7× less CPU and memory than Chromium for common agent tasks like screenshots and HTML extraction, but is 1.7–1.8× slower in raw wall-clock time. It works with your existing Puppeteer, Playwright, or MCP-based agent code with one added parameter. It can’t yet handle video, WebGL, bot-detection handshakes, or long authenticated sessions — for those, Cloudflare’s standard Chromium option is still there.
Every browser you’ve ever used — Chrome, Firefox, Safari, the one on your phone — was built around a person sitting in front of a screen. Tabs, smooth scrolling, extensions, pixel-perfect fonts: all of that exists because a human is looking at it. On 6 August 2026, Cloudflare shipped something built around a different assumption entirely. Kitesurf is a web browser with no human-facing features at all, designed from the ground up to be operated by AI agents rather than people, and it doesn’t contain a single line of Chromium’s code.
The problem Kitesurf is trying to solve
AI agents that browse the web — filling in forms, extracting data from pages, taking screenshots to “see” what’s on screen — have always done it by remote-controlling a real browser. Usually that browser is Chromium, running headless on a server somewhere, driven by tools like Puppeteer or Playwright. It works, but it’s expensive: a full Chromium instance uses meaningfully more memory and CPU than the task actually requires, because most of what Chromium does — rendering fonts at 60 frames a second, keeping multiple tabs alive, managing browser extensions — exists for a human’s benefit, not an AI’s.
Cloudflare’s argument is that this overhead adds up fast when every agent needs its own browser instance, and that cost is what’s kept large-scale agentic browsing limited to well-funded operations that can absorb it. Their fix wasn’t to trim Chromium down. It was to not use Chromium at all.
What Kitesurf actually is
| Runs on | Entirely inside Cloudflare Workers — no external browser process, no Chromium binary anywhere in the stack |
| Built with | Rust compiled directly to WebAssembly, using wasm-bindgen to avoid the overhead of emulation layers like Emscripten |
| Rendering engine | Blitz, a modular Rust rendering engine, for layout and painting |
| CSS parser | Stylo — the same high-performance CSS engine used inside Firefox |
JavaScript for eval() | Boa JS, a Rust-based ECMAScript engine, used specifically to handle the eval() calls Workers can’t run natively — described by Cloudflare as “a runtime on top of a runtime” |
| Client compatibility | Speaks the Chrome DevTools Protocol (CDP), so existing tools — Puppeteer, Playwright, chrome-remote-interface, and MCP-based AI agents — work against it with a single added parameter, no rewritten code |
| Origin | Inspired by obscura, an open-source headless Rust engine for AI automation — Cloudflare’s team ported an early version of it to Workers using an AI coding agent, then rebuilt it from that proof of concept over roughly 12 weeks |
| Availability | Free public beta inside Cloudflare’s Browser Run product, with per-account usage limits |
How a page actually gets rendered without a browser engine
Cloudflare structures Kitesurf as several separate Cloudflare Workers talking to each other over a built-in remote procedure call system, rather than one monolithic program — a structure that only became possible once Cloudflare’s own platform grew features like Dynamic Workers and Worker-to-Worker RPC. One piece handles network access, and three more — which Cloudflare itself calls the “three main components” — handle the actual browsing.
Fetching the page
A single component called SandboxOutbound is the only part of Kitesurf allowed to make network requests. Every image, script, stylesheet, and font a page needs gets pulled through this one chokepoint, which enforces CORS rules, strips or rejects anything that fails policy, and keeps each page’s cookies isolated from every other page’s. Nothing else in the system can reach the open internet directly.
The Engine
The Engine is the only public-facing part of Kitesurf, and the only one of its components that holds any state. It’s what actually handles the Chrome DevTools Protocol connection — the thing that lets Puppeteer, Playwright, and CDP-speaking AI agents talk to Kitesurf as if it were a normal browser — and it keeps track of each session while every other component stays disposable and stateless.
PageScript
For each page, the Engine spins up a dedicated PageScript Worker using Cloudflare’s Dynamic Workers feature — using Blitz to parse the HTML and Stylo to parse the CSS — which then runs any JavaScript on the page inside that same isolated environment for the life of that page’s session. This is also where the eval() workaround comes in: since Workers don’t support native JavaScript evaluation for security reasons, Kitesurf routes any eval() calls through Boa JS instead.
PageRenderer
PageRenderer takes the finished page structure and actually paints it into a viewable image — a JPEG, PNG, or PDF — using another part of Blitz called blitz-paint, paired with a font-shaping library called Parley. This is the step that produces the screenshot an AI agent actually looks at, and unlike PageScript, it’s entirely stateless: it holds no memory of any page, so the Engine can kill and relaunch it the instant a render call fails or stalls, with nothing lost in the process.
Why split it into four pieces instead of one. Two design choices show up repeatedly in Cloudflare’s own account of building this: statelessness and isolation. Only the Engine holds state at all — everything else is disposable by design, so a stuck or crashed component costs nothing to throw away and restart. And because every page load is treated as untrusted by default, a malicious or broken website can’t leak data into a session it doesn’t belong to. Both choices trade a small amount of raw speed for resilience and security, which is a reasonable bet for something rendering arbitrary, unvetted pages from across the web all day.
The actual numbers
Cloudflare published benchmark results comparing Kitesurf against a warm pool of Chromium instances, averaged across five runs over a 14-URL test set:
| Metric | Kitesurf | Chromium | Difference |
|---|---|---|---|
| CPU — screenshot | 380 ms | 1,173 ms | 3.1× less |
| CPU — HTML extraction | 229 ms | 877 ms | 3.8× less |
| Memory — screenshot | 57.8 MiB | 271.0 MiB | 4.7× less |
| Memory — HTML extraction | 39.4 MiB | 273.7 MiB | 7.0× less |
| Wall time — screenshot | 1,148 ms | 637 ms | 1.8× slower |
| Wall time — HTML extraction | 820 ms | 472 ms | 1.7× slower |
The pattern is consistent: Kitesurf is dramatically lighter on memory and CPU — the two things that actually determine hosting costs at scale — but it’s slower in raw elapsed time. Cloudflare attributes most of that gap to image rasterization and JPEG/PNG encoding, and says it’s an area they’re still optimizing. A pre-warmed Chromium instance with a JIT compiler that’s already seen a given page will generally win a straight speed race against a cold software renderer; Kitesurf’s bet is that CPU and memory savings matter more than shaving milliseconds off a single page load, especially at the volume agentic workloads tend to run at.
On standards compliance, Cloudflare reports Kitesurf passing more than 215,000 Web Platform Tests — the same conformance suite real browser vendors use — with particularly strong coverage in the areas that matter most for agent tasks: DOM manipulation, HTML parsing, CSS selection, SVG, and XHR.
What it can’t do yet
Cloudflare is explicit about the current gaps, and they’re not small ones for anyone expecting a Chromium replacement:
- No video playback
- No WebGL rendering
- Can’t negotiate a real TLS fingerprint, so it will fail on sites using bot-detection handshakes
- Not built for long-lived, authenticated sessions that need to persist state over many minutes
For any of those, Cloudflare’s own documentation says to fall back to Browser Run’s standard Chromium-backed option, which remains available alongside Kitesurf rather than being replaced by it.
This is explicitly a beta, twelve weeks old. Cloudflare dates Kitesurf’s first commit to May 2026 and describes it as being under active, weekly development. The company has stated an intention to eventually open-source it so customers can self-host their own version, but as of the announcement that hadn’t happened yet. Treat compatibility and performance figures as a snapshot of a fast-moving beta, not a finished product’s permanent specification.
Why this matters beyond one company’s product launch
The interesting part isn’t really the specific performance numbers — those will keep moving as Cloudflare optimizes the renderer. It’s the underlying bet: that as AI agents doing real work on the open web becomes normal rather than experimental, the browser itself becomes infrastructure worth rebuilding from scratch for that specific user, the same way a CDN gets rebuilt when the traffic pattern it serves changes. Kitesurf is Cloudflare’s answer to a fairly specific engineering question — what a browser looks like once you design it for a machine reader instead of a human one — and stripping out tabs, extensions, and pixel-perfect rendering is what that answer looks like once you actually try building it.
Whether that bet pays off depends on something Cloudflare’s own benchmarks can’t settle: how much of the real, messy web — sites with bot detection, video content, WebGL dashboards, long authenticated sessions — an agent actually needs to touch day to day. For the narrower slice of tasks Kitesurf targets now — screenshots, structured data extraction, one-shot page reads — the CPU and memory savings are real and independently checkable by anyone with a Cloudflare account, which is a different standard of evidence than most infrastructure launch claims offer.
From a web infrastructure standpoint, the security framing is worth taking seriously too. Cloudflare’s isolation-by-default design — every page treated as untrusted, every session disposable — is a sound instinct given how much attention prompt injection and AI agent security have drawn as agentic browsing has scaled up. An agent that can be tricked by hostile page content into leaking data or taking unintended actions is a real, demonstrated risk category, not a hypothetical one, and building the browser itself around the assumption that every page is potentially hostile is the right default rather than something bolted on afterward.
Should you actually use it?
| Good fit | Screenshot pipelines, HTML/data extraction, competitive-monitoring scrapers, PDF generation, and other short, bursty, one-shot tasks against sites without aggressive bot detection — the exact workload Cloudflare designed and benchmarked it for. |
| Poor fit | Anything needing video, WebGL dashboards, real TLS/bot-detection handshakes, or a long-lived authenticated session — Kitesurf will fail outright rather than degrade gracefully, and Cloudflare says so directly in its own docs. |
| Migration cost | Low, for anyone already on Cloudflare’s Browser Run using Puppeteer, Playwright, or an MCP-compatible agent — switching is a single added parameter, not a rewrite. |
| Lock-in risk | Kitesurf currently only runs on Cloudflare’s own infrastructure. Cloudflare has said it intends to open-source it eventually, which would remove that constraint, but as of this writing that hasn’t happened. |
| Production readiness | Cloudflare itself frames this as an early beta, twelve weeks old at launch. Treat it as something to pilot on non-critical workloads first, not a drop-in production replacement for Chromium today. |
Common questions
What is Kitesurf?
A web browser built by Cloudflare specifically for AI agents rather than human users. It runs entirely inside Cloudflare Workers, contains no Chromium code, and was announced on 6 August 2026 as a free public beta.
Does Kitesurf replace Chromium entirely?
No. Cloudflare’s own Browser Run product still offers a standard Chromium-backed option alongside Kitesurf, and recommends it for tasks Kitesurf can’t yet handle — video, WebGL, real TLS fingerprinting, and long authenticated sessions.
Is Kitesurf open source?
Not yet as of the August 2026 announcement, though Cloudflare has stated an intention to open-source it so customers can self-host their own instance.
Why is Kitesurf slower than Chromium in wall-clock time if it uses less CPU and memory?
Cloudflare attributes most of the gap to image rasterization and encoding, an area it says it’s still optimizing. A warm, pre-cached Chromium instance also has a JIT compiler advantage on pages it has already rendered before, which a cold software renderer doesn’t get.
Can existing tools like Puppeteer or Playwright use Kitesurf?
Yes, without rewriting code. Kitesurf speaks the same Chrome DevTools Protocol those tools already use — switching to it is a matter of adding a browser=kitesurf parameter to the relevant Cloudflare API endpoint.
Sources
- Cloudflare — “Introducing Kitesurf: The agent-first browser that runs in V8 isolates on Cloudflare Workers,” the original engineering announcement with full architecture detail and benchmark data. blog.cloudflare.com
- Cloudflare Developer Docs — Kitesurf usage documentation within Browser Run. developers.cloudflare.com
- Cloudflare Changelog — official beta announcement entry. developers.cloudflare.com