Ultralight is a lightweight, high-performance HTML renderer for C/C++ developers that embeds web content into games and desktop applications, built on WebKit and maintained by the Ultralight team.
What is Ultralight?
Ultralight is a platform-agnostic port of WebKit designed to render HTML, CSS, and JavaScript in native applications. It takes web content as input and outputs either a 32-bit BGRA pixel buffer through its CPU renderer or a GPU texture through its GPU renderer. The SDK provides pre-built binaries for Windows x64, Linux x64, and macOS x64, and the library also supports Xbox, PS4, and PS5 (with ARM64 support coming in version 1.4). The renderer is engineered for constrained environments, giving developers control over performance and memory usage.
Key Features
- Modern HTML/JS/CSS support — Based on WebKit, Ultralight supports current web features similar to Apple's Safari browser, simplifying web-content development in native apps.
- Dual CPU and GPU renderers — The CPU renderer uses Skia with multi-threaded SIMD acceleration and outputs to a BGRA pixel buffer; the GPU renderer renders to a texture via tessellated geometry and pixel shaders, allowing custom GPU drivers.
- Cross-platform compatibility — Officially supports Windows, macOS, Linux, Xbox, PS4, and PS5; SDK archives are downloadable for Windows x64, Linux x64, and macOS x64, with ARM64 planned for version 1.4.
- Deep JavaScriptCore integration — C/C++ code can expose native state to web pages, extend JavaScript classes, and define callbacks through direct access to JavaScriptCore.
- Low-level platform customization — Override platform-specific behavior such as file-system access, clipboard management, and font loading to match each target environment.
- AppCore framework — An optional open-source (LGPL) desktop-app runtime that adds native window management and accelerated rendering for developers who don't want to manage their own run loop.
Who is it for?
Ultralight is aimed at C/C++ developers building native applications that need web content.
- Game developers — Integrate high-performance HTML/JS/CSS UI into game engines across hardware targets; choose the CPU renderer for fast, reliable rendering or the GPU renderer for animation-heavy scenes.
- Desktop application developers — Save time by building front-ends with web technologies while retaining C/C++ performance; embed the renderer in an existing run loop or use AppCore for window management.
- Indie companies — Use Ultralight free for commercial projects if annual revenue is under $100,000, making it accessible for small studios.
What can you do with Ultralight?
- Expose native C++ state to web pages — Use the JavaScriptCore API to bridge native data into the renderer's JavaScript context, enabling real-time updates between your app and its UI.
- Build custom platform integrations — Override file-system access, clipboard management, and font loading so the renderer behaves natively in each target environment.
- Render on either CPU or GPU — For CPU rendering you get a 32-bit BGRA pixel buffer ready for display; for GPU rendering you get a texture accelerated by shaders, with support for custom GPU drivers.
Pricing and licensing
Ultralight offers a dual licensing model. A free license covers non-commercial use and commercial use by indie companies with annual revenue under $100K; the full SDK is available to all users. Paid commercial licenses cover enterprise usage and include options for custom contracts, volume discounts, performance tools, extra configurations, and source code.
FAQ
Is Ultralight free?
Ultralight is free for non-commercial projects and for commercial projects from indie companies earning less than $100K in annual revenue. Larger companies must purchase a commercial license. The full SDK is downloadable for evaluation by anyone.
Which platforms does Ultralight support?
Windows (x64), Linux (x64), and macOS (x64) have downloadable SDK binaries. The renderer also supports Xbox, PS4, and PS5, with ARM64 support scheduled for version 1.4.
What renderers does Ultralight provide?
Ultralight ships with two renderers: a CPU renderer based on Skia that outputs to a 32-bit BGRA pixel buffer, and a GPU renderer that renders to a texture using tessellated geometry and pixel shaders. Both are customizable.
How is Ultralight integrated with C/C++?
Web content is rendered into a buffer or texture that you display yourself. The JavaScriptCore integration lets C/C++ code expose native data, extend JavaScript classes, and define callbacks. The optional AppCore framework provides native windows and rendering loops for desktop apps.





