Ladybird Browser Engine: October 2025 Update Highlights Significant Progress
Ladybird's October 2025 update features passing 90% of WPT subtests, new sponsors, persistent HTTP disk cache, performance, and WebGL improvements.
October 2025 has been a highly productive month for the Ladybird browser engine, with 217 Pull Requests merged from 43 dedicated contributors. Let's delve into the key highlights of our progress.
Welcoming New Sponsors
Ladybird's development is entirely sustained by the generous contributions of companies and individuals who champion the open web. This month, we're thrilled to announce the addition of two new sponsors:
- Axeptio: Contributing $10,000 (their announcement)
- Gravwell: Contributing $5,000
We extend our deepest gratitude for their invaluable support. If you're interested in sponsoring the project, please contact us.
Web Platform Tests (WPT)
We've continued to make substantial strides in Web Platform Tests (WPT) this month. We've seen a significant increase in passing subtests, with 111,431 new passing subtests, bringing our total to an impressive 1,964,649.
The majority of this surge stems from a major update to the test suite itself, with 100,751 subtests added, primarily due to the Wasm core tests being updated to Wasm 3.0. This milestone means we've now passed over 90% of all WPT subtests for the first time! This is a crucial achievement, as it is one of the criteria Apple uses to determine eligibility for alternative browser engines on iOS.
For context, here are the current top 6 browser engines and their WPT scores today versus one month ago:

HTTP Disk Cache
Last month, we introduced our in-memory HTTP cache, which operates within a single WebContent process and doesn't persist across browser restarts. This month, we've commenced work on a persistent disk cache (PRs #6435, #6487, #6579, and #6645). This addition provides a second layer of caching, promising significantly faster visits to previously accessed websites.
Performance Work
Numerous performance enhancements were implemented this month, including:
- JS string performance optimizations (PRs #6396, #6400, #6401)
- JS object property assignment optimization (PR #6413)
- Inline caching for JS object property access in C++ (PR #6474)
- Faster add/subtract/multiply of two Int32 values when the result overflows (PR #6414)
- Ignoring repaints inside iframes with
visibility: hidden(PR #6555) - Discarding heavy UTF-32 buffers after parsing HTML (PR #6561)
Trusted Types in the DOM
Building on previous months' work, Trusted Types support has been extended to several DOM APIs, enhancing security:
HTMLIFrameElement:srcdocElement:setAttribute,setAttributeNS,setHTMLUnsafe,innerHTML,outerHTML, andinsertAdjacentHTMLDocument:write,writeln, andparseHTMLUnsafeShadowRoot:setHTMLUnsafeandinnerHTMLDOMParser:parseFromStringRange:createContextualFragmentWorker,SharedWorker, andServiceWorkerconstructors
(PRs #6057 and #6424)
Initial Support for XPath Evaluations
Basic support for XPathEvaluator, XPathExpression, XPathResult, XPathNSResolver, and Document.evaluate was integrated this month. This implementation utilizes libxml2 to perform XPath evaluations on an XML tree compatible with the library, derived from our parsed XML tree (PR #6342).
While a short-term solution, this enables the htmx library to function within Ladybird:

Audio/Video Synchronization and Multi-Track Support
Previously, our media playback relied on separate, often desynchronized, audio and video systems. This has now been replaced with a unified system that controls both audio and video playback, ensuring consistent synchronization (PR #6410). This re-implementation brings several key improvements:
- Asynchronous Seeking: Seeking is now significantly faster, with immediate timeline previews during scrubbing.
- Multi-Track Support: Media elements now expose
audioTracksandvideoTracksproperties, allowing scripts to interact with and toggle multiple audio or video tracks within a file. The system intelligently mixes enabled audio tracks. fastSeek()Compliance: ThefastSeek()function now adheres to the spec, particularly when seeking forward past the current position.
Pinch-to-Zoom Support
Ladybird now supports pinch-to-zoom gestures on macOS (AppKit UI), with the VisualViewport API exposing the zoom transform.
Accessibility DevTools

Following our transition to Firefox's developer tools, we've reinstated the inspection of the accessibility tree. This structure, parallel to the standard element tree, reveals how assistive technologies like screen readers interpret a page. While we don't yet fully support such tools, the ability to examine Ladybird's internal accessibility representation will streamline future integration (PR #6462).
CSS Typed OM Progress
Continuing from last month, we've made further progress on the CSS Typed OM API, which allows authors to manipulate style properties using objects rather than strings. Ladybird now supports setting styles with most types of CSSStyleValue (PRs #6370, #6378, #6440, and #6466).
sibling-count() and sibling-index()
Support for these relatively new CSS functions has been implemented this month (PRs #6426 and #6526). They enable authors to style or animate elements dynamically based on their number of siblings and their position within that list.
CSS and SVG Gradients
Improvements have been made to both CSS repeating linear gradients and SVG gradients using objectBoundingBox units. This results in crisper and more accurate rendering of many such gradients (PRs #6533, #6592).
CanvasPattern
Our preliminary CanvasPattern support, which allows creating image patterns from various sources like canvases, <img> elements, or video frames, previously suffered from graphical artifacts because the pattern wasn't actually used in drawing commands. This has been corrected, leading to the background on slither.io finally rendering correctly (PR #6548).

Improved WebGL2 Buffer Support
We've enhanced support for the WebGL2 .readPixels() method and implemented the .getBufferSubData() method. These are crucial for transferring pixel data between arbitrary buffers, as utilized by libraries like SparkJS (PR #6637).
Improved Offscreen WebGL Framebuffer Support
An issue where offscreen framebuffers were cleared after frame presentation prevented the masked/warped image of stars/nebulae from displaying correctly on the PixiJS homepage demo. This has now been resolved, ensuring the demo appears as intended.
WebGL Progress on Google Maps
Targeted WebGL fixes for Google Maps Globe View have been implemented, including:
- Respecting
UNPACK_FLIP_Y_WEBGL - Returning null for missing uniforms instead of -1
- Calculating the correct pitch for 16-bit textures
These fixes have significantly reduced visual issues in Globe View, though the sky rendering remains the biggest outstanding challenge (PR #6558).
Progress on Windows Support
While not the primary focus for the 2026 alpha release, the community continues to advance Windows support. This month, Ladybird successfully ran on Windows for the first time:

Furthermore, the Gamepad API is now functional on Windows (PR #5981).
Credits
We extend our sincere thanks to everyone who contributed code this month:
Adam Patterson, Adrian Kiezik, Ali Mohammad Pur, Aliaksandr Kalenik, Amish K. Naidu, Andreas Kling, aplefull, ayeteadoe, Ben Eidson, Callum Law, caztanj, Dave-London, Dowsley, Feng Yu, InvalidUsernameException, Jan Koudijs, Jelle Raaijmakers, Johannes Gustafsson, Julian Dominguez-Schatz, Junior Rantila, ljamar, Lorenz A, lukasxcs, Luke Wilde, Manuel Zahariev, mikiubo, Pavel Shliak, Psychpsyo, R-Goc, rmg-x, Rocco Corsi, Sam Atkins, ste, stelar7, Tete17, Tim Ledbetter, Timothy Flynn, Undefine, vedant-pandey, Zaggy1024.
Sign up for our newsletter to receive monthly updates about Ladybird.