74HC595 8-bit shift register (DIP-16)
74HC595 DIP-16 pinout (DS, SH_CP, ST_CP, OE, MR, Q0–Q7, Q7S), shiftOut() wiring, current limits per pin, 3.3 V boards, and daisy-chaining several chips.
Community draft — report a mistake
3.3 V or 5 V? Power it from the same voltage as your board: 3.3 V on ESP32 and Pico, 5 V on Uno. At 5 V the 74HC595 needs about 3.15 V for a HIGH, so a 3.3 V board driving a 5 V-powered chip is marginal — use a 74HCT595 at 5 V for that.
The 74HC595 turns 3 GPIOs into 8 outputs — and more if you chain chips. You clock in 8 bits one at a time on DS and SH_CP, then a pulse on ST_CP latches them onto Q0–Q7 all at once, so the outputs never flicker through the in-between states. Arduino’s built-in shiftOut() does the clocking; no library is needed.
To get 16, 24 or more outputs, connect Q7S of one chip to DS of the next and share SH_CP and ST_CP; shift out two or three bytes, then latch once. Hardware SPI can drive it too, for fast LED matrices.
Current limits: about 6 mA per pin recommended (35 mA absolute max) and 70 mA for the whole chip. That is enough for indicator LEDs through 1 kΩ resistors, not for relays, motors or bright LEDs — for those, put a ULN2803 darlington array or transistor after each output. Pin names differ between makers (NXP vs TI); the pin numbers above don’t.
Prices are indicative (Nov 2026) and vary by seller.
Pinout
| Pin | What it does |
|---|---|
VCC | Pin 16 — 2–6 V supply |
GND | Pin 8 — ground |
DS | Pin 14 — serial data in (SER on TI datasheets) |
SH_CP | Pin 11 — shift clock (SRCLK). Each rising edge shifts one bit in. |
ST_CP | Pin 12 — latch / storage clock (RCLK). A rising edge copies the 8 bits to the outputs. |
OE | Pin 13 — output enable, active LOW. Tie to GND (or PWM it for brightness). |
MR | Pin 10 — master reset, active LOW (SRCLR). Tie to VCC. |
Q0 | Pin 15 — output 0 (QA) |
Q1 | Pin 1 — output 1 |
Q2 | Pin 2 — output 2 |
Q3 | Pin 3 — output 3 |
Q4 | Pin 4 — output 4 |
Q5 | Pin 5 — output 5 |
Q6 | Pin 6 — output 6 |
Q7 | Pin 7 — output 7 (QH) |
Q7S | Pin 9 — serial out (Q7′ / QH′). Connect to DS of the next chip to chain. |
Use it with
- 74HC595 8-bit shift register (DIP-16) with Arduino Nano Arduino C++
- 74HC595 8-bit shift register (DIP-16) with Arduino Uno R3 Arduino C++
- 74HC595 8-bit shift register (DIP-16) with ESP32 DevKit V1 Arduino C++
- 74HC595 8-bit shift register (DIP-16) with NodeMCU ESP8266 Arduino C++
- 74HC595 8-bit shift register (DIP-16) with Raspberry Pi Pico MicroPython
Common errors
LEDs flicker or show random patterns
MR or OE is floating. Tie MR to VCC and OE to GND, and add a 100 nF capacitor across VCC and GND right at the chip.
Outputs change while data is still shifting in
ST_CP and SH_CP are swapped. Shift with SH_CP, then pulse ST_CP once to latch: digitalWrite(latch, LOW); shiftOut(data, clock, MSBFIRST, value); digitalWrite(latch, HIGH);
LEDs get dim when several are on, or the chip runs hot
The chip is rated for 70 mA in total. Use 1 kΩ resistors (about 3 mA each), or drive heavier loads through a ULN2803 or transistors.