Set up ESPHome on any ESP32 board: flash from the browser with the Web Installer, fall back to a manual install and the Dashboard when Improv serial fails, and create your first device.

ESP32 ESPHome Setup: Web Installer, Dashboard & First Device

Set up ESPHome on any ESP32 board: flash from the browser with the Web Installer, fall back to a manual install and the Dashboard when Improv serial fails, and create your first device.

Getting Started
Last Updated:

Setting up ESPHome on an ESP32 board is usually a five-minute job: flash from your browser, enter your WiFi credentials, and you have a working device. It gets more finicky on newer chips like the ESP32-S3 or the ESP32-C3, where the browser-based flow can fail outright. This guide covers both paths that matter - the ESPHome Web Installer, and the manual install plus dashboard you fall back to when the Web Installer will not cooperate - and every step works the same no matter which ESP32 board you are holding.

10-15 minutes Beginner friendly Works with any ESP32 board

What you need

Hardware

Any ESP32 board - DevKit, WROOM-32, a C3 or S3 Super Mini, ESP32-CAM, a display board like the Elecrow 7-inch... the steps are identical. Not sure what you have? Find your board among 270+ pages →

A USB data cable - a charge-only cable will not show up as a serial port.

Software

Windows, macOS or Linux - every step below works the same on all three.

A Chromium browser for the Web Installer - Chrome, Edge or Opera. Firefox and Safari cannot use it (no WebSerial support).

1Flash from your browser with the ESPHome Web Installer

The ESPHome Web Installer flashes firmware straight from your browser over WebSerial - no local install needed. It is the fastest path to a first working device.

Which browser works? WebSerial is Chromium-only: Chrome, Edge and Opera all support it. Firefox and Safari do not, so Connect will not find your board there.

  1. Plug your board in with a USB data cable, then open web.esphome.io in a supported browser.
  2. Click Connect and pick your board's port from the browser's port picker.
  3. Click Prepare for First Use, then Install, and wait while the firmware writes over the serial connection.
  4. Once it finishes, enter your WiFi network's credentials in the prompt that appears.
ESPHome Web Installer Connect Device
The browser's port picker after clicking Connect
ESPHome Web Prepare for First Use
Prepare for First Use, then Install
ESPHome Successfully Installed
Confirmation once the firmware is flashed

"An error occurred. Improv Wi-Fi Serial not detected." This is a known failure mode on some ESP32-S3 and ESP32-C3 boards: the flash itself succeeds, but the board does not answer on the Improv serial link afterward, usually a USB reset or boot-mode timing issue rather than a broken board. Unplugging and replugging the board sometimes clears it. If it does not, skip to Path 2 below - the manual install always works.

2Install ESPHome manually

When the Web Installer will not cooperate - or you would rather work locally - install the esphome command-line tool and use its dashboard instead.

Windows

Install Python 3.12 or newer, then in a terminal:

py -m venv .venv
.venv\Scripts\activate
pip install esphome

macOS

With Homebrew:

brew install esphome

Linux

Most distros now refuse a plain pip install into the system Python, so use a virtual environment:

python3 -m venv .venv
source .venv/bin/activate
pip install esphome

Check that it installed:

Terminal
esphome version

You should see something like this (the version number moves with every release; this guide was fact-checked against ESPHome 2026.7.4):

Version: 2026.7.4

For anything not covered here, the official ESPHome installation guide stays current with every release.

3Run the ESPHome dashboard

The classic esphome dashboard command is gone as of ESPHome 2026.7.0 (July 2026) - running it just prints a redirect instead of starting anything:

$ esphome dashboard config
ERROR The built-in dashboard has been removed from ESPHome. Install and run ESPHome Device Builder instead:
  pip install esphome-device-builder
  esphome-device-builder
See https://github.com/esphome/device-builder for more information.

The local browser dashboard now ships as its own package, ESPHome Device Builder. Install it alongside esphome and point it at a folder for your configs:

Terminal Copy
mkdir config
pip install "esphome-device-builder[esphome]"
esphome-device-builder config

No sudo, ever: the dashboard listens on port 6052, and only ports below 1024 need elevated privileges on macOS or Linux. An earlier version of this guide told you to run it with sudo - that was simply wrong. If you do hit a real permission error, it is almost always the config folder's ownership, not the dashboard itself.

Once it is running, open http://localhost:6052 in your browser:

ESPHome Device Builder Welcome Screen
ESPHome Device Builder's welcome screen (version 1.14.0, checked live for this guide)

4Install ESPHome on your board from the dashboard

With the dashboard running, add your board as a device:

ESPHome Device Builder device list
Device Builder's device list - Create device sits bottom right (shown here with a first device already added)
  1. Click New Device (labeled Add new device or Create device depending on your version) and give it a name - lowercase letters, numbers and dashes only.
  2. Select the chip your board uses - ESP32, ESP32-S3, ESP32-C3, and so on. Your board's page in the boards database names the right one if you are not sure.
  3. Choose Plug into the computer running the dashboard as the installation method.
  4. Pick the port your board is connected on from the list, then wait for the install to finish in the console that opens.
ESPHome Successfully Installed in Dashboard
A completed install, flashing over USB from the dashboard

Edit your device's configuration

Your board now has a minimal ESPHome configuration and shows up as a device card. Click Edit next to it to open that configuration and start adding sensors, displays, or anything else your project needs.

A device card in ESPHome Device Builder
The device card in Device Builder - status shows Unknown until the board is flashed and online

Worked example: an Elecrow 7-inch display. We first hit the Improv error above while setting up an Elecrow 7-inch ESP32-S3 display board, which is what sent us down Path 2 in the first place. The full device config - display driver, touch, brightness - is written up in configuring the Elecrow 7-inch display.

Frequently asked questions

Do I need sudo to run the ESPHome dashboard?
No. Whether you use the classic esphome dashboard command or its replacement, esphome-device-builder, the local web server binds to port 6052, which does not need elevated privileges on macOS, Linux, or Windows. Running it with sudo only risks creating root-owned files in your config folder.
What happened to the esphome dashboard command?
ESPHome removed the built-in dashboard in version 2026.7.0, released July 2026. Running esphome dashboard now just prints a message pointing you to a separate package, ESPHome Device Builder, which is what this guide uses for the local browser dashboard.
Why does the ESPHome Web Installer fail with 'Improv Wi-Fi Serial not detected'?
This shows up when the freshly flashed board does not answer on its Improv serial link in time, most often on ESP32-S3 and ESP32-C3 boards. Common causes are USB reset timing and the board staying in bootloader mode after flashing. Unplugging and replugging the board sometimes clears it; if not, installing ESPHome manually and using the dashboard skips the Improv step entirely.
Which browsers work with the ESPHome Web Installer?
Chrome, Edge and Opera, because they support the WebSerial API. Firefox and Safari do not implement WebSerial, so the Web Installer cannot connect to a board in either of them.
Can I switch between the Web Installer and the manual install on the same board?
Yes. Both paths just flash the same ESPHome firmware. Starting with the Web Installer does not stop you from switching to a manual install and the dashboard later, or the other way around.

Where to next