Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
RmlUi - The HTML/CSS User Interface library evolved
RmlUi is an open-source C++ user interface library that takes HTML/CSS-like markup (RML and RCSS) and produces vertices, indices, and draw commands for your own renderer, targeting games and real-time applications. It is a fork of libRocket, adding new features, bug fixes, and performance improvements, and is maintained on GitHub under the MIT license.
RmlUi is a C++ library that implements its own layout engine based on XHTML1 and CSS2 standards, with selected HTML5 and CSS3 features, designed as a complete solution for a project's interface needs. It takes RML documents (HTML-like tags such as input, textarea, and select) and RCSS style sheets as input, and outputs geometry and draw commands through an abstract render interface; it also provides full DOM access, event handling, and interactivity. The core library is a fraction of the size of integrating a full web browser, and it depends only on FreeType for fonts (replaceable) and the C++ standard library. C++17 is required.
hello_world sample.data_binding sample.After linking the library, you implement the render interface, initialize RmlUi, create a context, load fonts, and load a document. In your main loop, you submit input events, call the context's update and render methods, and present your frame. RmlUi only executes when you call its API — it never runs in the background — and you control when input, rendering, and file handling occur.
Yes, RmlUi is published under the MIT license. Third-party source code included in the core is MIT-licensed, debugger fonts use the SIL Open Font License, and the Vulkan backend's bundled library is MIT-licensed as well.
Windows, Linux, macOS, Android, iOS, and Switch are listed as supported platforms. Renderer backends include OpenGL 2 and 3, Vulkan, SDL GPU, SDLrenderer, and DirectX 12, with feature support varying by backend.
No, RmlUi has its own layout engine and outputs vertices, indices, and textures for your renderer. It is based on XHTML1/CSS2 with some HTML5/CSS3 features, but does not aim for full CSS or HTML compliance.
Build with CMake or install via vcpkg, implement the render interface, initialize the library, create a context, load a document, and call update and render each frame. Many backends are included to get started quickly.
Yes, the FreeType dependency can be fully replaced by a custom font engine through the provided font engine interface.
