Design a screen once. Get the code for 10 targets.
Draw your interface on a canvas the size of your real display, and export clean code for LVGL, Arduino, MicroPython, Tkinter, PySide6, Slint or the web, arranged for STM32CubeIDE, PlatformIO, Arduino IDE or ESP-IDF.
Free to try without an account. Your design stays in your browser.
The smart thermostat example (3.5″ 480×320 generic), exactly as guilab exports it to HTML. Try the + and − buttons and Schedule.
- code targets
- 10
- kinds of widgets
- 27
- ready-made examples
- 35
- displays and boards
- 50
From a sketch to your firmware in three steps
guilab only writes the interface. Your project, your main program and your hardware set-up stay yours.
- 1
Pick your display
Choose the module or board you use from 50 presets (M5Stack, Cheap Yellow Display, LILYGO, Waveshare and bare modules), or type any size.
- 2
Draw the screens
Drag 27 kinds of widgets onto a canvas of exactly that size: buttons, sliders, gauges, charts, keyboards. Link buttons to other screens.
- 3
Export for your project
Choose the target and your tool. You get one folder with the UI files and a short README that says where it goes in the project you already have.
Made for people who ship devices
10 targets from one design
LVGL 9 and 8, LVGL MicroPython, Arduino_GFX, TFT_eSPI, MikroE Visual TFT, Tkinter, PySide6, Slint and HTML. Switch target any time; the design stays the same.
Your code survives every export
Each export has exactly one file that is yours. What you write between its USER CODE markers is merged back in when you export again, like STM32CubeIDE does.
Arranged for your tool
STM32CubeIDE, PlatformIO, Arduino IDE, ESP-IDF, a Python editor or Thonny: the files come in the layout that tool expects, with a step-by-step README.
Several screens, real navigation
A button can open another screen. guilab writes the screen-switching code for every target.
Components and a screen library
Save a group of widgets as a component and reuse it. Add ready-made screens (5 so far: launcher, settings, Wi-Fi, PIN pad, dialog) laid out for your display.
Backgrounds, gradients, icons
Built-in backgrounds, a gradient maker, your own pictures, and 161 icons in 3 sets, with their licenses added to the export.
Checked with the real tools
The test suite compiles the generated C against the real LVGL 9.2.2 and 8.4.0 headers, runs the Python, and opens the HTML in a real browser.
Honest about each widget
Not every target has every widget. The editor shows, per widget and target, whether it is native, emulated or approximated, before you export.
Free to try, no account
Open the editor and start. Your design is kept in your browser; save it as a file whenever you like. An account adds cloud projects and more targets.
Start from an example
35 designs for medical, automotive, industrial, home and IoT devices, from a 1.28″ round watch to a 7″ panel. These are their real HTML exports.
Smart home hub
Home automationA wall-panel overview of the whole home, plus a security screen with sensor status lights and a PIN keypad.
7.0″ 800×480 generic
Instrument cluster
AutomotiveA digital dashboard: RPM and efficiency gauges around a large speed readout, warning lights, fuel and temperature bars, and a trip screen.
7.0″ 800×480 generic
Smartwatch face
PortableA round watch face with a step ring, time, heart rate and battery, plus an app menu.
1.28″ 240×240 generic (round)
Machine control panel
IndustrialAn operator HMI for an extruder line: process trend, live values, setpoints, start/stop/reset and an alarm list.
7.0″ 800×480 generic
Weather station
Appliances & mediaCurrent conditions in cards, a seven-day forecast bar chart, a city selector and an hourly table.
3.5″ 480×320 generic
EV charging station
AutomotiveCharge status with a state-of-charge ring, power, energy, time and cost, and a receipt screen with an email field.
3.5″ 480×320 generic
One design, ten outputs
Microcontrollers, a Raspberry Pi, a desktop app or a browser kiosk: the same screens become code for each. Three targets need no account at all; a free account and the Regular plan open the rest.
See the plans →| Target | Language | Runs on | Available with |
|---|---|---|---|
| HTML / CSS / JS | HTML, CSS, JavaScript | Any browser, kiosks | No account needed |
| LVGL v9 | C | STM32, ESP32, RP2040 and other MCUs | No account needed |
| Tkinter / ttkbootstrap | Python | Raspberry Pi, any desktop | No account needed |
| LVGL v8 | C | Projects still on LVGL 8 | Free account |
| PySide6 / Qt | Python | Raspberry Pi, any desktop | Free account |
| Slint | Slint + Python | Embedded Linux and desktop | Regular plan |
| LVGL MicroPython | MicroPython | ESP32 and others with LVGL MicroPython | Regular plan |
| Arduino_GFX | C++ (Arduino) | Arduino boards with a TFT | Regular plan |
| TFT_eSPI | C++ (Arduino) | ESP32 / ESP8266 / RP2040 with a TFT | Regular plan |
| MikroE Visual TFT | C (mikroC) | MikroElektronika boards | Regular plan |
Ready to draw your first screen?
Open the editor, pick your display, and export. No sign-up, nothing to install.