Arduino IDE Guide to Install, Configure and Upload Code

ArduinoBy October 29, 2026Fact-checked by Hugo Lindgren
Arduino IDE Guide to Install, Configure and Upload Code

The Arduino IDE is the free, official software for writing Arduino code (called sketches) and uploading it to Arduino and compatible boards. To get started, download the 2.x version for your operating system from Arduino’s software page, install it, add your board’s package, pick the port and press Upload. This guide walks through each step on Windows, macOS and Linux, then covers the settings, libraries and upload fixes you will actually need.

Last checked: October 29, 2026.

BoardArduino Uno R3 or R4
DifficultyBeginner
Time30 minutes
CostFree software

What the Arduino IDE Actually Does

IDE stands for integrated development environment. In practice, it is a code editor plus a compiler plus an uploader in one window.

You write a sketch in the editor and click Verify. The IDE compiles it with the right toolchain for your board, such as avr-gcc for an Uno R3. Then you click Upload, and the IDE sends the compiled binary over USB to the board’s bootloader.

Arduino IDE 2.x is the current line. It is built on the Eclipse Theia framework and uses Arduino CLI under the hood. Compared with the old 1.8 series, it adds:

  • Code autocompletion and live error hints
  • A built-in debugger on supported 32-bit boards
  • A dark theme and a modern Serial Monitor and Serial Plotter
  • Sync with your Arduino Cloud sketchbook

The project is open source. The code lives in the arduino/arduino-ide repository on GitHub, where you can read the source, report bugs through Issues and follow development. For usage questions, the Arduino Forum and the official Help Center are faster than filing a bug.

Which Arduino Software Should You Use?

Arduino offers more than one tool. Here is how they compare.

Tool Runs where Best for Notes
Arduino IDE 2.x Windows, macOS, Linux desktop Most beginners and hobbyists Current official desktop IDE, free
Arduino IDE 1.8.19 Windows, macOS, Linux desktop Very old computers, legacy tutorials Final 1.x release, no new features
Arduino Cloud Editor Web browser Chromebooks, shared lab machines Needs the Arduino Cloud Agent for USB uploads
Arduino CLI Command line Scripts, automation, CI builds Same engine the IDE 2 uses
PlatformIO in VS Code Desktop editor extension Larger multi-file projects Not made by Arduino; steeper setup

For a first board, install IDE 2.x. Move to PlatformIO later if your projects grow to dozens of files.

Arduino IDE Download and System Requirements

Go to the Software section of the official Arduino website and pick the build for your system. Avoid third-party download mirrors. Repackaged installers are a common way to pick up adware.

Operating system Minimum supported Download formats
Windows Windows 10 or newer, 64-bit .exe installer, .msi installer, ZIP
macOS 10.15 Catalina or newer, 64-bit .dmg for Intel or Apple Silicon
Linux 64-bit (x86-64) AppImage, ZIP

The site may ask for a donation before the download starts. You can choose “Just Download” and pay nothing.

Installing on Windows

  1. Run the .exe installer.
  2. Choose “Anyone who uses this computer” or “Only for me.” Either works.
  3. Accept the prompts to install USB drivers. Saying no here is the top cause of “no port found” later.
  4. Launch Arduino IDE from the Start menu.

Installing on macOS

  1. Open the .dmg that matches your Mac (Apple Silicon for M-series chips, Intel otherwise).
  2. Drag Arduino IDE into the Applications folder.
  3. Open it. If macOS warns about a downloaded app, confirm you want to open it.
  4. Allow the network or accessory permission prompts on first launch.

Installing on Linux

Make the AppImage executable and run it:

chmod +x arduino-ide_*_Linux_64bit.AppImage
./arduino-ide_*_Linux_64bit.AppImage

Two Linux-specific fixes save a lot of grief. On Ubuntu 22.04 and newer, the AppImage needs FUSE 2. Install libfuse2 (named libfuse2t64 on Ubuntu 24.04). Then give your user access to serial ports:

sudo usermod -a -G dialout $USER

Log out and back in for the group change to apply.

Maker tip

On Linux, if the port shows up but uploads fail with “permission denied,” you skipped the dialout step or did not log out afterward.

A Tour of the IDE Window

The layout is simple once you know where things sit.

  • Toolbar (top left): Verify (checkmark), Upload (arrow) and Debug.
  • Board and port selector: the dropdown next to the toolbar.
  • Left sidebar: Sketchbook, Boards Manager, Library Manager, Debug and Search.
  • Editor: where your sketch lives, in .ino files.
  • Output panel (bottom): compiler messages and upload progress.
  • Serial Monitor and Serial Plotter: icons at the top right.

These shortcuts are worth learning on day one:

Action Windows / Linux macOS
Verify (compile) Ctrl + R Cmd + R
Upload Ctrl + U Cmd + U
Serial Monitor Ctrl + Shift + M Cmd + Shift + M
Auto Format code Ctrl + T Cmd + T
Upload Using Programmer Ctrl + Shift + U Cmd + Shift + U
Save Ctrl + S Cmd + S

