esp32.diy

ESPHomeDesigner: Visual Drag-and-Drop ESP32 Display Editor

Oct 13, 2026 · 6 min read

Intermediate 1.1k stars 77 forks JavaScript GPL-3.0 Updated 2026-10-10

Feature walkthrough video showing ESPHomeDesigner's canvas and widget system

TL;DR ESPHomeDesigner is a browser-based visual editor that generates ESPHome display YAML from a drag-and-drop canvas, so you can build rich dashboards for E-Ink, OLED, and LCD panels without hand-coding a single lambda. It runs as a Home Assistant custom integration or a live web app, and supports multiple output formats including ESPHome, OpenEpaperLink, and OpenDisplay.
What you need
  • ESP32
  • ESP32-S3 with PSRAM
  • E-Ink display
  • OLED display
  • LCD + Touch display
  • E1001
  • E1002
  • TRMNL
  • OpenEpaperLink wireless e-paper tags
BoardESP32, ESP32-S3
FrameworkESPHome
LanguageJavaScript
LicenseGPL-3.0
Latest Releasev1.0.0-rc.47
DifficultyIntermediate

What You Will Build

ESPHomeDesigner eliminates the biggest friction point in ESP32 display projects: writing display lambdas and LVGL YAML by hand. Instead, you design your dashboard visually in a browser canvas and the tool generates all the code automatically. The result is a live, data-driven dashboard on any ESP32-connected display — E-Ink, OLED, LCD, or touch — pulling real values from Home Assistant entities.

One design can produce multiple output formats. For ESP32 devices with direct display control, the editor generates native ESPHome C++ lambda code or LVGL YAML. For wireless e-paper price tags running OpenEpaperLink, it produces JSON service calls. For HTTP-driven panels using OpenDisplay, it outputs JSON action payloads. You design once and choose the export format that fits your hardware.

This guide walks you through installing ESPHomeDesigner, preparing your ESP32 device, designing a layout with live entity data, and flashing it — without writing a single line of display code.

Drag-and-drop canvas with live entity data updating in real time\2
Drag-and-drop canvas with live entity data updating in real time
Icon picker with 360+ Material Design Icons for weather states and status indicators\2
Icon picker with 360+ Material Design Icons for weather states and status indicators
Touch-interactive icon areas that trigger Home Assistant actions from the display\2
Touch-interactive icon areas that trigger Home Assistant actions from the display

What You Need

Hardware

Software and accounts

No installation at all is required if you use the hosted live web version at koosoli.github.io/ESPHomeDesigner/. That path still requires a Home Assistant URL and a Long-Lived Access Token to pull entity data onto the canvas.

Typical use cases

Smart Home Status Display

Build an always-on E-Ink or OLED panel showing temperatures, energy usage, weather, and calendar events — all driven by Home Assistant entities with no display code to write.

Wireless E-Paper Tags

Design layouts for OpenEpaperLink wireless e-paper price tags and push updates via Home Assistant service calls, turning cheap shelf tags into live sensor or status displays.

Touch Control Panel

Use LVGL widgets on an LCD + touch display to build an interactive control surface for lights, climate, or alarms — with buttons and sliders that trigger Home Assistant actions directly.

Scheduled Multi-Page Dashboards

Assign time-based visibility windows to pages so a single device automatically rotates between a morning weather briefing, a daytime sensor view, and an evening media status panel.

How It Works

ESPHomeDesigner runs as a Home Assistant custom integration and exposes a visual editor at /esphome-designer. You select a hardware profile — E1001, E1002, TRMNL, or a custom profile you upload — and a canvas sized to your display's exact resolution appears in the browser.

Widgets from a library of 55+ modules (text, icons, graphs, shapes, QR codes, touch areas, and more) can be dragged onto the canvas and connected to live Home Assistant entities or MQTT topics. Entity values update directly on the canvas as you design, so you are looking at real sensor readings, not placeholder text.

