Espressif ESP8266
ESP8266 NodeMCU Pinout
The NodeMCU ESP8266 is the board that put Wi-Fi in every maker project. It exposes 11 usable GPIOs labeled D0–D10 on the silkscreen, but the underlying chip uses different GPIO numbers — a mismatch that catches almost every beginner. The mapping below is the one you need.
Specifications
- MCU
- ESP8266EX (Tensilica L106, 80 MHz, overclockable to 160)
- Flash
- 4 MB
- SRAM
- 80 KB
- GPIO
- 11 usable
- ADC
- 1 channel, 10-bit (0–1.0V)
- Operating voltage
- 3.3V (VIN accepts 5V)
Pin reference
| Pin | Name | Type / functions | Notes |
|---|---|---|---|
| D0 | GPIO16 | Digital I/O, wake from deep sleep | No interrupt, no PWM, no I2C. |
| D1 | GPIO5 / SCL | Digital I/O, default I2C SCL | — |
| D2 | GPIO4 / SDA | Digital I/O, default I2C SDA | — |
| D3 | GPIO0 / FLASH | Digital I/O | Must be HIGH at boot. |
| D4 | GPIO2 / TX1 / LED | Digital I/O, onboard LED (active LOW) | Must be HIGH at boot. |
| D5 | GPIO14 / SCK | Digital I/O, HSPI CLK | — |
| D6 | GPIO12 / MISO | Digital I/O, HSPI MISO | — |
| D7 | GPIO13 / MOSI | Digital I/O, HSPI MOSI | — |
| D8 | GPIO15 / CS | Digital I/O, HSPI CS | Must be LOW at boot. |
| D9 / RX | GPIO3 / RX0 | UART0 RX | — |
| D10 / TX | GPIO1 / TX0 | UART0 TX | — |
| A0 | ADC0 | Analog input, 0–1.0V (board divider extends to 3.3V) | — |
| VIN | 5V input | Power | — |
| 3V3 | 3.3V output | Power, ~600 mA | — |
| GND | Ground | Power | — |
Gotchas
- 01Pin labels D0–D10 do NOT match the GPIO numbers. Use digitalWrite(D5, ...) or the literal GPIO number, never assume D5 == 5.
- 02GPIO 0, 2, 15 are strapping pins. Wrong levels at boot prevent startup.
- 03Only A0 reads analog, and the raw chip reads 0–1.0V. Most NodeMCU boards include a divider so 0–3.3V works on the header.
- 04ESP8266 cannot use analogWrite() on D0 (GPIO16).
Generate a wiring diagram
Describe your circuit and get a Mermaid diagram you can share.
Open diagram generator