Benchmarking AI-native headless browsers built from scratch Lightpanda, the open-source headless browser written in Zig by Lightpanda, ran up to 3.9x faster than Moli and 2.6x faster than Obscura in a benchmark of four AI-native headless browsers, according to results published by Lightpanda cofounder and CTO Pierre Tachoire. On a crawl of a 940-page demo site with 25 tabs, Lightpanda completed the run in 4.5s versus 11.5s for Obscura and 17.4s for Moli, using 37MB of peak memory plus 3MB per extra tab against 40MB plus 7MB for Obscura and 92MB plus 4-16MB for Moli. Lightpanda also passed 1.76 million Web Platform Tests subtests (80%), compared with 652,000 (30%) for Obscura, while Cloudflare's closed-source Kitesurf produced no complete run. Benchmarking AI-native headless browsers built from scratch Pierre Tachoire Cofounder & CTO TL;DR We compared Lightpanda https://github.com/lightpanda-io/browser , Obscura https://github.com/h4ckf0r0day/obscura , Moli https://github.com/lexmount/moli and Kitesurf https://kitesurf.dev/ . The gap widens as you add parallel sessions. Lightpanda runs up to 3.9x faster than Moli and 2.6x faster than Obscura. It uses about half the memory of both. Lightpanda passes 80% of the web standards subtests, more than any other AI-native browser. What we compared: AI-native headless browsers built from scratch Headless Chrome has been the standard for web automation for years, but it was built for people. Chrome doesn’t scale and isn’t fit for purpose. It uses a lot of memory and CPU, and it gets slower as you add tabs. We wrote more about our thesis for why a lightweight browser for machines is urgently needed in our launch post https://lightpanda.io/blog/posts/why-build-a-new-browser . Since then, multiple new headless browsers built from scratch have appeared. We call these browsers AI-native because they are built for machines rather than people. This post compares four AI-native headless browsers: - Lightpanda https://github.com/lightpanda-io/browser is an open-source headless browser written in Zig. It speaks CDP https://chromedevtools.github.io/devtools-protocol/ Chrome DevTools Protocol , WebDriver Classic, WebDriver BiDi and MCP https://modelcontextprotocol.io Model Context Protocol . - Obscura https://github.com/h4ckf0r0day/obscura is an open-source headless browser written in Rust. It speaks CDP and MCP. - Moli https://github.com/lexmount/moli is an open-source headless browser written in Rust by Lexmount. It speaks CDP and WebDriver. - Cloudflare’s Kitesurf https://blog.cloudflare.com/kitesurf/ is a closed-source browser written in Rust and compiled to WebAssembly. You use it through Cloudflare Browser Run. | | Lightpanda | Obscura | Moli | Kitesurf | |---|---|---|---|---| | Total time how-much-memory-and-cpu-does-each-browser-use 940 pages, 25 tabs | 4.5s | 11.5s | 17.4s | - | | CPU time how-much-memory-and-cpu-does-each-browser-use 940 pages, 25 tabs | 12s | 29s | 40s | - | | Peak memory how-much-memory-and-cpu-does-each-browser-use 940 pages, 1 tab + each extra tab | 37MB + 3MB per extra tab | 40MB + 7MB per extra tab | 92MB + 4-16MB per extra tab | - | | Web standards which-web-apis-does-each-browser-support Web Platform Tests subtests passed | 1.76 million 80% | 652,000 30% | No complete run | No complete run | | Protocols which-protocols-and-clients-work-with-each-browser | CDP, WebDriver, MCP | CDP, MCP | CDP, WebDriver | CDP | | Local or cloud how-do-you-install-and-host-each-browser | Both | Local | Both | Cloud | | License how-mature-is-each-project | AGPL-3.0 | Apache-2.0 | Apache-2.0 or MIT | Closed source | | Language | Zig | Rust | Rust | Rust, compiled to WebAssembly | | Date created | February 2023 | April 2026 | August 2026 | May 2026 | How we measured This article references two benchmarks for Lightpanda, Obscura and Moli: 1. Performance. We ran a script that follows every link of a 940-page demo site. Each run starts a fresh browser. It fetches pages using a pool of concurrent CDP connections, each running one session. The method follows our crawler benchmark https://github.com/lightpanda-io/demo/blob/main/BENCHMARKS.md crawler-benchmark . 2. Web Platform Tests WPT . We ran script tests on Lightpanda, Moli, Obscura and Chrome on the same WPT commit c182382 . WPT measure Web API support: how closely a browser follows the web standards. It tells you how many Web APIs a page can rely on. WPT doesn’t tell you everything. Whether a browser works on real sites also depends on network, memory and execution speed. Since Kitesurf is closed source, we used Cloudflare’s published WPT tests https://kitesurf.dev/wpt and benchmarks https://kitesurf.dev/benchmarks . How mature is each project? Performance and compatibility only show part of the story. Since a web browser is a complex piece of software, looking in more detail at the codebase provides helpful context on the reliability and maintenance of these tools. Here are the facts as of October 19, 2026: | | Lightpanda | Obscura | Moli | Kitesurf | |---|---|---|---|---| | Latest version | 1.0.1 | 0.2.5 | 1.1.18 | N/A | | Releases | 24 | 18 | 30 | N/A | | Date created | February 2023 | April 2026 | August 2026 | May 2026 | | Commits | 10,779 | 1,533 | 2,051 | N/A | | Merged PRs | 3,148 | 552 | 1,222 | N/A | | Number of contributors | 76 | 85 92 incl. anonymous | 17 21 incl. anonymous | N/A | | Open-source | Yes | Yes | Yes | No | Kitesurf is closed source. We were not able to access information about its releases and commits. How much memory and CPU does each browser use? For Lightpanda, Moli and Obscura: - CPU time is consistently 2.3-3.4x lower for Lightpanda. - For total time and peak memory, the more tabs you run in parallel, the more Lightpanda saves. At the highest concurrency tested 25 tabs in parallel , its total time is 4.5s against 11.5s for Obscura and 17.4s for Moli. Its peak memory is 109MB against 201MB for Obscura and 230MB for Moli. The crawl ran on October 19, 2026 with Lightpanda 1.0.1, Moli v1.1.18 and Obscura v0.2.5: - Total time: time to crawl all 940 pages. - CPU time: CPU used by the browser, summed over all cores. - Average CPU load: 100% = one full core. - Peak memory: memory used by all browser processes, with shared pages split between them, sampled every 50ms. Since Kitesurf is closed source, we can’t run the same benchmark on it. We have to use the numbers that Cloudflare publishes https://kitesurf.dev/benchmarks comparing Kitesurf and Chrome: 37MB of memory and 411ms of CPU for Kitesurf, against 266MB and 1.33s for Browser Run, Cloudflare’s Chrome-based service. A page takes longer, though: 967ms against 884ms. Kitesurf is lighter than Chrome but not faster. Lightpanda is both: in the public crawl benchmark https://lightpanda.io/docs/core-concepts/benchmarks , it is about 16x lighter and 9x faster than Chrome. Which protocols and clients work with each browser? All four speak CDP https://lightpanda.io/blog/posts/cdp-under-the-hood , making them compatible with Playwright and Puppeteer by changing one endpoint. Lightpanda is the only one of the four that speaks CDP, WebDriver and MCP natively, with no driver in between https://lightpanda.io/blog/posts/speed-up-your-selenium-tests . | | Lightpanda | Obscura | Moli | Kitesurf | |---|---|---|---|---| | CDP | Yes | Yes | Yes | Yes, through Browser Run | | WebDriver Classic | Yes | – | Yes | – | | WebDriver BiDi | Yes | – | Yes | – | | MCP server | Yes | Yes | – | Through MCP clients | | Built-in agent | Yes | – | – | – | | HTTP API | Yes | – | – | Yes, REST quick actions | A dash means the feature is not supported per the project’s README or docs on October 19, 2026 . See the web automation stack explained https://lightpanda.io/blog/posts/web-automation-stack-explained for how these tools fit together. Which Web APIs does each browser support? Since almost half of websites https://www.zyte.com/sowa/2026/barriers/javascript/ require JavaScript execution to render pages, browsers have to implement the corresponding Web APIs. The Web Platform Tests https://web-platform-tests.org/ are the shared test suite that browser vendors use to check compatibility. Each test file holds many subtests. Results are public on wpt.fyi https://wpt.fyi/results/ , and Chrome passes 98% of subtests. - Lightpanda passes 80% of the subtests in the WPT. That is 1.76 million of the 2.2 million subtests. Every Lightpanda run is public on our WPT dashboard https://perf.lightpanda.io/wpt . - Obscura reports 67.6% here https://github.com/h4ckf0r0day/obscura-benchmark web-platform-tests-conformance , but this only concerns a subset of tests 893,328 of the 2.2 million in the suite . On the full suite, run on our infrastructure, Obscura 0.2.5 passes 30%. - Moli: our WPT run had not finished after 10 hours, so there is no complete result. - Kitesurf announced 1,516,781 passing subtests out of 1,543,950 98.2% of those it ran, 69% of the 2.2 million in the suite , from kitesurf.dev/wpt https://kitesurf.dev/wpt . That run only covers 30% of the WPT test files 11,765 of 38,772 . Not all subtests are relevant to an AI-native browser built for machines. The chart below keeps the WPT folders that matter for web agents, listed under the chart, and shows them by the usual WPT areas. Each axis is the share of the area’s subtests that a browser passes, 100% being all of them. A subtest a browser did not run counts as failed. That is why Moli, whose run is partial, scores 0% on HTML and Fetch & network. Kitesurf runs its own selection of tests, which explains its low scores on Storage and Fetch & network. We could not reproduce Kitesurf’s results, so its scores are computed from the results it publishes. WPT folders in the selection The selection keeps the WPT folders that matter for web agents: - Page loading: /html/semantics/scripting-1 , /html/syntax , /html/semantics/embedded-content - Forms and interaction: /html/semantics/forms , /html/semantics/interactive-elements , /html/editing , /html/interaction , /focus , /uievents - Cookies and storage: /cookies , /webstorage , /IndexedDB - Network: /fetch , /xhr , /cors , /websockets , /referrer-policy , /mixed-content - Navigation: /html/browsers/history , /html/browsers/browsing-the-web , /html/browsers/the-window-object , /html/semantics/links , /navigation-api , /url - Page scripting: /dom , /shadow-dom , /custom-elements , /html/webappapis , /html/dom , /domparsing , /intersection-observer - Files and text: /FileAPI , /encoding It leaves out four subfolders of /encoding : /encoding/legacy-mb-japanese , /encoding/legacy-mb-korean , /encoding/legacy-mb-tchinese and /encoding/legacy-mb-schinese . These legacy Japanese, Korean and Chinese encodings hold 1.1 million subtests, about 30 times as many as the rest of the URL and encoding area. Including these tests artificially inflates the number of total passing tests, which are not significantly relevant in context. How do you install and host each browser? You can run Lightpanda, Obscura and Moli yourself, without Chrome installed. Lightpanda is the only one that offers an install script, a Docker image, and pip and npm packages, making it the most versatile option to plug into your existing tooling. | | Lightpanda | Obscura | Moli | Kitesurf | |---|---|---|---|---| | Run locally | One-line install script, Homebrew, Arch AUR, .deb package, Docker image lightpanda/browser , pip and npm packages, binaries, build from source | Release archives, nixpkgs, Docker image h4ckf0r0day/obscura , build from source | Install script, release archives | Not available | | Run in the cloud | Lightpanda Cloud | Not available | Lexmount Browser | Cloudflare Browser Run | Lightpanda vs Obscura, Moli and Kitesurf Lightpanda vs Obscura Lightpanda and Obscura both have engines written from scratch, and both embed V8, the JavaScript engine in Chrome. Performance and Web API compatibility are the main differences. At the highest concurrency tested 25 tabs , Lightpanda uses 1.8x less memory and 2.5x less CPU. It finishes the crawl 2.6x faster. Lightpanda passes 2.7x as many subtests on the full web platform suite. Obscura doesn’t support WebDriver. Lightpanda supports both WebDriver Classic and BiDi. Lightpanda vs Moli At the highest concurrency tested 25 tabs , Lightpanda finishes the crawl 3.9x faster and uses 3.4x less CPU. It passes 80% of the web standards subtests, whereas our WPT run of Moli never finished after more than 10 hours. For Selenium scripts or any other WebDriver library, Lightpanda and Moli are the only two options among these AI-native headless browsers, with Lightpanda faster and lighter at scale. Lightpanda vs Kitesurf Since Kitesurf is closed source, we cannot validate its performance benchmarks. Cloudflare only reports on its own selection of tests 11,765 of 38,772 , rather than the full web platform test suite more than three times as many files . Lightpanda is open-source and you can choose whether to run it locally or in our managed cloud. Kitesurf only runs on Cloudflare. Run Lightpanda on your own pages If you want a lightweight and fast browser, install Lightpanda and start the server: curl -fsSL https://pkg.lightpanda.io/install.sh | bash lightpanda serve Then follow the quickstart for Puppeteer, Playwright and other clients https://lightpanda.io/docs/quickstarts/puppeteer-playwright-clients . FAQ What is the best headless Chrome alternative? Lightpanda beats all open-source AI-native headless browsers on Web API compatibility, speed, memory and CPU usage. The memory gains on Lightpanda versus other headless browsers grow with the number of parallel sessions. Is Lightpanda faster than headless Chrome, Obscura and Moli? Yes. In the public crawl benchmark https://lightpanda.io/docs/core-concepts/benchmarks , Lightpanda is about 9x faster and uses about 16x less memory than Chrome. In a separate 940-page crawl, it finishes 3.9x faster than Moli and 2.6x faster than Obscura when many sessions run in parallel. The more tasks you run in parallel, the larger the Lightpanda speed gains are. Which headless browser uses the least memory? Lightpanda is the least memory intensive AI-native headless browser. In a crawl of 940 pages it used about half the memory of Moli and Obscura 109MB against 230MB and 201MB , and the gap grows with the number of parallel sessions. Kitesurf is closed source and reports 37MB per page, but the figures cannot be reproduced. Can I use Playwright, Puppeteer or Selenium with Lightpanda, Obscura, Moli or Kitesurf? Playwright and Puppeteer work with all four, because all four speak CDP: you only have to change the endpoint in your scripts. Selenium works only with Lightpanda and Moli, which implement WebDriver. Lightpanda is the only AI-native headless browser that natively speaks every web automation protocol: CDP, WebDriver and MCP. Which headless browsers have an MCP server? Lightpanda has a native MCP server in the same binary: run lightpanda mcp from any MCP host, such as Claude Desktop or Cursor, and your agent can navigate, read, click and fill pages. Obscura also ships an MCP server. Kitesurf works with MCP clients through Cloudflare, and Moli does not document an MCP server. Pierre Tachoire Cofounder & CTO Pierre has more than twenty years of software engineering experience, including many years spent dealing with browser quirks, fingerprinting, and scraping performance. He led engineering at BlueBoard with Francis and saw the same issues first hand when building automation on top of traditional browsers. He also runs Clermont'ech, a community where local engineers share ideas and projects.