As you place and configure widgets, ESPHomeDesigner generates the corresponding ESPHome YAML in real time in a snippet box alongside the canvas. There is no direct flash path from the editor — when the layout looks right, you copy the snippet and paste it into your actual ESPHome device configuration, then compile and flash from the ESPHome dashboard as usual.

Layouts are saved in Home Assistant storage at /config/.storage/esphome_designer. Custom hardware profiles are stored separately at /config/esphomedesigner_custom_profiles/*.yaml. Round-trip editing is supported: you can import an existing ESPHome config, OEPL YAML array, or ODP JSON payload back into the canvas to continue editing visually.

Build and Flash Steps

Step 1 — Install ESPHomeDesigner

The fastest path is the hosted live web app — no installation needed. Open koosoli.github.io/ESPHomeDesigner/, click the gear icon to open Editor Settings, enter your Home Assistant URL and a Long-Lived Access Token (created in your HA profile), and add the designer URL to cors_allowed_origins in your HA configuration.

For a permanent integration embedded inside Home Assistant, HACS is recommended:

  1. Add https://github.com/koosoli/ESPHomeDesigner as a custom HACS repository
  2. Search for "ESPHome Designer" and install it
  3. Restart Home Assistant
  4. Go to Settings → Devices & Services → Add Integration and search for "ESPHome Designer"

For manual installation, copy the custom_components/esphome_designer folder into your Home Assistant config/custom_components/ directory, restart, and add the integration the same way.

To run the editor locally without Home Assistant using the full repository:

npm install
npm run dev

Open http://localhost:5174. If you only have the custom_components folder from a HACS install, serve the frontend directly:

cd custom_components/esphome_designer/frontend
python3 -m http.server 8000

Open http://localhost:8000 and connect via Editor Settings.

Step 2 — Copy the font file

Before any display can render icons, the Material Design Icons font must be in place. Copy font_ttf/font_ttf/materialdesignicons-webfont.ttf from the repository to /config/esphome/fonts/materialdesignicons-webfont.ttf on your Home Assistant system. Create the fonts folder if it does not exist.

Step 3 — Prepare your ESPHome device

Create a new device in the ESPHome dashboard. Let ESPHome generate the base configuration (WiFi, API, OTA). Set the correct ESP platform for your hardware — comments in the generated YAML include guidance for this. Do not flash yet.

Step 4 — Design your dashboard

Open /esphome-designer in Home Assistant (or use the web app). Select your device type, then build out your layout:

Enable Debug Grid in Editor Settings if you need a coordinate overlay for precise placement.

Step 5 — Flash

When the layout is ready:

  1. Copy the generated YAML from the snippet box
  2. Open your ESPHome device configuration
  3. Paste the snippet below ESPHome's auto-generated sections
  4. Compile and flash from the ESPHome dashboard

Hit Save Layout in the editor before you close it. This writes your canvas state to /config/.storage/esphome_designer so you can reopen and edit the layout later without starting over.

Step 6 — Connect to Home Assistant

Once the device is online, go to Settings → Devices & Services. ESPHome will discover it automatically. Configure the integration to connect to its API. If your device has buttons, a buzzer, or onboard temperature and humidity sensors, they will appear as Home Assistant entities ready for use in automations.

Ideas to Extend It — and Limitations to Know

Ways to go further

Limitations to keep in mind

Verdict

ESPHomeDesigner is a well-engineered tool that genuinely removes the hardest part of building ESP32 display projects: it replaces hand-coded lambdas with a live visual canvas and generates correct ESPHome YAML automatically. The HACS installation path and the no-install web app lower the barrier significantly for Home Assistant users, though you still need to understand ESPHome device configuration and the manual copy-paste flash workflow. LVGL support is experimental and should be treated as such, but for E-Ink and standard display builds, the tool is stable and actively maintained.

Sources

github.comkoosoli/ESPHomeDesigner — repository & README

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.