The Arduino Leonardo and Arduino Micro are extremely closely related boards.
Both use the same:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
ATmega32U4 16 MHz 5 V logic 32 KB Flash 2.5 KB SRAM 1 KB EEPROM native USB 20 digital I/O 7 PWM outputs 12 analog inputs |
So this is not really a performance comparison.
The real choice is:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Leonardo → full-size Arduino → shield-friendly → barrel power jack → easier bench wiring Micro → compact board → breadboard-friendly → smaller projects → SPI pins exposed on the board edge |
Quick Comparison
| Feature | Arduino Leonardo | Arduino Micro |
|---|---|---|
| MCU | ATmega32U4 | ATmega32U4 |
| CPU | 8-bit AVR | 8-bit AVR |
| Clock | 16 MHz | 16 MHz |
| Logic voltage | 5 V | 5 V |
| Flash | 32 KB | 32 KB |
| Bootloader use | 4 KB | 4 KB |
| SRAM | 2.5 KB | 2.5 KB |
| EEPROM | 1 KB | 1 KB |
| Digital I/O | 20 | 20 |
| PWM | 7 | 7 |
| Analog inputs | 12 | 12 |
| Native USB | Yes | Yes |
| USB keyboard/mouse | Yes | Yes |
| Hardware UART | 1 | 1 |
| I2C | D2/D3 | D2/D3 |
| SPI | ICSP header | D14-D16 plus ICSP |
| Barrel jack | Yes | No |
| Breadboard friendly | No | Yes |
| Typical shield footprint | Yes | No |
| Size | 68.6 × 53.3 mm | 48 × 18 mm |
| Weight | About 20 g | About 13 g |
Same Processor, Same Performance
Both boards use the:
|
1 2 3 4 |
ATmega32U4 |
running at:
|
1 2 3 4 |
16 MHz |
There is no meaningful CPU-performance advantage for either board.
The same sketch doing the same work will generally perform the same on Leonardo and Micro.
Same Memory
Both provide:
|
1 2 3 4 5 6 7 |
32 KB Flash 4 KB used by bootloader 2.5 KB SRAM 1 KB EEPROM |
This means the same AVR memory limits apply to both.
For example, large:
- display buffers;
- JSON documents;
- arrays;
- strings;
- USB data structures;
can quickly consume the 2.5 KB SRAM.
Native USB Is Identical in Principle
The ATmega32U4 includes USB hardware directly.
So both boards can appear to a computer as:
- USB CDC serial;
- keyboard;
- mouse;
- custom USB HID device.
This is the biggest reason to choose either board over an UNO R3 for USB-input projects.
Both Use Serial for USB and Serial1 for D0/D1
On both boards:
|
1 2 3 4 5 6 7 8 9 10 |
Serial → native USB CDC Serial1 → physical UART → D0 RX → D1 TX |
This allows USB Serial Monitor and a hardware serial peripheral to operate independently.
USB HID Projects Work the Same
Both support:
|
1 2 3 4 5 |
#include <Keyboard.h> #include <Mouse.h> |
so either board is suitable for:
- macro keyboards;
- stream-deck-style controllers;
- simulator button boxes;
- custom keypads;
- assistive interfaces;
- mouse emulation.
The Main Difference Is Physical Size
The Leonardo is approximately:
|
1 2 3 4 |
68.6 × 53.3 mm |
The Micro is approximately:
|
1 2 3 4 |
48 × 18 mm |
Micro is therefore dramatically narrower.
This makes it much easier to embed in:
- small enclosures;
- control panels;
- custom keyboards;
- portable controllers;
- breadboard prototypes.
Micro Is Breadboard-Friendly
The Micro is designed to straddle the centre gap of a standard solderless breadboard.
This gives direct access to both rows of pins.
A typical prototype becomes:
|
1 2 3 4 5 6 7 8 9 |
breadboard → Arduino Micro → sensors → buttons → LEDs → USB cable |
with no shield or jumper adapter required.
Leonardo Is Better for Arduino Shields
The Leonardo uses the classic Arduino board layout.
This allows many UNO-style shields to physically plug directly onto the board.
Examples include:
- relay shields;
- motor shields;
- LCD shields;
- prototype shields;
- Ethernet shields.
Electrical and software compatibility still need to be checked, especially for shields that assume UNO pin mappings.
Leonardo Has a Barrel Power Jack
Leonardo provides:
|
1 2 3 4 |
DC barrel jack |
for external power.
This is useful in a standalone installation where you do not want USB to be the main power source.
Arduino specifies:
|
1 2 3 4 5 6 7 8 |
recommended input: 7-12 V input limit: 6-20 V |
Micro Has No Barrel Jack
The Micro is normally powered through:
- Micro-USB;
- VIN;
- regulated 5 V input where appropriate.
For a compact embedded build, that is usually not a problem.
For bench projects, Leonardo’s barrel connector can be more convenient.
Digital Pin Functions Are Fundamentally the Same
Both boards use the same ATmega32U4 Arduino variant, so the familiar mappings include:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
D0 RX D1 TX D2 SDA D3 SCL / PWM D4 A6 D5 PWM D6 PWM / A7 D7 interrupt D8 A8 D9 PWM / A9 D10 PWM / A10 D11 PWM D12 A11 D13 PWM / LED |
Both Have Seven PWM Pins
PWM is available on:
|
1 2 3 4 5 6 7 8 9 10 |
D3 D5 D6 D9 D10 D11 D13 |
This is identical between the boards.
Both Have 12 Analog Inputs
The first six are:
|
1 2 3 4 |
A0-A5 |
with core digital aliases:
|
1 2 3 4 5 6 7 8 9 |
A0 = D18 A1 = D19 A2 = D20 A3 = D21 A4 = D22 A5 = D23 |
The additional six share physical pins:
|
1 2 3 4 5 6 7 8 9 |
A6 = D4 A7 = D6 A8 = D8 A9 = D9 A10 = D10 A11 = D12 |
ADC Performance Is the Same
Both use the ATmega32U4:
|
1 2 3 4 |
10-bit ADC |
with the normal Arduino:
|
1 2 3 4 |
analogRead() |
range of approximately:
|
1 2 3 4 |
0-1023 |
Neither Board Has a True DAC
On both boards:
|
1 2 3 4 5 |
analogWrite() → PWM |
not a true analogue voltage.
If you need a DAC, add an external device.
I2C Is the Same
On both boards:
|
1 2 3 4 5 6 7 8 |
D2 → SDA D3 → SCL |
and the normal library is:
|
1 2 3 4 |
Wire |
SPI Is Where the Physical Difference Matters
On the ATmega32U4, SPI is:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
D14 → CIPO / MISO D15 → SCK D16 → COPI / MOSI D17 → SS |
The SPI hardware is the same on both boards.
But the physical access differs.
Leonardo Uses the ICSP Header for SPI
On Leonardo, the normal way to connect SPI is through the:
|
1 2 3 4 |
6-pin ICSP header |
This is important because:
|
1 2 3 4 5 6 |
D11 D12 D13 |
are not the Leonardo’s hardware SPI pins as they are on UNO R3.
Micro Exposes SPI on the Board Edge
The Micro exposes:
|
1 2 3 4 5 6 |
D14 CIPO D15 SCK D16 COPI |
on the main board edge as well as making the SPI peripheral available through ICSP.
This is more convenient on a breadboard.
Micro Also Exposes D17 / SS / RX_LED
Micro exposes:
|
1 2 3 4 5 6 7 |
D17 → PB0 → SS → RX_LED |
as a usable board-edge connection.
Leonardo does not expose that signal in the same convenient physical layout.
External Interrupts Are the Same
Both boards support normal Arduino external interrupts on:
|
1 2 3 4 5 6 7 8 |
D0 D1 D2 D3 D7 |
because they share the same ATmega32U4.
Built-In LED Is D13 on Both
Both use:
|
1 2 3 4 5 |
LED_BUILTIN → D13 |
so the standard Blink example behaves the same.
Both Use 5 V Logic
Both operate with:
|
1 2 3 4 |
5 V I/O logic |
This can be useful with:
- older TTL modules;
- classic AVR accessories;
- 5 V LCD modules;
- legacy Arduino circuits.
Modern 3.3 V devices still need to be checked for 5 V tolerance.
3.3 V Rail
Both provide a:
|
1 2 3 4 |
3.3 V output |
rated at approximately:
|
1 2 3 4 |
50 mA |
for small peripherals.
Micro Is Better for a Custom Keyboard
If the project is:
|
1 2 3 4 5 6 7 8 |
buttons + rotary encoders + USB HID |
the Micro’s narrow form factor is usually easier to install inside the enclosure.
The performance is identical to Leonardo, so there is little benefit in using the larger board unless its physical layout helps.
Leonardo Is Better for a Shield-Based Controller
If the project already uses:
- UNO-style shield;
- prototype shield;
- large wiring harness;
- barrel-jack supply;
Leonardo is usually easier.
Micro Is Better for Breadboard Development
For experimenting with:
- sensors;
- buttons;
- LEDs;
- SPI devices;
- I2C modules;
Micro can sit directly on the breadboard.
Leonardo Is Easier to Probe on the Bench
The larger board gives:
- more physical space;
- standard Arduino headers;
- easy clip/probe access;
- stable mounting;
- barrel-jack power.
That can make it more comfortable for classroom or bench development.
Micro Is Better for Permanent Integration
The smaller dimensions make Micro easier to mount inside:
- joysticks;
- button boxes;
- custom control panels;
- robot controllers;
- small instruments.
Software Compatibility Is Almost Identical
Because the two boards share the same MCU and AVR core, the same sketch will usually compile for both with no changes.
Libraries using:
- Keyboard;
- Mouse;
- Wire;
- SPI;
- Serial1;
- EEPROM;
normally behave identically.
When Code May Still Need Changes
Differences can appear if a sketch assumes:
- a particular physical board connector;
- a shield layout;
- SPI is wired through a certain header;
- specific LED behaviour;
- a fixed mechanical arrangement.
The MCU-level software is essentially the same.
Both Have the Same USB Upload Behaviour
Because USB is handled by the same ATmega32U4 that runs the sketch, both boards:
- disconnect from USB during reset;
- use the ATmega32U4 bootloader;
- use the 1200 bps touch mechanism during normal upload;
- can temporarily appear on a different serial port while bootloading.
Decision Table
| Requirement | Better fit |
|---|---|
| Smallest board | Micro |
| Breadboard use | Micro |
| Compact USB keyboard | Micro |
| Embedded button box | Micro |
| SPI access on board edge | Micro |
| UNO-style shield use | Leonardo |
| Barrel power jack | Leonardo |
| Large bench prototype | Leonardo |
| CPU performance | Same |
| Memory | Same |
| USB HID capability | Same |
| PWM | Same |
| ADC | Same |
| UART/I2C | Same |
Quick Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Arduino Leonardo ATmega32U4 16 MHz 5 V 32 KB Flash 2.5 KB SRAM 1 KB EEPROM 20 digital I/O 7 PWM 12 analog native USB D0/D1 Serial1 D2/D3 I2C SPI via ICSP barrel jack 68.6 × 53.3 mm Arduino Micro ATmega32U4 16 MHz 5 V 32 KB Flash 2.5 KB SRAM 1 KB EEPROM 20 digital I/O 7 PWM 12 analog native USB D0/D1 Serial1 D2/D3 I2C D14-D16 SPI D17 SS/RX_LED ICSP also available breadboard-friendly 48 × 18 mm |
Final Thoughts
Arduino Leonardo and Arduino Micro are functionally almost the same board built in two different physical formats.
Choose Leonardo when you want:
- classic Arduino shield compatibility;
- a barrel power connector;
- large headers;
- comfortable bench development.
Choose Micro when you want:
- small size;
- breadboard compatibility;
- compact USB HID projects;
- SPI pins directly accessible on the board edge;
- easier permanent installation.
There is no meaningful performance reason to choose one over the other.
Both give you:
|
1 2 3 4 5 6 7 8 9 10 |
the same ATmega32U4 the same 16 MHz CPU the same memory the same USB HID capability the same PWM the same ADC the same Serial/Serial1 architecture |
So the decision is overwhelmingly about:
|
1 2 3 4 5 6 |
physical form factor and how you intend to connect the hardware |
For detailed pin mapping, see our Arduino Leonardo pinout guide and Arduino Micro pinout guide.