Blog
WS2812B Explained: The Addressable RGB LED
A WS2812B is a single 5V addressable RGB LED with a tiny driver chip built right into it. One chip runs one pixel. You send color data down a single wire, each LED reads its turn, then passes the rest along to the next one. That’s the whole idea, and it’s why you keep seeing “WS2812B” on product pages, in xLights, and all over the forums.
We run these by the thousand in real yards every season, so this guide skips the datasheet-copying and tells you what the chip actually does once it’s on a house. You’ll get the specs, the 5V story, the real current draw, how the data line behaves when something breaks, and where the WS2812B sits next to its cousins like the WS2811 and WS2815.
WS2812B specs at a glance
Here’s the short version you can scan before we get into the why. These figures come from the WorldSemi WS2812B datasheet unless noted.[1]
| Spec | WS2812B |
|---|---|
| Operating voltage | 5V (VDD +3.5 to +5.3V) |
| Driver location | Built into each LED (one chip = one pixel) |
| Data protocol | Single-wire, NZR, 800 kbps |
| Color depth | 8-bit per channel, 24-bit color (about 16.7 million colors) |
| Color order | GRB, high bit first |
| Current per LED | Up to about 60mA full white (Adafruit rule of thumb); real animated draw closer to 20mA[2] |
| Package | 5050 (5×5mm), 4-pin: VDD, DIN, DOUT, GND |
| Refresh | Fixed 800 kbps data rate; the datasheet cites 1,024 pixels at 30fps |
| Operating temp | −25 to +80°C junction |
If you only remember one line from this table, make it the first one. The WS2812B is a 5V part. We’ll come back to that, because it’s the single most common mix-up we field.
How the built-in driver works
The thing that makes a WS2812B special is that the control chip lives inside the LED itself. Older addressable setups put the driver IC on the outside, wired to a small group of plain LEDs. WorldSemi packed that whole controller into one 5050 RGB LED. So every WS2812B is its own pixel, with its own address, taking its own instructions.
Each LED has four legs: power in (VDD), data in (DIN), data out (DOUT), and ground (GND). Data comes in one leg, the chip grabs the first 24 bits meant for it, and it shoves everything after that out the other leg to the next LED in line. String a few hundred together and you get a chain where every pixel reads its slice and hands off the rest.
This is the fact that clears up the confusion between our 5V WS2812B pixels and our 12V WS2811 bullet nodes. Same family, different build. More on that below.
The single-wire data protocol
The data line sounds fussy and it isn’t. It carries one signal down the string, and every LED reads its turn and passes the rest along. WorldSemi calls the format NZR, and it runs at a fixed 800 kbps.[1] The controller sends a stream of precisely timed high and low pulses, and each chip decodes 24 bits: 8 for green, 8 for red, 8 for blue, sent in GRB order with the high bit first.
That GRB order is worth knowing. If you ask for red and get green, your color order is set wrong somewhere in the software. It’s not the LED failing. It’s the chip reading the bytes in the order it was built to read them.
Direction matters, and here’s where it bites people in a real display. Data only flows one way, DIN to DOUT. If the data line breaks partway down a run, every LED after the break goes dark while everything before it keeps running fine. We get this call every fall: half the roofline is out, the other half is perfect. That’s almost always a nicked or unplugged data wire right at the line between lit and dark. Walk it to the last working pixel and check the connection just past it.
The exact pulse timing (things like T0H and T1H) shifts a little between datasheet revisions. The Adafruit edition lists T1H at 0.8µs while the SparkFun V1.0 edition lists 0.85µs, and some newer chips want a longer reset gap of about 250µs.[6] If your show flashes for no clear reason, a newer chip revision needing that longer latch is one thing to rule out. For most builders on a modern controller, none of this needs tuning by hand.
Voltage, current, and color at the chip level
The WS2812B runs on 5V. Not 12V, not 24V. The datasheet lists VDD at +3.5 to +5.3V, with the part tested at 4.5 to 5.5V.[1] The “is it 12V?” question comes from its cousins. The WS2811 nodes and the WS2815 are the 12V parts, and people carry that over to the WS2812B by mistake. If you want the full breakdown of why voltage changes how you plan a run, our guide on 5V vs 12V vs 24V pixels covers it.
On current, you’ll see 60mA per LED quoted everywhere. Be a little careful with that number. It’s Adafruit’s worst-case rule of thumb for one pixel at full white, red plus green plus blue all maxed.[2] The WS2812B datasheet doesn’t actually list a per-channel output current at all. In real shows, you almost never hit full white on every pixel at once, so draw runs much lower. Adafruit uses about 20mA per pixel as a working figure for animations, and a controlled bench test measured 50mA per LED at full white, a bit under the 60mA ceiling.[3] So the conflict is real: 60mA is the safe planning max, 20mA is closer to what you’ll pull mid-show. Size your power supply toward the max and you won’t get caught short.
Color is 8 bits per channel, which gives 256 levels each of red, green, and blue, or about 16.7 million colors per pixel. That’s plenty for smooth fades and gradients across a big display.
How the WS2812B behaves in a real display
Datasheets don’t tell you how the chip acts on a house at 20°F in December. Here’s what we see.
Power math. Take a 100-pixel run. At the 60mA full-white max, that’s 6A. At the ~20mA animation figure, closer to 2A. Real shows land in between, but you plan for the ceiling so a bright all-white moment doesn’t brown out. For a big string you’ll want a solid 5V supply, and something like the Meanwell 5V LRS-600-5 gives you real headroom.
Data-line failure. We covered this above and it’s worth repeating because it saves so much troubleshooting time. Break the data line and everything downstream goes dark, everything upstream stays lit. The dark section starts exactly where the signal stops.
Single-LED failure. A dead WS2812B usually kills only its own pixel. One dark dot in the run, and the data often still passes through to the rest. Compare that to a WS2811 node, where the external IC drives a group of LEDs, so one failed IC drops that whole group at once. That difference is a real reliability point when you’re deciding what to run.
Pixel count and refresh. The 800 kbps rate is fixed, so the more pixels you hang on one data line, the slower that line refreshes. One pixel takes about 30µs to send, plus a stop gap after the last one. For 100 pixels that’s roughly 328 full updates per second.[2] Field measurements back this up: one tester saw about 72Hz at 450 LEDs on a line and under 17Hz at 1,800.[7] Spread big pixel counts across multiple ports and every line stays snappy. This is exactly what a good controller sorts out for you, and our guide on choosing the right xLights controller walks through matching ports to pixel count.
WS2812B vs WS2812, WS2811, and the rest of the family
WorldSemi makes the whole WS28xx line, and the WS2812B is one step in it.[1] Here’s how the chip-level differences shake out.
| Chip | Voltage | Driver | Notes |
|---|---|---|---|
| WS2812 | 5V | Built in | Older 6-pin package |
| WS2812B | 5V | Built in | 4-pin, adds reverse-polarity protection |
| WS2811 | 12V | External IC | Drives a group of LEDs (often 3) |
| WS2813 | 5V | Built in | Backup data line for continuity |
| WS2814 | 5–24V | External IC | RGBW, adds a white channel |
| WS2815 | 12V | Built in | Dual-signal backup data line |
The line that matters most: the WS2812B has the driver inside each LED, one chip per pixel, at 5V. The WS2811 puts the driver outside, running a group of plain LEDs, usually at 12V. Get that straight and most of the family confusion falls away. Our WS2811 vs WS2812 guide goes deeper if you’re choosing between them.
One passing note on form factor: the WS2812B chip is also sold built into strip, which is a common way to buy it for a show. That’s a different buying decision with its own power and cutting questions, so we keep it separate. If you’re headed toward strip, see our full WS2812B LED strip guide.
Is a WS2812B the same as a NeoPixel?
Pretty much, yes. NeoPixel is Adafruit’s brand name for products built on WS2812-family chips, including the WS2812B.[2] When a tutorial says NeoPixel, it usually means a WS2812B or a close relative. The naming gets one more layer from the control software: FastLED and Adafruit_NeoPixel are libraries makers use to run these chips from an Arduino, ESP32, or Raspberry Pi. If you’re driving pixels from a microcontroller and want to get first light, our WLED install guide is a friendly place to start.
One more for the maker crowd: the WS2812B wants its data signal to reach at least 70% of the supply voltage, so about 3.5V on a 5V setup.[4] A bare 3.3V logic pin from an ESP32 or Pi sits below that, which is why a level shifter helps on longer runs.
If you’re past the “what is it” stage and just want a running display, the Pixel Show Starter Kit bundles the pieces that work together so you’re not guessing at compatibility.
Frequently asked questions
What voltage is a WS2812B?
A WS2812B runs on 5V. The datasheet lists VDD at +3.5 to +5.3V, tested around 4.5 to 5.5V. It is not a 12V part. The 12V mix-up comes from its cousins the WS2811 and WS2815, which do run at 12V. Plan your power supply as 5V.
How much current does a WS2812B draw?
Up to about 60mA per LED at full white, red, green, and blue all maxed, per Adafruit’s rule of thumb. Real shows draw much less, closer to 20mA per pixel during animations, and one bench test measured 50mA at full white. Size your supply toward the 60mA max.
Is a WS2812B the same as a NeoPixel?
Mostly, yes. NeoPixel is Adafruit’s brand for products built on WS2812-family chips, and the WS2812B is one of them. A tutorial that says NeoPixel usually means a WS2812B or a close relative. FastLED and Adafruit_NeoPixel are the software libraries that drive these chips.
What’s the difference between WS2812 and WS2812B?
Both are 5V addressable RGB LEDs with the driver built into each chip. The WS2812B is the newer version. It uses a 4-pin 5050 package instead of the older 6-pin, and it adds reverse-polarity protection on the power input. In a show, they behave the same way.
How many WS2812B LEDs can one data line control?
The 800 kbps rate is fixed, so more pixels on one line means a slower refresh. The datasheet cites 1,024 pixels at 30fps. In practice, refresh drops as counts climb, with roughly 72Hz at 450 LEDs and under 17Hz at 1,800. Split large counts across multiple ports.
Sources
- WorldSemi, WS2812B datasheet. https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf
- Adafruit, NeoPixel Überguide. https://learn.adafruit.com/adafruit-neopixel-uberguide
- Pololu, Addressable RGB LED strip product notes. https://www.pololu.com/product/2547
- Parallax, WS2812B RGB LED Module product page. https://www.parallax.com
- Advatek Lighting, WS2812B pixel protocol page. https://www.advateklighting.com/pixel-protocols/ws2812b
- Josh Levine, “NeoPixels Revealed,” josh.com (updated 2020). https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/
- blinkylights.blog, WS2812B refresh-rate field measurements.