The Raspberry Pi GPIO Pinout: Diagram & Explanation


The GPIO pins, placed on each Raspberry Pi model, are one of the best features to expand the device’s capabilities. But, it’s not easy to get started because the pin numbers seem to have been placed randomly, and it isn’t even the same numbers to use in your code.

Don’t worry, that’s why I created this article. I’ll give you the diagram with all the pin numbers, and the equivalent IDs you should use in your Python scripts. By the end of this article, you’ll be able to use this as a foundation for any electronic project you have in mind.

By the way, if you get overwhelmed as soon as Python is required for a project, I recommend checking out my e-book “Master Python on Raspberry Pi“. It will guide you step-by-step to learn the essential concepts (and only the essential concepts) required to achieve any project in the future. Raspberry Pi without Python is like a car without an engine, you miss all the fun parts. Get 10% off by downloading it today!

I answer your questions - Raspberry...
I answer your questions - Raspberry Pi FAQ

The Raspberry Pi Pinout Diagram

gpio pins raspberry pi

Introduction

All Raspberry Pi models come with 40 GPIO pins on the main board (except for the Pico, which I have a separate guide for it here). The Raspberry Pi Zero (and Zero 2) exist in two versions (with or without the pins pre-soldered), but you can use them too.

The good news is that all models use the same numbering and the same pinout.
The bad news is that this numbering isn’t intuitive at all. Not all pins can be used the same way, and the numbers you’ll use in your code are not necessarily the ones you see (or can guess) on the board.

That’s why you most likely need the diagram below (or that kind of adapter on Amazon), to make sure you are using the correct IDs in your project. Feel free to print this diagram, or part of this page, to have it with you when needed.

Simplified diagram

When you take the Raspberry Pi board in front of you with the USB ports at the bottom, the GPIO pin 1 is in the top-left corner. Number 2 is in the top-right corner (not below), and from there it goes from left to right, and the next line, as if reading a book.

Grab my Python cheat sheet!
If like me, you always mix the languages syntax, download my cheat sheet for Python here!

There are two lines of 20 pins, so 40 pins in total. The last one in the bottom-right corner is number 40.
Well, the issue is that you won’t use these numbers in your scripts. Instead, you’ll use their name “equivalents”, which are mentioned on the side in this diagram:

The red ports on this diagram are used for power input. There are two options: 3V or 5V. Make sure to use something compatible with your electronic circuit.

The black ports are for grounding. That’s explicit enough I think, you’ll typically plug one on the blue line of your breadboard if you use one (as explained here).

Then all the other ports are programmable. They can be used for input (sensor) or output (LED, servo).
Their names do not follow the pin IDs, for example, GPIO 1 is port 28 while GPIO 2 is port 3. This is why you’ll need this diagram all the time.

In the example I give you later, I will light a LED on pin 37, but use GPIO 26 in my code. So, you’ll have to do this mental exercise each time.

If you use the Argon NEO for your Raspberry Pi case (read my review here), the Argon ONE (review), or something similar, you may have some guidance on it, which is really useful. Here is what it looks like on the Argon NEO, for example:

GPIO and camera port access

Full diagram

I only gave you the simplified version of the GPIO pinout diagram because I think it’s what you’ll need most of the time. But if you play with advanced accessories, especially using SPI or I2C, you may need more information, as each port can have several names.

You’ll find all the defaults in the official datasheet (here, page 10), or you can check the graphic version on this website.

Grab my Python cheat sheet!
If like me, you always mix the languages syntax, download my cheat sheet for Python here!

How to use the GPIO pinout with Python

Each GPIO pin has a number and a name. In Python, the number is mentioned in the name. For example, port 37 is GPIO26, so we’ll use “26” in the Python script.

I created a simple circuit as an example, with just a LED and a resistor, using 3 wires to plug 3 GPIO pins:

  • Port 1: power input (3V)
  • Port 6: ground
  • Port 37: GPIO26, to control the LED

