What is Ladybird?
Ladybird is a web browser whose rendering engine, JavaScript engine and WebAssembly implementation are written by the project itself rather than taken from Blink, WebKit or Gecko. It is developed by the Ladybird Browser Initiative, a US 501(c)(3) non-profit led by founder and president Andreas Kling, with a small full-time engineering team and community testers. The project states it will not take money from default search deals, crypto tokens or other forms of user monetization; sponsorships are unrestricted donations and do not buy board seats or roadmap influence.
The code started in June 2019 as LibHTML inside SerenityOS, was named Ladybird in July 2022, became a separate cross-platform project in September 2022 and was forked away from SerenityOS in 2024, when the non-profit was launched. Many core libraries still carry that history: LibWeb (HTML, CSS, DOM), LibJS, LibWasm, LibCrypto and LibTLS, LibGfx, LibMedia, LibUnicode and LibIPC. Third-party libraries such as Skia, HarfBuzz, simdutf and libcurl are used for common functionality, and dependencies are managed through vcpkg. The project FAQ gives the full timeline.
Ladybird is pre-alpha and has no published GitHub release. The supported way to try it is to clone the repository and run ./Meta/ladybird.py run, following the build instructions. The official roadmap targets a 2026 alpha for Linux and macOS aimed at developers and early adopters, a 2027 beta with a downloadable app, and a 2028 stable release. The October 2026 update reports release build tooling for macOS archives, Linux tarballs, .deb and .rpm packages and Flatpak bundles, a crash reporter and a first-run welcome page in preparation for that alpha.
Recent monthly updates describe large engine changes: style and layout moved to their own thread so CSS animations and :hover keep working while JavaScript runs, an optimizing JavaScript JIT on x86-64 and AArch64, a new WebAssembly engine with exception handling and GC, and a redesigned Qt interface with light, dark and private themes. In February 2026 the project adopted Rust as its successor language to C++; the LibJS runtime and CSS style computation are now Rust, while much of the engine remains C++23.
The source is released under the 2-clause BSD license. Since June 2026 the project no longer accepts public pull requests: code enters only through maintainers, while bug reports, reductions, site testing and security reports remain open to everyone. Native Windows builds, mobile apps and browser extensions are outside the current scope.
Ladybird screenshots
Explore the interface. Open a screenshot to view it at full size.

The redesigned Ladybird interface from October 2026, showing tabs, the address bar and the project home page.

Per-site popover with autoplay, force dark mode, content blocking and a count of blocked requests.

The about:settings page with startup, force dark mode, autoscrolling and crash report options.

Native Task Manager showing separate renderer processes per site, with PID, CPU and memory columns.

Official diagram of the per-site processes behind two tabs, as of October 2026.

