The Arduino environment can be extended through the use of libraries, just like most programming platforms. Libraries provide extra functionality for use in sketches, e.g. working with hardware or manipulating data. To use a library in a sketch, select it from Sketch > Import Library.
A number of libraries come installed with the IDE, but you can also download or create your own. See these instructions for details on installing libraries. There is also a tutorial on writing your own libraries. See the API Style Guide for information on making a good Arduino-style API for your library.

Official Arduino Libraries


Libraries for controlling servo and stepper motors.

  • Servo - for controlling servo motors.
  • Stepper - for controlling stepper motors.
  • Communication

    Libraries for using the SPI, I2C and UART protocols.

    • SPI - for communicating with devices using the Serial Peripheral Interface (SPI) Bus.
    • Wire - Two Wire Interface (TWI/I2C) for sending and receiving data over a net of devices or sensors.
    • SoftwareSerial - for serial communication on any digital pins.


    Libraries to access radio modules on different IoT boards (Wi-Fi, Bluetooth®, LoRa®, GSM, NB-IoT, Sigfox).

    • ArduinoIoTCloud - This library allows to connect to the Arduino IoT Cloud service. .
    • ArduinoBLE - library to use the Bluetooth® Low Energy on a selection of boards.
    • Ethernet - for connecting to the Internet via Ethernet.
    • GSM - for connecting to a GSM/GRPS network with the GSM shield.
    • MKRWAN - library for MKR WAN 1300/1310, for connecting to LoRaWAN® networks.
    • MKRGSM - library for MKR GSM 1400, for connecting to GSM/GPRS networks.
    • MKRNB - library for MKR NB 1500, for connecting to NB-IoT / Cat M1 networks.
    • SigFox - library for MKR FOX 1200, for connecting to the Sigfox network.
    • WiFi - library for the WiFi shield, for Internet connections via Wi-Fi.
    • WiFi101 - library for the MKR 1000 WiFi and WiFi101 shield, for Internet connections via Wi-Fi.
    • WiFiNINA - library for boards with a Wi-Fi NINA module, for Internet connections via Wi-Fi.

    Nano Family Libraries

    Libraries designed for embedded sensors on various Nano boards.

    • ArduinoAPDS9960 - library to use the gesture sensor APDS9960; it senses gesture, color, ambience illumination and proximity.
    • Arduino_LSM6DS3 - library to use the LSM6DS3 6 axis IMU available on the Arduino Nano 33 IoT and the Arduino UNO WiFi Rev. 2.
    • Arduino_LSM9DS1 - library to use the LSM9DS1 9 axis IMU available on the Arduino Nano 33 BLE and the Arduino Nano 33 BLE Sense.
    • Arduino_LSM6DSOX - library to use LSM6DSOX 6 axis IMU available on the Arduino Nano RP2040 Connect.
    • ArduinoLPS22HB - library to use the barometer and temperature sensor LPS22; it is an ultra-compact sensor which functions as a digital output barometer.
    • ArduinoHTS221 - library to use the HTS221 relative humidity & temperature sensor.
    • PDM - library to use the digital microphone MP34DT05 (Nano BLE Sense and Nano RP2040 Connect).


    Libraries for memory management and data storage.

    • EEPROM - reading and writing to "permanent" storage.
    • SD - for reading and writing SD cards.


    Libraries for controlling different displays.

    • LiquidCrystal - for controlling liquid crystal displays (LCDs).
    • TFT - for drawing text , images, and shapes on the Arduino TFT screen.

    MKR Family Libraries

    Libraries listed below are specifically designed to work with Arduino MKR Family products.

    • Scheduler - manage multiple non-blocking tasks (also works with the Arduino Due).
    • RTCZero - Real Time Clock to schedule events.
    • ArduinoMKRGPS - library to be used with the Arduino MKR GPS Shield.
    • ArduinoMKRRGB - library to be used with the Arduino MKR RGB Shield.
    • ArduinoGraphics - library with graphic primitives, works also with the Arduino MKR RGB Shield.
    • ArduinoRS485 - library that implements RS485 on the Arduino MKR RS485 shield.
    • ArduinoMKRENV - library to read all MKR ENV Shield sensors.
    • ArduinoMKRTHERM - library to read the sensors connected to the Arduino MKR THERM Shield.
    • MKRIMU - library to read the acceleration, gyroscope, magnetic field and euler angles from the IMU on your MKR IMU shield
    • ArduinoMotorCarrier - library for controlling the MKR / Nano Motor Carriers.
    • Arduino_MKRIoTCarrier - library for controlling the MKR IoT Carrier


    Libraries for audio sampling and playback.

    • AudioFrequencyMeter - library to sample an audio signal and get its frequency back.
    • AudioZero - library to play audio files from a SD card.
    • ArduinoSound - simple way to play and analyze audio data.
    • Audio - allows playing audio files from an SD card. For Arduino DUE only.
    • I2S - library for using the I2S protocol on SAMD21 (included in SAMD platform).


    Libraries for using your Arduino as either a USB host or device.

    • USBHost - communicate with USB peripherals like mice and keyboards.
    • Keyboard - send keystrokes to an attached computer.
    • Mouse - control cursor movement on a connected computer.


    • Firmata - for communicating with applications on the computer using a standard serial protocol.

    Retired Libraries

    A list of archived libraries for retired products.

    • CurieBLE - interact with smartphones and tablets with Bluetooth® Low Energy.
    • CurieIMU - manage the on-board accelerometer and gyro.
    • CurieTimerOne - allows to use Timer functions.
    • CurieTime - allows to control and use the internal RTC (Real Time Clock).
    • Esplora - this library enable you to easily access to various sensors and actuators mounted on the Esplora board.
    • Robot - this library enables easy access to the functions of the Arduino Robot.
    • Bridge - enables communication between the Linux processor and the microcontroller on the Yún.
    • Ciao - aims to simplify interaction between microcontroller and Linino OS allowing a variety of connections with most common protocols.