Setting up your ESP32 for the first time means installing the Arduino IDE and adding ESP32 board support before you can upload any code. This guide walks through the full installation and configuration process, including the board manager setup, driver troubleshooting, and your first test upload.
By the end of this guide, your Arduino IDE will be installed, configured for ESP32 development, and you will have uploaded a working test program to confirm everything is set up correctly.
What You'll Need
- A computer running Windows, macOS, or Linux
- An ESP32 development board
- A USB cable compatible with your ESP32 (data capable, not charge only)
- An internet connection for downloading the IDE and board files
Step 1 – Download and Install the Arduino IDE
- Open your web browser
- Go to the official Arduino website
https://www.arduino.cc/en/software - Download the latest Arduino IDE for your operating system
- Run the installer and follow the prompts

During installation:
- Click I Agree

- Select either option and click Next

- Use the default installation path and click Install


The Arduino IDE is now installed. The installation steps are nearly identical across Windows, macOS, and Linux.
Direct download links:
Step 2 – Open the Arduino IDE
When the Arduino IDE opens for the first time, a blank editor window appears. If prompted to install additional components, allow the IDE to proceed.

Step 3 – Install ESP32 Board Support in Arduino IDE
The Arduino IDE does not include ESP32 support by default. Board support needs to be installed manually through the Board Manager before any ESP32 board will appear as a selectable option.
- Click Tools
- Click Board
- Click Board Manager

In the Board Manager window:
- Search for esp32
- Find esp32 by Espressif Systems
- Click Install

The installation may take a few minutes to complete, since it downloads the full ESP32 toolchain and compiler files.
Step 4 – Select Your ESP32 Board
- Click Tools
- Click Board
- Select your ESP32 board model. If you're unsure which board you have or are using one of our kits, select ESP32 Dev Module

Newer ESP32 variants need their specific board entry rather than the generic Dev Module option:
- ESP32-S3 boards should use an entry such as ESP32S3 Dev Module
- ESP32-C3 boards should use ESP32C3 Dev Module
- ESP32-C6 boards should use ESP32C6 Dev Module
Selecting the wrong variant will usually still allow the sketch to compile, but uploads will fail or the board will not run correctly, since the chip architecture and pin mapping differ between variants.
Step 5 – Connect the ESP32 and Select the Port
- Click Tools
- Click Port
- Take note of the available ports
- Connect your ESP32 to your computer using a USB cable
- Select the new port that appears

ESP32 Not Appearing in the Port List
If no new port appears after connecting the board, the most common cause is a missing USB to serial driver. Most ESP32 boards use either a CP2102 or CH340 chip to handle the USB connection, and the required driver depends on which one your board uses.
- Check the board's silkscreen or listing for the chip name, then install the matching CP2102 or CH340 driver for your operating system
- Try a different USB cable, since many cables are power only and cannot transfer data
- Try a different USB port, particularly if using a USB hub
- On Linux, add your user account to the dialout group and restart the session, since the port may otherwise be inaccessible due to permissions
- On macOS, allow the driver in System Settings under Privacy and Security if a security prompt appears after installation
Step 6 – Upload the Blink Example
The Blink example is a simple test that confirms your ESP32 is working correctly.
- Click File
- Click Examples
- Click Basics
- Click Blink

ESP32 boards do not define LED_BUILTIN by default. Add the following line at the very top of the sketch.
#define LED_BUILTIN 2

Click the Upload button to send the code to your ESP32. If the upload completes without errors, the built in LED on your ESP32 should begin blinking.
How the Code Works
This program turns the ESP32 built in LED on and off once every second.
- #define LED_BUILTIN 2 sets the GPIO pin used for the LED
- setup() runs once when the ESP32 starts
- loop() runs repeatedly while the board is powered
- digitalWrite() controls the LED state
- delay(1000) pauses execution for one second
Frequently Asked Questions
Do I need special drivers to use ESP32 with Arduino IDE?
Most ESP32 boards need a CP2102 or CH340 USB to serial driver installed before the board will appear as a selectable port. Check your board's USB chip and install the matching driver if the port does not appear after connecting.
Which board option should I select for ESP32-S3 or ESP32-C3?
Select the board entry matching your specific chip variant, such as ESP32S3 Dev Module or ESP32C3 Dev Module, rather than the generic ESP32 Dev Module option, since the pin mapping and upload settings differ between variants.
Why does the upload fail even though the code compiles?
A successful compile only confirms the code is valid. Upload failures are almost always caused by an incorrect board selection, an incorrect port selection, or a missing USB driver.
Continue the ESP32 Tutorial Series
This guide is part 1 of our step-by-step ESP32 tutorial series for beginners.
- ESP32 Tutorials Hub
- Part 2: ESP32 Libraries and Using the Serial Monitor
- Part 3: ESP32 LED Blink
- Part 4: ESP32 Using a Passive Buzzer Tutorial
- Part 5: Reading a Photosensitive Resistor (LDR)
- Part 6: Using a Push Button with ESP32
- Part 7: ESP32 Using DHT11 Temperature & Humidity Sensor
- Part 8: ESP32 Detecting Motion With HC-SR501 PIR Sensor
- Part 9: Detect Objects with IR Module
Your Arduino IDE is now installed, configured for ESP32 development, and you have uploaded a working test program. If you don't have an ESP32 yet, have a look through our ESP32 guide, exploring popular models, features and applications. Ready to grab a board? Check out our selection of ESP32 boards available.
Next in the series: Installing Libraries and Using the Serial Monitor