A test page rendered in Ladybird using CSS and MathML features that landed in October 2026.
Source: official Ladybird project page.
Key capabilities
- An engine written from the specifications LibWeb implements HTML, CSS, the DOM and Web APIs by following spec algorithms step by step, with spec text quoted in code comments and an AD-HOC marker for behaviour that has no spec basis. It is not a shell around Blink or a WebKit port. Current conformance is published on wpt.fyi; the project reports about 2.18 million passing Web Platform Tests subtests at the end of October 2026.
- LibJS JavaScript engine The JavaScript engine is written from scratch and is tested against test262. Its runtime has moved from C++ to Rust, and since October 2026 an optimizing JIT compiles hot code to machine code on Linux and macOS for x86-64 and AArch64, using type profiling and inlining. Recent language additions include
usingandawait using. - WebAssembly engine A new Rust Wasm engine with its own interpreter and JIT replaced the older C++ engine and Cranelift in October 2026. It adds WebAssembly exception handling and GC, and the project reports roughly seven times higher JetStream 3 Wasm scores on the workloads both engines could run.
- Multi-process architecture A Browser process owns the UI, cookies, storage and history, while WebContent renderers, WebWorker, RequestServer (networking), ImageDecoder, Compositor, MediaServer, AudioServer, VideoDecoderServer and WebRTCClient run as separate helpers. The process architecture document lists when each is launched and how they connect over IPC.
- Site isolation by default The
--site-isolationoption defaults toiframe, so cross-site frames and popups get their own renderer. Each top-level site gets its own network process with a separate HTTP cache and third-party cookie partition, and each renderer has its own audio process and image decoder. Local file content and internal about: pages run in dedicated processes. - Per-process sandboxing Every helper sandboxes itself at startup: seccomp and Landlock on Linux, Seatbelt with the hardened runtime on macOS. Linux helpers refuse to start without Landlock by default. Windows has no sandbox yet, and
--disable-sandboxturns sandboxing off for debugging. - Off-main-thread rendering Style and layout run on a render thread and paint recording on another, so CSS animations, including layout-changing ones, and :hover styles keep updating while a script blocks the main thread. The compositor also runs scrolling, animated images and eligible opacity, transform and filter animations independently of the page.
- Built-in content blocking Ladybird supports user-configured filter lists. The Blocking settings can download EasyList and other lists for ads, tracking and cookie notices, or a custom list URL, with optional updates at startup and daily. Blocking can be switched off per site from the toolbar. Extension support, including uBlock Origin, is an open issue rather than a shipped feature.
- Qt desktop interface Qt 6.10 or newer is the only desktop frontend. The October 2026 redesign covers tabs, toolbars, menus and about: pages in light, dark and a violet private-window theme, with pinned tabs, tab search, session restore, a date and time picker, smooth scrolling and overlay scrollbars. An Android UI exists in the tree for development builds.
- Browsing features Development during 2026 added private browsing, browser profiles, download management, browsing history, force-dark mode for pages without a dark theme, find-in-page highlighting, Picture-in-Picture, text fragment links, location and microphone permission prompts, spell checking on macOS and image pasting into editable content.
- Media playback Audio and video decoding run in a separate media process. macOS uses VideoToolbox for H.264, HEVC, VP9 and AV1 hardware decoding, and Linux uses Vulkan. Patent-encumbered H.264, HEVC and AAC decoders are not bundled; Linux loads them from the system FFmpeg when present. MP4 parsing is done by Ladybird itself.
- Developer tools and Task Manager Ladybird exposes a DevTools server documented in the DevTools guide, with DOM inspection, Inspect Element, storage inspection, JavaScript debugging and console autocomplete. A native Task Manager shows each process with PID, CPU and memory use and an End Process action.
- WebDriver automation A WebDriver service can launch the browser headless, navigate, evaluate JavaScript and capture screenshots, and accepts
--resource-mapto substitute local files for remote resources. WebDriver BiDi support started in October 2026. See the WebDriver guide. - Screen reader support First support for VoiceOver on macOS and Orca on Linux landed in October 2026. The project states that much accessibility work remains, so assistive technology users should treat it as early.
- Build on Linux Requirements are a C++23 compiler (CI uses gcc 16 and clang 22), CMake 3.30 or newer, Qt 6.10 or newer, nasm and a Rust toolchain. Package lists are documented for Debian and Ubuntu, Arch, Fedora and openSUSE. Debian 13 ships Qt 6.8, so a newer Qt must be installed and passed through
CMAKE_PREFIX_PATH. - Build on macOS, Windows and FreeBSD MacOS builds can use Homebrew LLVM. On Windows, WSL2 with Ubuntu or Fedora is the supported route; a native clang-cl build is experimental and MinGW or MSYS2 are not supported. FreeBSD has its own package list. Release and Debug presets are available, and
LAGOM_LINK_POOL_SIZElimits parallel links on machines with little memory. - Crash reports and site reports After a crash, a report can be reviewed and sent to the project only if the user chooses. Broken sites can be reported from inside the browser, and the project documents its web compatibility report process for contributors.
Where Ladybird fits
Testing a website against an independent engine
Web developers can build Ladybird from source and load their own pages to find markup or script that only works because of Chromium or WebKit behaviour. Check layout, forms, media and login flows, then compare failures with the current Web Platform Tests results before assuming a site bug. Report problems as reductions on the issue tracker following the issue policy.
Automated rendering checks with WebDriver
The WebDriver service can drive a headless Ladybird session from any WebDriver client, load pages, run JavaScript and save screenshots. The --resource-map option replaces remote resources with local files while keeping their URLs, which suits reproducible tests of a single page. Confirm which WebDriver commands your test framework needs, since BiDi support is new.
Studying how a browser engine works
The codebase follows the specifications closely, with class names that match spec terms and spec steps quoted inline. Documentation covers the process model, navigables, the event loop, loading to painting and LibWeb patterns. Students and engineers can read a complete browser that is roughly the size of Servo and about a fifteenth of WebKit in C++ lines, according to the project FAQ.
Evaluating browser security architecture
Security engineers can review the sandbox files for each service, the site isolation modes and the IPC trust boundaries. The September 2026 update describes a week of review with Trail of Bits and fixes such as stopping renderers from reading arbitrary files or faking user activation. Private vulnerability reporting is enabled under the security policy; there is no bug bounty.
Packaging Ladybird for a distribution
Packagers can build with a custom CMake directory from the Release preset and use the install rules in UI/cmake/InstallRules.cmake. Resource files from Base/res must land under CMAKE_INSTALL_DATADIR relative to the install prefix, and PDF viewing needs a patched PDF.js distribution, which the vcpkg port and the Flatpak module already provide. Check that the system FFmpeg supplies any codecs you expect, because patent-encumbered decoders are not bundled.
Following and supporting the alpha
Early adopters can follow the monthly newsletter, test daily sites and report breakage from the in-browser reporter. Expect gaps: some sites fail, Windows lacks a sandbox, and extensions are not supported. Organizations that want the project to exist can donate or sponsor through the official tiers, which carry no roadmap rights.
Install
git clone https://github.com/LadybirdBrowser/ladybird.git && cd ladybird && ./Meta/ladybird.py runReviews of Ladybird
Be the first to share your experience with Ladybird.
Write a review
Loading review form…
