The Raspberry Pi Pico (RP2040) features 40 physical pins: 26 multifunction GPIOs, 3 analog inputs, dedicated I2C/SPI/UART buses, and specific power management lines. All GPIOs operate at 3.3V logic and are not 5V tolerant. Below is the exact hardware reference you need at the bench.
The Complete Raspberry Pico Pinout Reference Table
Read this table from Pin 1 (top-left, marked with a square pad on the PCB) down the left side, then up the right side. The default peripheral mappings are listed, but the RP2040's PIO and flexible matrix allow remapping most functions.
| Pin | GPIO | Primary Function | Default Bus Mapping | Practical Notes |
|---|---|---|---|---|
| 1 | GP0 | Digital I/O | UART0 TX, I2C0 SDA, SPI0 RX | Standard 3.3V logic. Do not feed 5V. |
| 2 | GP1 | Digital I/O | UART0 RX, I2C0 SCL, SPI0 CSn | Pairs with GP0 for UART0. |
| 3 | GND | Ground | - | Common ground for all 3.3V logic. |
| 4 | GP2 | Digital I/O | I2C1 SDA, SPI0 SCK | Use for secondary I2C bus. |
| 5 | GP3 | Digital I/O | I2C1 SCL, SPI0 TX | Pairs with GP2 for I2C1. |
| 6 | GP4 | Digital I/O | SPI0 RX, UART1 TX | Default SPI0 MISO. |
| 7 | GP5 | Digital I/O | SPI0 CSn, UART1 RX | Default SPI0 Chip Select. |
| 8 | GND | Ground | - | - |
| 9 | GP6 | Digital I/O | SPI0 SCK, I2C1 SDA | Default SPI0 Clock. |
| 10 | GP7 | Digital I/O | SPI0 TX, I2C1 SCL | Default SPI0 MOSI. |
| 11-15 | GP8-12 | Digital I/O | Various UART/I2C/SPI | Standard digital pins. |
| 16 | GP13 | Digital I/O | SPI1 RX, UART0 TX | Secondary SPI bus MISO. |
| 17-35 | GP14-28 | Digital / Analog | See specific notes below | GP26-28 double as ADC0-2. |
| 36 | 3V3 | Power Out | - | Regulated 3.3V output. Max 300mA draw. |
| 37 | 3V3_EN | Enable | - | Tie to GND to disable the onboard regulator. |
| 38 | GND | Ground | - | - |
| 39 | VSYS | Power In | - | Main power input (1.8V to 5.5V). |
| 40 | VBUS | Power In | - | 5V from micro-USB. Tied to VSYS via diode. |
Rows People Get Wrong (And How to Avoid Bricking Your Board)
When working with the Raspberry Pico pinout, misinterpreting power and analog pins is the fastest way to destroy the RP2040 silicon. Here are the specific rows from the datasheet that trip up experienced makers.
Unlike the Arduino Uno (ATmega328P) which tolerates 5V on its I/O pins, the RP2040 is strictly a 3.3V device. Feeding 5V into any GPIO pin (including I2C SDA/SCL lines connected to older 5V sensors) will permanently damage the input pad. Always use a bidirectional logic level shifter (like the Texas Instruments TXS0108E) or a simple voltage divider when interfacing with 5V peripherals.
1. VBUS (Pin 40) vs. VSYS (Pin 39)
What it means in practice: VBUS is the raw 5V from the USB connector. VSYS is the main system input. If you power the Pico via USB, VBUS is at 5V, and it feeds VSYS through an internal ideal diode. If you are powering the Pico from an external battery pack (e.g., 3.7V LiPo), you must inject power into VSYS, not VBUS. Injecting 5V into VBUS while simultaneously feeding 5V into VSYS from an external source can cause back-feeding and regulator failure.
2. ADC_VREF (Pin 35) and GP29 (ADC3)
What it means in practice: Pin 35 is the ADC voltage reference. On the standard Pico, it is tied to the 3.3V rail. If you need high-precision analog readings (e.g., for a load cell or precision thermistor), you can cut the PCB trace and feed a clean, external 3.0V reference here. Furthermore, GP29 (ADC3) is internally routed to measure VSYS/3. If you try to use GP29 as a standard analog input for an external sensor, your readings will be skewed by the board's own supply voltage unless you reconfigure the ADC mux in your code.
3. The Missing Pins (GP23, GP24, GP25)
You will notice these GPIOs are missing from the physical header. They are used internally: GP23 controls the onboard SMPS (switch-mode power supply), GP24 is the wireless SPI chip select (on the Pico W), and GP25 is the onboard LED (on the standard Pico). Do not attempt to route these to external headers.
External Wiring Color Codes: IEC vs. NEC Regional Standards
While the Pico PCB itself is universal, the wires you connect to it should follow regional low-voltage DC standards to ensure safe interpretation by anyone who inherits your project. When building sensor harnesses or actuator arrays, stick to the standard that applies to your region.
| Function | IEC 60446 (EU / UK / Global) | NEC / US Convention (DC Low Voltage) | Common Hobbyist (Dupont) |
|---|---|---|---|
| Ground (GND) | Black or Blue | Black or Green (if earth) | Black |
| Power (3.3V VCC) | Red or Orange | Red | Red |
| I2C SDA / UART RX | Yellow | Yellow or White | Blue or Green |
| I2C SCL / UART TX | Green | Green or Orange | Yellow |
| SPI / PWM Signals | Brown, Grey, or Violet | Blue, Orange, Yellow | Orange, Purple |
Which standard applies to you? If you are building a prototype for a commercial enclosure in the EU or UK, follow IEC 60446 and IEC 60204-1 for machine wiring. If you are in the US and wiring a control panel, NFPA 70 (NEC) Article 725 covers Class 2 and Class 3 low-voltage circuits, though hobbyist DC wiring is largely governed by industry convention rather than strict code.
Safe Interpretation When Markings are Faded or Missing
Cheap jumper wires from bulk packs often feature faded stripes or inconsistent coloring. Never trust the color of an unverified wire. If you inherit a breadboard with faded wires:
- De-energize the circuit: Unplug the Pico from USB and remove external battery packs.
- Use a multimeter in continuity mode: Probe the suspected GND wire against the Pico's metal USB shield (which is tied to GND). A reading of < 1 ohm confirms ground.
- Verify VCC with voltage mode: Power the board and probe the suspected 3.3V wire against the confirmed GND. You should read 3.28V to 3.32V. If you read ~5V, you have accidentally probed VBUS.
Raspberry Pico Pinout FAQ
Does the Raspberry Pi Pico W have a different pinout than the standard Pico?
Physically, the header holes and the RP2040 GPIO mappings are identical. However, the Pico W (and Pico WH) routes GP23, GP24, GP25, and GP29 to the onboard Infineon CYW43439 Wi-Fi/Bluetooth chip. On the standard Pico, GP25 is the user LED; on the Pico W, the LED is moved to the Wi-Fi chip's GPIO and is controlled via the wireless driver. If your code relies on toggling GP25 for an LED, it will fail on the Pico W. Always use the PICO_DEFAULT_LED_PIN macro in the C/C++ SDK or machine.Pin('LED') in MicroPython to ensure cross-board compatibility.
Which Raspberry Pico pins are 5V tolerant?
None of the RP2040 GPIO pins are 5V tolerant. The absolute maximum voltage on any I/O pin is 3.6V. The only pins that handle 5V are the power pins: VBUS (Pin 40) and VSYS (Pin 39, up to 5.5V). If you need to read a 5V digital signal (like a standard automotive sensor or an older 5V Arduino), you must use an optocoupler, a relay, or a dedicated logic level translator IC.
How do I safely measure a faded or unmarked Pico GPIO pin?
If you have a custom PCB carrier board where the Pico pinout silkscreen has rubbed off, do not guess. Download the official Raspberry Pi Pico Pinout PDF and orient the board using the physical landmarks: Pin 1 is always the square pad on the top left (closest to the micro-USB port). Pin 40 is VBUS, located on the top right. Count down the left side (odd pins) and up the right side (even pins). Use a fine-point multimeter probe to verify continuity to the known GND pins (3, 8, 13, 18, 23, 28, 33, 38) before applying power to any external sensors.






