← All parts

74HC595 8-bit Shift Register

SN74HC595

Texas Instrumentsic logic timer

The 74HC595 is an 8-bit serial-in, parallel-out shift register with an 8-bit D-type storage register and 3-state outputs. It operates from 2V to 6V, providing a flexible way to expand output pins.

In stock

Specifications

8
Operating Voltage
2 to 6 V
Supply Current Max
80 µA
Output Drive Current
±6 mA
Input Current Max
1 µA
Clock Frequency Max
29 MHz
Propagation Delay Typical
13 ns
Operating Temperature Range
-40 to 85 °C
Package
PDIP, SOIC, SSOP, TSSOP, CDIP, LCCC

Pinout

16
PinNameFunctionsNotes
8GND
GND
Ground Pin
13OE
GPIO
Output Enable
15QA
GPIO
QA Output
1QB
GPIO
QB Output
2QC
GPIO
QC Output
3QD
GPIO
QD Output
4QE
GPIO
QE Output
5QF
GPIO
QF Output
6QG
GPIO
QG Output
7QH
GPIO
QH Output
9QH'
GPIO
QH' Output
12RCLK
GPIO
RCLK Input
14SER
GPIO
SER Input
11SRCLK
GPIO
SRCLK Input
10SRCLR
GPIO
SRCLR Input
16VCC
POWER
Power Pin

Interactive pinout

Highlight:
SN74HC595

Click a pin to copy its name · tap a tag above to spotlight a bus.

Logic level & voltage

Operates from 2-6 V (per the datasheet specs), so it works at 3.3 V or 5 V. It's a serial-in, parallel-out shift register that adds 8 outputs per chip.

Typical uses

  • Expanding digital outputs (LEDs, 7-segment displays)
  • Daisy-chaining for many outputs from 3 pins
  • Driving relay/transistor banks

Wiring notes & gotchas

  • Chain chips via QH' (serial out) into the next SER input.
  • Latch (RCLK) after shifting so outputs update together.
  • Each output sources/sinks only ~6 mA — use drivers for LEDs strings/relays.

Commonly used with

3

Starter code

Community starter examples — minimal, unofficial, and provided to get you wiring fast. Verify against the manufacturer datasheet before relying on them.

Arduino (C++)

arduino
// 74HC595 8-bit shift register — community starter example
#if defined(ESP32)
  #define DATA_PIN  23   // SER
  #define LATCH_PIN 5    // RCLK
  #define CLOCK_PIN 18   // SRCLK
#else
  #define DATA_PIN  11   // SER
  #define LATCH_PIN 8    // RCLK
  #define CLOCK_PIN 12   // SRCLK
#endif

void setup() {
  pinMode(DATA_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
}

void loop() {
  for (int i = 0; i < 256; i++) {
    digitalWrite(LATCH_PIN, LOW);
    shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, i);   // QA..QH = bits of i
    digitalWrite(LATCH_PIN, HIGH);                // latch to outputs
    delay(100);
  }
}

MicroPython

python
# 74HC595 shift register (ESP32) — community starter example
from machine import Pin
import time

data  = Pin(23, Pin.OUT)   # SER
latch = Pin(5,  Pin.OUT)   # RCLK
clock = Pin(18, Pin.OUT)   # SRCLK

def shift_out(value):       # MSB first
    latch.value(0)
    for i in range(7, -1, -1):
        clock.value(0)
        data.value((value >> i) & 1)
        clock.value(1)
    latch.value(1)

while True:
    for v in range(256):
        shift_out(v)
        time.sleep_ms(100)

Wiring

PinArduino Uno R3ESP32 DevKitC (WROOM-32)Notes
VCC+5V3V32-6 V
GNDGNDGND
SERD11GPIO23Serial data in
RCLKD8GPIO5Latch / storage clock
SRCLKD12GPIO18Shift clock
SRCLR--Tie HIGH to VCC (active-low clear)
OE--Tie LOW to GND (active-low output enable)
QH'--Carry-out to next 595's SER for daisy-chaining

Related parts

6