WLED
Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!
Top Related Projects
Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!
ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.
The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.
Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)
:musical_note: :rainbow: Real-time LED strip music visualization using Python and the ESP8266 or Raspberry Pi
Quick Overview
WLED is an open-source firmware for ESP8266 and ESP32 microcontrollers that enables control of WS2812B and many other types of digital RGB(W) LEDs. It provides a web interface, mobile app, and API for easy configuration and control of LED effects, with support for music reactivity, alexa integration, and more.
Pros
- Easy to install and use, with a user-friendly web interface and mobile app
- Supports a wide range of LED types and configurations
- Highly customizable with numerous built-in effects and the ability to create custom ones
- Active community and frequent updates
Cons
- Limited to ESP8266 and ESP32 microcontrollers
- May require some technical knowledge for advanced features
- Can be overwhelming for beginners due to the vast number of options
- Performance may vary depending on the number of LEDs and chosen effects
Getting Started
- Download the latest release from the WLED GitHub releases page.
- Flash the firmware to your ESP8266 or ESP32 board using a tool like ESPHome Flasher or NodeMCU Pyflasher.
- Connect your LED strip to the appropriate pins on your microcontroller.
- Power on your device and connect to the "WLED-AP" Wi-Fi network.
- Open a web browser and navigate to http://4.3.2.1 to access the WLED interface.
- Configure your Wi-Fi settings and LED strip parameters in the settings menu.
- Start controlling your LEDs and enjoying the various effects!
For more detailed instructions and advanced features, refer to the WLED wiki.
Competitor Comparisons
Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!
Pros of WLED
- More active development and frequent updates
- Larger community and contributor base
- Wider range of supported features and integrations
Cons of WLED
- Potentially more complex for beginners due to extensive feature set
- May require more system resources due to additional functionalities
Code Comparison
WLED:
void handleNotFound() {
if (captivePortal()) {
return;
}
handleSet(request->url());
}
WLED>:
void handleNotFound() {
if (captivePortal()) {
return;
}
server.send(404, "text/plain", "Not found");
}
The code comparison shows that WLED has a more advanced handling of "not found" requests, potentially offering better user experience and functionality.
Summary
WLED is the main repository for the project, while WLED> appears to be a fork or alternative version. WLED benefits from more active development, a larger community, and a wider range of features. However, this may come at the cost of increased complexity and resource usage. The code comparison suggests that WLED has more sophisticated request handling. For most users, WLED would likely be the preferred choice due to its ongoing development and broader support.
ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Pros of ESPHome
- More versatile, supporting a wide range of sensors and devices beyond LED control
- Tighter integration with Home Assistant for easier automation and control
- Allows for custom firmware creation using YAML configuration
Cons of ESPHome
- Steeper learning curve, especially for those new to YAML and Home Assistant
- Less specialized for LED control, potentially lacking some advanced LED-specific features
- May require more setup time compared to WLED's plug-and-play approach
Code Comparison
WLED (Arduino-based):
void loop() {
WLED::instance().loop();
}
ESPHome (YAML configuration):
light:
- platform: fastled_clockless
chipset: WS2812B
pin: GPIO2
num_leds: 60
rgb_order: GRB
name: "LED Strip"
ESPHome focuses on configuration-based setup, while WLED uses more traditional Arduino-style programming. ESPHome's approach allows for easier customization without deep coding knowledge, but may be less flexible for advanced users who prefer direct code manipulation.
Both projects are excellent choices for IoT and smart home enthusiasts, with WLED excelling in LED-specific applications and ESPHome offering broader device support and Home Assistant integration.
The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.
Pros of FastLED
- More flexible and customizable for advanced LED programming
- Supports a wider range of LED chipsets and microcontrollers
- Better performance for complex animations and effects
Cons of FastLED
- Requires more programming knowledge and effort to implement
- Lacks built-in web interface or mobile app for easy control
- No out-of-the-box support for common features like music reactivity
Code Comparison
FastLED example:
#include <FastLED.h>
#define NUM_LEDS 60
CRGB leds[NUM_LEDS];
void setup() { FastLED.addLeds<WS2812B, 6, GRB>(leds, NUM_LEDS); }
void loop() { fill_rainbow(leds, NUM_LEDS, 0, 7); FastLED.show(); }
WLED example:
#include "wled.h"
void setup() {
WLED::instance().init();
}
void loop() {
WLED::instance().loop();
}
WLED provides a more user-friendly approach with built-in functionality, while FastLED offers greater flexibility for custom implementations. WLED is ideal for users seeking quick setup and easy control, whereas FastLED is better suited for developers requiring fine-grained control over LED behavior and advanced effects.
Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)
Pros of Adafruit_NeoPixel
- Simpler and more lightweight library, ideal for basic LED control
- Easier to integrate into existing Arduino projects
- More suitable for resource-constrained microcontrollers
Cons of Adafruit_NeoPixel
- Limited built-in effects and animations compared to WLED
- Lacks advanced features like web interface and network control
- Requires more manual coding for complex lighting patterns
Code Comparison
Adafruit_NeoPixel:
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip(60, PIN, NEO_GRB + NEO_KHZ800);
strip.begin();
strip.setPixelColor(i, red, green, blue);
strip.show();
WLED:
#include "wled.h"
void setup() {
WLED::instance().initServer();
}
void loop() {
WLED::instance().handleConnection();
}
The Adafruit_NeoPixel library provides a straightforward approach to controlling NeoPixels, with direct pixel manipulation. WLED, on the other hand, offers a more comprehensive solution with built-in networking and a web interface, requiring less manual coding for advanced features. WLED is better suited for complex, networked LED installations, while Adafruit_NeoPixel is ideal for simpler projects or when fine-grained control over individual pixels is needed.
:musical_note: :rainbow: Real-time LED strip music visualization using Python and the ESP8266 or Raspberry Pi
Pros of audio-reactive-led-strip
- Specialized for audio reactivity, providing more advanced sound-responsive effects
- Python-based, offering flexibility for customization and integration with other Python libraries
- Includes real-time FFT analysis for precise audio visualization
Cons of audio-reactive-led-strip
- Limited to audio-reactive features, lacking general-purpose LED control capabilities
- Requires more setup and configuration compared to WLED's user-friendly interface
- Less active development and community support
Code Comparison
WLED (C++):
void colorWipe(CRGB color, int speed) {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = color;
FastLED.show();
delay(speed);
}
}
audio-reactive-led-strip (Python):
def visualize_spectrum(y):
y = np.copy(y)
y = interpolate(y, config.N_PIXELS)
spectrum = np.array([qi.color(r, g, b) for r, g, b in y])
np.concatenate((spectrum, spectrum[::-1]))
return spectrum
The code snippets demonstrate the different approaches: WLED focuses on general LED control, while audio-reactive-led-strip emphasizes audio processing and visualization. WLED's C++ implementation is more efficient for real-time LED control, whereas audio-reactive-led-strip's Python code allows for easier integration of complex audio analysis algorithms.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Welcome to WLED! â¨
A fast and feature-rich firmware for ESP32 microcontrollers to control addressable LEDs â from simple strips to large 2D matrices and HUB75 panels.
Originally created by Aircoookie, now maintained by a community of contributors.
âï¸ Features
Effects & Visuals
- 200+ built-in effects including classic animations, audio-reactive, and 2D/matrix effects
- 50+ color palettes plus a built-in custom palette editor (PixelForge)
- 2D LED matrix support with dedicated 2D effects and flexible panel mapping
- HUB75 RGB matrix panel support (ESP32)
- AudioReactive effects â included by default, responding to sound via microphone, line-in, or network audio source
- Effect blending for smooth transitions between animations
- Antialiased drawing functions for smooth graphics
Segments & Control
- Segments â apply different effects, colors and palettes to independent parts of your LED setup simultaneously
- Up to 250 presets to save and recall colors, effects and segment configurations â supports playlists for automated cycling
- Nightlight function with configurable dimming curve
- Configurable Auto Brightness Limiter (per output) for safe operation
Hardware Support
- ESP32 (all variants: original, S2, S3, C3)
- Up to 17 LED outputs on ESP32 using parallel I2S + RMT
- Addressable LED support: WS2812B, WS2811, WS2815, SK6812, WS2805, TM1914, APA102, WS2801, LPD8806, and many more
- RGBW, RGB+CCT and white-only strips
- PWM outputs for analog LEDs and dimmers
- Ethernet support for a wide range of boards (QuinLED, LILYGO, Olimex, and more)
- Filesystem-based config for easy backup and restore of presets and settings
- Full OTA firmware updates (HTTP + ArduinoOTA), password-protectable
Connectivity & Integrations
- WLED app for Android and iOS
- JSON and HTTP request APIs
- Multi-WiFi â connect to up to 3 networks with automatic AP fallback
- ESP-NOW wireless sync between devices (no WiFi router required)
- MQTT with Home Assistant discovery
- E1.31, Art-Net, DDP and TPM2.net for DMX/professional lighting control
- UDP realtime sync across multiple WLED devices
- Alexa voice control (on/off, brightness, color)
- Philips Hue sync
- diyHue and Hyperion integration
- Adalight / TPM2 (PC ambilight via serial)
- Infrared remote control (24-key RGB, receiver required)
- Timers and schedules (NTP time sync, full timezone and DST support)
Developer-Friendly
- Usermod system â extend WLED with community or custom modules without modifying core code
- Large and active usermod library including AudioReactive, temperature sensors, rotary encoders, displays, and much more
- Well-documented JSON API
- Licensed under the EUPL v1.2
ð² Quick start guide and documentation
See the documentation at kno.wled.ge!
Tutorials and getting-started guides to help you get your project running quickly.
ð¼ï¸ User interface


ð¾ Compatible hardware
See the compatible hardware list on the wiki.
âï¸ Other
Licensed under the EUPL v1.2.
Credits to all contributors!
CORS proxy by Corsfix.
Join the Discord server to discuss everything about WLED!
Check out the WLED Discourse forum!
If you'd like to reach the original creator privately: dev.aircoookie@gmail.com.
If WLED brightens up your day, you can send a gift to Aircoookie via PayPal.
Disclaimer:
If you are prone to photosensitive epilepsy, we recommend you do not use this software.
If you still want to try, avoid strobe, lightning or noise modes and high effect speed settings.
As per the EUPL license, no liability is assumed for any damage to you or any other person or equipment.
Top Related Projects
Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!
ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.
The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.
Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)
:musical_note: :rainbow: Real-time LED strip music visualization using Python and the ESP8266 or Raspberry Pi
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot
