WLED Setup with ESP32-S3: Complete LED Strip Guide
Flash WLED onto an ESP32-S3, wire a WS2812B addressable LED strip, and control thousands of effects from your phone or Home Assistant. This beginner-friendly guide covers wiring, power calculations, and integration in under 45 minutes with no soldering beyond header pins.
What You Need
Step-by-Step Instructions
-
Step 1 Install WLED via Web Flasher
Open install.wled.me in Chrome or Edge (Firefox does not support WebSerial). Connect your ESP32-S3 via USB-C and click Install. Select the latest stable WLED release — as of early 2026, that is WLED 0.15.x with native ESP32-S3 support.
The web flasher erases the existing firmware and writes WLED in about 60 seconds. Once complete, the ESP32-S3 creates a WiFi access point named WLED-AP. Connect to it with password wled1234, then navigate to 4.3.2.1 to enter your home WiFi credentials.
Tip: If the web flasher does not detect your board, hold the BOOT button while pressing RST to enter download mode. Release BOOT after the flasher connects. -
Step 2 Wire the WS2812B LED Strip
WS2812B strips need three connections: 5V power, ground, and a data signal. Connect the strip's data-in wire to GPIO 16 on the ESP32-S3 (WLED's default data pin for S3 builds). Connect ground from the strip to a GND pin on the ESP32-S3.
For power, connect the strip's 5V and GND wires directly to a dedicated 5V power supply — never power more than 10-15 LEDs from the ESP32's USB port. A 60-LED/meter strip draws approximately 18W per meter at full white brightness (60mA per LED times 60 LEDs). A 5V 10A supply handles up to 5 meters comfortably.
Add a 300-470 ohm resistor on the data line between the ESP32 and the first LED to prevent signal reflections. For runs longer than 1 meter at 5V, a logic level shifter (3.3V to 5V) on the data line improves reliability — the SN74HCT125 is the standard choice.
Tip: Always connect ESP32 ground to the power supply ground. Without a common ground reference, data signals are unreliable. -
Step 3 Configure LED Count and Type
In the WLED web interface, go to Config and then LED Preferences. Set the LED count to match your strip — count the actual LEDs, not the length. Set the LED type to WS2812B (the default). Set the data GPIO to 16 if it is not already configured.
For SK6812 RGBW strips, change the type to SK6812 RGBW. For longer strips (300+ LEDs), enable the "Skip first LED" option if the first LED shows incorrect colors — this is a known timing issue with some ESP32-S3 boards.
Set the brightness limiter under Config to match your power supply capacity. A 5V 4A supply should be limited to about 2600mA in WLED to leave headroom for voltage drop.
Tip: If colors appear wrong (red and green swapped), change the color order from GRB to RGB in LED Preferences. -
Step 4 Set Up Effects and Presets
WLED includes over 180 built-in effects. Open the main control page and use the Effects tab to browse them. Each effect has speed and intensity sliders — adjust these to taste.
Create presets by configuring an effect, color palette, and brightness, then saving it with a name. Presets can be triggered by time (using the built-in scheduler), by HTTP API calls, or by Home Assistant automations.
For ambient lighting, start with the Solid effect with a warm white color (255, 180, 100) at 40% brightness. For accent lighting, try Rainbow, Colortwinkles, or Fire 2012. Each preset stores the complete state including segment configuration.
Tip: Use segments to divide a single strip into independently controlled zones — useful for under-cabinet lighting where each section needs different colors. -
Step 5 Connect to Home Assistant
Home Assistant auto-discovers WLED devices on your local network via mDNS. Go to Settings, then Devices and Services. WLED should appear under Discovered — click Configure and confirm.
Once added, WLED exposes a light entity with full color, brightness, and effect control. You can also access individual segments as separate light entities. Use automations to trigger presets based on time, motion sensors, or other smart home events.
For the most reliable integration, assign a static IP address to the ESP32-S3 in your router's DHCP settings. WLED also supports MQTT if you prefer a message-based architecture — enable it under Config, then Sync Interfaces.
Tip: Enable the "Alexa compatible" option in WLED Sync settings to control LEDs via voice without any additional setup.
Frequently Asked Questions
What is the maximum number of LEDs an ESP32-S3 can drive with WLED?
An ESP32-S3 can drive up to 1500 LEDs on a single data pin with WLED. For longer runs, use the multi-pin output feature to split across 2-4 GPIO pins, supporting up to 4000+ LEDs total. The practical limit is usually power distribution, not the controller.
How much power does a WS2812B LED strip need?
Each WS2812B LED draws up to 60mA at full white brightness (20mA per color channel). A 60-LED/meter strip needs up to 3.6A per meter at 5V. In practice, most effects use 30-50% of maximum draw. Size your power supply at 60-70% of theoretical maximum.
Which ESP32 is best for WLED?
The ESP32-S3 is the best choice for WLED in 2026. It has 8MB PSRAM for large LED counts, dual-core processing for smooth effects, and USB-C for easy flashing. The original ESP32 (ESP32-DevKitC) works fine for under 300 LEDs and costs less.
Should I use 5V or 12V LED strips with WLED?
Use 5V WS2812B strips for runs under 5 meters — they offer per-LED addressability and are the most common. For runs over 5 meters, 12V WS2811 strips reduce voltage drop (3x fewer amps for the same power). The tradeoff is that 12V strips address LEDs in groups of 3, reducing resolution.
How far can the ESP32-S3 be from the WiFi router?
The ESP32-S3's WiFi range is typically 10-15 meters indoors through 1-2 walls. For garages or outdoor installations beyond this range, use a WiFi repeater or run WLED in AP mode and connect directly from your phone.
Can WLED work without WiFi or Home Assistant?
Yes. WLED runs fully standalone. It creates its own WiFi access point if no network is configured. You can control it directly from the WLED app on iOS or Android, trigger presets with physical buttons wired to GPIO pins, or use the built-in timer/scheduler.
Do I need a level shifter for WS2812B strips?
For short runs under 1 meter, most WS2812B strips work fine with the ESP32-S3's 3.3V data signal. For longer runs or if you see flickering, add an SN74HCT125 level shifter to convert the data signal to 5V. It costs under $2 and eliminates signal issues.