If you want to try this simple circuit on your own, read my GPIO guide for beginners, as I think I use something very similar in it (maybe not the same pins, but it’s a good exercise anyway).

In Python, the full script will look like this:

import RPi.GPIO as GPIO
import time

#GPIO Basic initialization 
GPIO.setmode(GPIO.BCM) 
GPIO.setwarnings(False) 

#LED configuration
led = 26
GPIO.setup(led, GPIO.OUT)

#Turn on the LED 
print("LED on") 
GPIO.output(led,1)

#Wait 5s
time.sleep(5) 

#Turn off the LED 
print("LED off") 
GPIO.output(led,0) 

Here are a few takeaways:

  • I use RPi.GPIO (a pre-installed Python library).
    Other solutions are possible, but let’s use this one as an example.
  • I start with two initialization steps, especially setting GPIO.BCM, which means we’ll use the port “name” instead of the pin “numbers” (GPIO.BOARD).
  • Then, I define the LED name (26 in my example), and initialize it as an output with:
    GPIO.setup(<name>, GPIO.OUT)
  • From there, I can set it on or off with:
    GPIO.output(<name>, <0|1>)

Remember, if reading this Python script feels like deciphering hieroglyphs for you, you will benefit from reading my book “Master Python on Raspberry Pi“. I explain everything you need (and only that), to use it for any project. In a few weeks, you’ll be ready, and this example will be easy to read for you.

Anyway, this was just a basic example to get you started and show you how to use the previous diagram. I hope this will be useful.

If you want to go further, SunFounder has the perfect kit for your Raspberry Pi, including all the components you might need (sensors, wires, etc.). You can find it here on Amazon, or directly on their website. It’s more than 150 projects you can do with it, all documented, in Python, C++, Java and more. Don’t miss out!

Get My Commands Cheat Sheet!
Grab your free PDF file with all the commands you need to know on Raspberry Pi!

If you are looking for exclusive tutorials, I post a new course each month, available for premium members only. Join the community to get access to all of them right now!

Related questions

What does GPIO mean?

GPIO stands for “General Purpose Input/Output”. It’s an interface used to plug other electronic devices into the Raspberry Pi.

What are GPIO pins used for?

GPIO pins are used to connect additional devices, sensors, and wires to the Raspberry Pi, and use it as the brain of any electronic circuit. For example, a weather station, a robot, or an expansion card (named “HAT”).

You can find some concrete examples on this website:

Which GPIO pin should I use?

Each pin has a different role. Some of them provide power, others are ground, and others can be used in programming. Each pin can be used as input (for a thermometer, for example) or output (for a LED).

Use the diagram provided above to know which pin to use. But basically, any green pins on my diagram are free to use. Follow the script given previously as a template to make sure the port is properly initialized before use.

Get My Commands Cheat Sheet!
Grab your free PDF file with all the commands you need to know on Raspberry Pi!

Additional Resources

Not sure where to start?
Understand everything about the Raspberry Pi, stop searching for help all the time, and finally enjoy completing your projects.
Watch the Raspberry Pi Bootcamp course now.

Master your Raspberry Pi in 30 days
Don’t want the basic stuff only? If you are looking for the best tips to become an expert on Raspberry Pi, this book is for you. Learn useful Linux skills and practice multiple projects with step-by-step guides.
Download the e-book.

VIP Community
If you just want to hang out with me and other Raspberry Pi fans, you can also join the community. I share exclusive tutorials and behind-the-scenes content there. Premium members can also visit the website without ads.
More details here.

Need help building something with Python?
Create, understand and improve any Python script for your Raspberry Pi.
Learn the essentials, step-by-step, without losing time understanding useless concepts.
Get the e-book now.

You can also find all my recommendations for tools and hardware on this page.

Patrick Fromaget

I'm the lead author and owner of RaspberryTips.com. My goal is to help you with your Raspberry Pi problems using detailed guides and tutorials. In real life, I'm a Linux system administrator with a web developer experience.

Recent Posts