Home

Awesome

Headless Browsers

A list of (almost) all headless web browsers in existence

A web browser without a graphical user interface, controlled programmatically. Used for automation, testing, and other purposes.

<div align="center"> Sponsored by <a href="https://www.browserbase.com">🅱️ Browserbase</a>: Hosted Headless Web Browsers with built-in session recording, auto-scaling, proxies and captcha solving.<br/> Compatible with Puppeteer, Playwright, and Selenium. </div>

Browser engines

These browser engines fully render web pages or run JavaScript in a virtual DOM

NameAboutSupported LanguagesLicense
Chromium Embedded FrameworkCEF is a open source project based on the Google Chromium project.JavaScriptBSD
ErikHeadless browser on top of Kanna and WebKit.SwiftMIT
jBrowserDriverA Selenium-compatible headless browser which is written in pure Java. WebKit-based. Works with any of the Selenium Server bindings.JavaApache License v2.0
PhantomJS[Unmaintained] PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.JavaScript, Python, Ruby, Java, C#, Haskell, Objective-C, Perl, PHP, R(via Selenium)BSD 3-Clause
SplashSplash is a javascript rendering service with an HTTP API. It's a lightweight browser with an HTTP API, implemented in Python using Twisted and QT.AnyBSD 3-Clause
SurfSurf is an open source project that implements a virtual web browser that can be controlled programaticallyGoMIT

Multi drivers

These libraries can control multiple browser engines (typically using Selenium)

NameAboutSupported LanguagesLicense
CasperJS[Unmaintained] CasperJS is an open source navigation scripting & testing utility written in Javascript for the PhantomJS WebKit headless browser and SlimerJS (Gecko).JavaScriptMIT
GebGeb is a Groovy interface to WebDriver.GroovyApache
PlaywrightPlaywright is a Node library to automate the Chromium, WebKit and Firefox browsers with a single APITypeScriptApache
playwright-dotnetPlaywright for .NET is a library to automate Chromium, Firefox and WebKit browsers with a single API..NETMIT
playwright-pythonPlaywright for Python is a library to automate Chromium, Firefox and WebKit browsers with a single API.PythonApache
playwright-javaPlaywright for Java is a library to automate Chromium, Firefox and WebKit browsers with a single API.JavaApache
playwright-goPlaywright for Go is a library to automate Chromium, Firefox and WebKit browsers with a single API.GoMIT
SeleniumSelenium is a suite of tools to automate web browsers across many platforms.JavaScript, Python, Ruby, Java, C#, Haskell, Objective-C, Perl, PHP, R, C++Apache
SplinterSplinter is an open source tool for testing web applications using Python. It lets you automate browser actions, such as visiting URLs and interacting with their items.Python-
SSTSST (selenium-simple-test) is a web test framework that uses Python to generate functional browser-based tests.Python-
WatirThe most elegant way to use Selenium WebDriver with Ruby.RubyMIT

PhantomJS drivers

These libraries control PhantomJS

NameAboutSupported LanguagesLicense
GhostbusterAutomated browser testing via phantom.js, with all of the pain taken out! That means you get a real browser, with a real DOM, and can do real testing!JavaScriptNot specified
jedi-crawlerLightsabing Node/PhantomJS crawler; scrape dynamic content : without the hassleJavaScriptNot specified
LotteLotte is a headless, automated testing framework built on top of PhantomJS and inspired by Ghostbuster.JavaScriptMIT
phantompyPhantompy is a headless WebKit engine with powerful pythonic api build on top of Qt5 WebkitPythonLGPL-2.1
X-RAYSupports strings, arrays, arrays of objects, nested object structures, selector API, pagination, crawler, concurrency, throttles, delays, timeouts, and pluggable drivers (PhantomJS, HTTP)JavaScriptMIT
HorsemanPromise based Node.js module for PhantomJS. Features chainable API, understandable control-flow, support for multiple tabs, and built-in jQuery.JavaScriptMIT

Chromium drivers

These libraries control Chromium

NameAboutSupported LanguagesLicense
AwesomiumChromium-based headless browser engineC++, .NETFree/Commercial
Headless ChromiumChromium feature activated with the --headlesss flag, currently availible in the nightly build of Chromium, not yet releasedC++Opensource
PuppeteerHeadless Chrome Node API from the Chrome DevTools teamJavaScriptApache
PuppeteerSharpPuppeteerSharp is a .NET port of the official Headless Chrome Node.JS Puppeteer API.NETMIT
chrome-remote-interfaceChrome Debugging Protocol interface for Node.jsJavaScriptMIT
ChromyFeatures chainable API, mobile emulation, fundamental API such as javascript evaluation.JavaScriptMIT
chromedpA faster, simpler way to drive browsers (Chrome, Edge, Safari, Android, etc) without external dependencies (ie, Selenium, PhantomJS, etc) using the Chrome Debugging Protocol.GoMIT
ChromelessChrome automation made simple. Runs locally or headless on AWS Lambda.JavaScriptMIT
Chrome PHPPHP API to drive Chromium or Google Chrome via the Chrome Devtools Protocole.PHPFair
WendigoTest-oriented browser automation library using Puppeteer.JavaScriptGPL-3.0
cdp4jA web-automation library for Java. It can be used for automating the use of web pages and for testing web pages. It use Google Chrome DevTools Protocol to automate Chrome/Chromium based browsers.Javacdp4j Commercial License
PyppeteerPython port of puppeteer JavaScript (headless) chrome/chromium browser automation libraryPythonMIT
Headless ChromeA high-level API to control headless Chrome or Chromium over the DevTools Protocol.RustNone