Configure the Settings That Matter

Open File > Preferences (on macOS, Arduino IDE > Settings). Most defaults are fine. Change these:

  • Sketchbook location: where your projects and libraries live. Put it somewhere that gets backed up.
  • Show verbose output during compile and upload: tick both. Error messages become far more useful.
  • Compiler warnings: set to “Default” or “More.” Warnings catch real bugs.
  • Editor font size and theme: pick what is readable for you.
  • Language: the interface supports many languages, and you can switch here.
  • Additional boards manager URLs: paste package index URLs for third-party boards like the ESP32.

Install Board Packages and Libraries

The IDE only knows how to compile for boards whose “core” is installed. Open the Boards Manager from the left sidebar and search for your board.

Board Package to install in Boards Manager Extra URL needed?
Uno R3, Nano, Mega 2560 Arduino AVR Boards No, preinstalled
Uno R4 Minima, Uno R4 WiFi Arduino UNO R4 Boards No
Nano 33 BLE Arduino Mbed OS Nano Boards No
ESP32 dev boards esp32 by Espressif Systems Yes, from Espressif’s docs
Raspberry Pi Pico / Pico W Raspberry Pi Pico/RP2040 by Earle Philhower Yes, from the project’s README

For third-party boards, copy the package index URL from the maintainer’s official documentation, paste it into Additional boards manager URLs, then search Boards Manager again.

Libraries work the same way. Open the Library Manager, search by name (for example “Servo” or “Adafruit NeoPixel”), and click Install. If a library is only on GitHub as a ZIP, use Sketch > Include Library > Add .ZIP Library.

Upload Your First Sketch

Blink is the hello world of Arduino. It flashes the onboard LED, so you need no extra wiring. On the Uno, that LED is tied to digital pin 13, a general purpose input output pin that the LED_BUILTIN constant points to.

Build steps

  1. Plug the board in with a data-capable USB cable.
  2. Pick your board and port from the dropdown.
  3. Open File > Examples > 01.Basics > Blink.
  4. Click Upload and wait for “Done uploading.”

Here is the sketch, with a serial message added so you can test the Serial Monitor too:

// Blink with serial output
// Tested on Arduino Uno R3 (Arduino AVR Boards core)

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
  Serial.println("Blink started");
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  Serial.println("LED on");
  delay(1000);

  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("LED off");
  delay(1000);
}

Open the Serial Monitor and set the baud rate dropdown to 9600. You should see the on and off messages once per second.

Power check

USB supplies 5 V at roughly 500 mA. An Uno I/O pin is safe up to about 20 mA continuous, so always use a resistor with external LEDs.

How it works

setup() runs once at power-up or reset. It sets pin 13 as an output and opens serial at 9600 baud. loop() then runs forever, switching the pin between 5 V and 0 V with a one-second pause each time.

Troubleshooting Upload Errors

Most first-day failures come from the cable, the port or the board selection, not the code.

  • No port listed: your USB cable may be charge-only. Swap it. Clones with a CH340 USB chip may also need the CH340 driver on older systems.
  • “programmer is not responding” or “stk500_getsync”: wrong board or port selected. On older Nano clones, choose Tools > Processor > ATmega328P (Old Bootloader).
  • ESP32 stuck on “Connecting…”: hold the BOOT button until upload starts.
  • Port busy: close any other program using the serial port, including a second IDE window.
  • “was not declared in this scope”: a typo, a missing library, or a missing #include line.

Turn on verbose upload output before you go searching the forum. The full log usually names the real problem.

Is the Arduino Language C or C++?

It is C++. The Arduino “language” is C++ with a library of helper functions such as digitalWrite() and delay(). Before compiling, the IDE adds #include <Arduino.h> and generates function prototypes for you. That is why a sketch can call a function defined further down the file. Everything else is standard C++ compiled with GCC.

Next Steps

With Blink running, you have proven the full chain: editor, compiler, driver, cable and board. Try the Serial Plotter with an analog sensor, add a library, or pick from our Arduino projects worth building. Keep your sketchbook backed up, and update board packages from Boards Manager when the IDE prompts you.

FAQ

What is the IDE for Arduino?

It is the Arduino IDE, the free official desktop app for writing, compiling and uploading sketches. Version 2.x runs on Windows, macOS and Linux. Arduino also offers a browser-based Cloud Editor.

Which Arduino IDE is best?

For most people, Arduino IDE 2.x. It is official, free and supports autocompletion and debugging. Use the Cloud Editor on Chromebooks, and consider PlatformIO in VS Code for large multi-file projects.

How do I install Arduino IDE?

Download the installer for your system from Arduino’s official software page. On Windows, run the .exe and accept the driver prompts. On macOS, drag the app to Applications. On Linux, make the AppImage executable and add your user to the dialout group.

Is Arduino IDE C or C++?

Sketches are C++. The IDE adds a little preprocessing and the Arduino core library, then compiles with GCC. Any valid C++ that fits your board’s memory will work.