Arduino Leonardo Pinout Reference

(cross-posted from my blog)

I made this Arduino Leonardo pinout reference for anyone considering building shields for the Leonardo. Please note that shields designed for the UNO, Duemilanove, Diecimila and others may not work on the Leonardo, because some of the lower-level pin functions have been moved around. This image helps you see some of the differences.

For example, the lower 8 digital pins are no longer all a single port, and many of the pins, with the exception of the RX and TX lines, are moved around. Some of the PWM lines are in the same place, but are now connected to different ports and OC registers than they were before.

On the other hand, you now have access to twice as many ADC pins as you did before, and you don’t have to give up 2 ADCs for I2C. You also get two more low-level interrupt lines and, of course, USB native functionality, which (I personally feel) is exciting!

This pinout was derived from the info found here. PDF is here (it’s big! ~5MB) The Leonardo image is from the official Arduino Leonardo page.


Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at !


  1. This is great.

    I like to print things like this on 4×6 photo paper, to keep handy while I’m working. It’s funny how once you start building all of the labels on the PC board disappear.

  2. I’ll stick with compatibility for now.

  3. Correct me if I am wrong… and it might be as simple as rewritting the libraries. Wouldn’t the leo be the perfect time to fix the pin layout. I mean they didnt want to fix the uno since it would break all the shields but with the leo they did that anyway.

  4. @ Denbo

    Leo = not currently compatible with most shields

  5. @Technologic: perhaps in some cases this could be done, but there are many other cases where it just wouldn’t work. Sketches which use the lower 8 digital pins as PORTD (something which dramatically increases speed) won’t work, because those pins are now spread out over 3 ports, and not continuously.

    The best way to look at it is that the Leonardo is a different tool than the Uno or it’s predecessors, to be used in a different way. 🙂

  6. @ johngineer

    I ment more as making it breadboard friendly.. Getting rid of the weird space.

  7. @Technologic: I was referring to your comment about the libraries.


    Regarding the header spacing: it’s done, and there’s nothing any of us can do about it. If the only comment you have to make is a complaint about the board, then please refrain from making any comment at all.

  8. +1 john 🙂

  9. Wow.. sorry.
    Thanks for the layout picture. It is very helpful.

    Also it wasnt ment as a complaint. Sorry if you took it that way.

    I wasnt refering that you (adafruit) could do anything about it.. It was ment it as a query as to the fact that they ( couldnt change the arduino spacing becuase of compatibility but since the leo broke compatibility anyway it was the perfect time to do so.
    Thought maybe you might have had some logic as to it that I didn’t.

    Anyway keep up the Great work.

  10. I swear I read somewhere official that the arduino leonardo was supposed to be a 32bit arm based board with more computing power…. Kind of a letdown since the teensy seems to be about the same thing, and it fits in a breadboard.

  11. Nevermind that’s the arduino Due

  12. I would like to reassure everybody that the Leonardo is compatible with most shields.

    Clearly older shields designed years ago only had to deal with 1 board. Already the mega made it impossible for us to have the same pins in the same places so choices had to be made.

    With the R3 layout we reached the final layout of this Arduino product line and we managed to have all the most common interfaces (analog/pwm/SPI /I2C) in a consistent place on all boards.

    This new layout also allows shields to auto configure when they are used on a 3.3v board (IOREF)

  13. @Technologic: no problem! Please know that the force of my statement about the headers wasn’t directed at you. We received several nasty comments (which never made it past moderation) about the header spacing thing. We just got tired of it, so I had to kinda put the hammer down. 🙂

    @Massimo: thank you for responding! I think that definitely clears some things up and helps people understand why choices were made.

Sorry, the comment form is closed at this time.