lvgl /lvgl
LVGL is a free, full-featured embedded UI library for devices from small MCUs to 3D-capable MPUs, enhanced by LVGL Pro, a professional editor and tooling.
★ 25,144⑂ 4,446👁 319⑃ 6,454● 4,498▤ 72◈ 0
25,144
stars
4,446
forks
319
watchers
6,454
prs
4,498
issues
72
releases
0
discussions
README
Docs • Forum • Blog • Services EN • 中文 • 日本語 • 한국어 • PT • עברית Light and Versatile Graphics Library Overview • Features • LVGL Pro • Examples • Integration • Contributing • License Overview LVGL is a free and open-source UI library that enables you to create graphical user interfaces for any MCUs and MPUs from any vendor on any platform. Requirements: LVGL has no external dependencies, which makes it easy to compile for any modern target, from small MCUs to multi-core Linux-based MPUs with 3D support. For a typical UI, you need only ~100kB RAM, ~200–300kB flash, and a buffer size of 1/10 of the screen for rendering. Wide adoption: Chip vendors (like NXP, Espressif, Renesas, and so on), RTOS projects (Zephyr, NuttX, etc.), and board manufacturers (Riverdi, Seeed Studio, VIEWE, Elecrow, etc.) have all integrated LVGL already. If a development board has a display, it's very likely the vendor offers LVGL support too. Professional tools: Instead of writing C code, you can hugely speed up and simplify UI development by using LVGL Pro, a complete toolkit with Editor, Figma integration, Online Viewer, and CLI. It exports pure LVGL C code from XML, with no extra runtime or hidden magic. It's free for non-commercial use and evaluation. To get started, browse the Examples, spin up a Simulator project, explore the Online Viewer of LVGL Pro, compile and run a UI in a window in LVGL Pro with one click, or dive into our AI-ready Docs. Just click Ask AI and ask anything! Features Free, Portable, and Scalable - A fully portable C (C++ compatible) library with no external dependencies. - Can be compiled for any MCU or MPU, with any (RT)OS. Make, CMake, and simple globbing are all supported. - Supports monochrome, ePaper, OLED, or TFT displays, or even monitors. Displays - Distributed under the MIT license, so you can easily use it in commercial projects too. - At a bare minimum needs only 32kB RAM and 128kB Flash, a frame buffer, and at least a 1/10 screen-sized buffer for rendering. - OS, external memory, and GPU are supported but not required. Widgets, Styles, Layouts, and More - 30+ built-in Widgets: Button, Label, Slider, Chart, Keyboard, Meter, Arc, Table, and many more. - Flexible Style system with 100+ style properties to customize any part of the widgets in any state. - Flexbox and Grid-like layout engines to automatically size and position the widgets responsively. - Data bindings to easily connect the UI with the application. - Supports Mouse, Touchpad, Keypad, Keyboard, External buttons, Encoder Input devices. - Multiple display support. Rendering - Built-in 2D rendering engine supporting basic shapes, gradients, anti-aliasing, opacity, smooth scrolling, box and drop shadows, image transformation, etc. - Powerful 3D rendering engine to show glTF models with OpenGL. - Vector graphics, SVG, and Lottie support. - Text is rendered with UTF-8
Top issues
#7822Generic MIPI display driver and `user_data` access16 comments · 2025-02-21#4910[Feature Request] Create and draw widget on canvas12 comments · 2023-12-01#9907Scale ticks are not drawn accurately11 comments · 2026-03-25#10772Clarify the supported gen_json workflow for exporting macros after the docs migration9 comments · 2026-09-26#10838Add ABGR8888 (0xAABBGGRR / RGBA byte order) color format for WebAssembly / canvas outputs8 comments · 2026-10-16#10322[lv_spinner]: after spinning for >1 hour, spinner glitches6 comments · 2026-07-01#10049Unable to build with ESPIDF 6.0.0 usig PlatformIO6 comments · 2026-05-02#10775D/AVE 2D broken for displays with higher resolution than 1024x10245 comments · 2026-09-28
Latest release
Release v9.6.0 v9.6.0 2026-09-16See the CHANGELOG