Webkit drivers

These drivers control an in-process instance of Webkit

NameAboutSupported LanguagesLicense
BrowserjetRuns a custom build of webkit, controlled by node.js interface.JavaScriptNot specified
ghost.pyghost.py is a webkit web client written in python.PythonMIT
headless_browserHeadless browser based on WebKit written in C++.C++Not Specified
Jabba-WebkitJabba's headless webkit browser for scraping AJAX-powered webpages.PythonNot specified
Jasmine-Headless-Webkitjasmine-headless-webkit uses the QtWebKit widget to run your specs without needing to render a pixel.Python, JavaScript, RubyFree
Python-WebkitPython-Webkit is a python extension to Webkit to add full, complete access to Webkit's DOMPythonGNU
SpynnerProgrammatic web browsing module with AJAX support for PythonPythonNot specified
WebloopScriptable, headless WebKit with a Go API.GoBSD 3-Clause
wkhtmltopdf wkhtmltox wkhtmltoimageCommand line tool rendering HTML into PDF and other image formats.shell, CLGPLv3
WKZombieFunctional headless browser (with JSON support) for iOS using WebKit and hpple/libxml2.SwiftMIT

Other drivers

These libraries control lesser known browsers or OS-provided web libraries

NameAboutSupported LanguagesLicense
CypressCypress supports end-to-end, integration and unit tests and makes debugging tests simple. Default engine is headless Electron.JavaScriptMIT
NightmareNightmare is a high-level browser automation library built as an easier alternative to PhantomJS. It runs on the Electron engine.JavaScriptMIT
gropeA RubyCocoa interface to the macOS WebKit FrameworkRubyCocoaMIT
SlimerJSSlimerJS is similar to PhantomJs, except that it runs Gecko, the browser engine of Mozilla Firefox, instead of Webkit (And it is not yet truly headless).JavaScriptMozilla 2.0
SpecterJSA scriptable headless Internet Explorer port of PhantomJS.JavaScriptMIT
trifleJSA headless Internet Explorer browser using the .NET WebBrowser Class with a Javascript API running on the V8 engine.JavaScriptMIT

Fake Browser Engine

These libraries are typically naive or HTML-only browsers

NameAboutSupported LanguagesLicense
AngleSharp.Net Http Parsing Library.NETMIT
GuillotineA .NET headless browser, written in C#.NETLGPL-3.0
benvStub a browser environment in node.js and headlessly test your client-side code.JavaScriptMIT
browser.rbHeadless Ruby browser on top of Nokogiri and TheRubyRacerRubyNot specified
BrowserKitBrowserKit simulates the behavior of a web browser.PHPMIT
DamonJSBot navigating urls and doing tasks.JavaScriptApache
HeadlessHeadless browser support for fast web acceptance testing in .Net.NETMIT
HeadlessBrowserA very miniature headless browser, for testing the DOM on Node.jsJavaScriptNot specified
HtmlUnitHtmlUnit is a "GUI-Less browser for Java programs".JavaApache
JauntJava Web Scraping & Automation APIJavaApache (monthly edition)
JauntiumFree Java library that allows you to easily automate Chrome, Firefox, Safari, Edge, IE, and other modern web browers.JavaApache
JSDomA JavaScript implementation of the WHATWG DOM and HTML standards, for use with Node.js.JavaScriptMIT
MechanicalSoupA Python library for automating interaction with websites.PythonMIT
mechanizeStateful programmatic web browsing.PythonBSD 3-Clause, ZPL 2.1
node-as-browserCreate a browser-like environment within Node.jsJavaScriptMIT
RoboBrowserA simple, Pythonic library for browsing the web without a standalone web browser.PythonBSD 3-Clause
SimpleBrowserA flexible and intuitive web browser engine designed for automation tasks. Built on the .Net 4 framework..NETBSD 3-Clause
twillTwill is a simple language that interacts with basic HTML pages (no JavaScript support).PythonMIT
WeasyPrintWeasyPrint is a visual rendering engine for HTML and CSS that can export to PDF. It aims to support web standards for printing.PythonBSD 3-Clause
WWW::MechanizeHeadless browser for Perl with many plugins and extensions, notably Test::WWW:Mechanize for testingPerlPerl 5
X-RAYSupports strings, arrays, arrays of objects, nested object structures, selector API, pagination, crawler, concurrency, throttles, delays, timeouts, and pluggable drivers (PhantomJS, HTTP)JavaScriptMIT
Xidel (Internet Tools)An XQuery-based cli web scraper for static X/HTML pages and JSON-APIs.FreePascal, XQueryGPL-2
Zombie.jsZombie.js is a lightweight framework for testing client-side JavaScript code in a simulated environment. No browser required.JavaScriptMIT

Runs in a browser

NameAboutSupported LanguagesLicense
DalekJS[unmaintained and recommend TestCafé] Automated cross browser testing with JavaScript.JavaScriptMIT
TestCaféAutomated browser testing for the modern web development stack.JavaScriptMIT
SahiSahi is a cross-browser automation/testing tool with the facility to record and playback scripts.JavaScript, Java, Ruby, PHPApache / Commercial
WatiNWeb Application Testing In .Net.NETApache 2.0

Misc tools

NameAboutSupported LanguagesLicense
browser-launcherDetect and launch browser versions, headlessly or otherwiseJavaScriptMIT
Headless RecorderChrome extension that records your browser interactions and generates a Playwright or Puppeteer scriptJavaScriptMIT