Which IDE should you use for the ESP32? Arduino IDE, VS Code and friends

A comparison of environments for programming the ESP32: Arduino IDE 2.x, VS Code with PlatformIO, VS Code with ESP-IDF, Thonny and CLion. Which one to pick per framework.

Also available in: EN, ES

Series Introduction to the ESP32 Part 15 View the series →
Comparison of IDEs for the ESP32

Choosing an IDE looks like a small decision and it is not: it is where you will spend hundreds of hours. The good news is that the choice depends almost entirely on the framework you picked.

The table

IDEIdeal frameworkProsCons
Arduino IDE 2.xArduinoSimple, all includedLimited, no real debugging
VS Code + PlatformIOArduino, ESP-IDF, Rust, MicroPythonPowerful, multi-board, debuggingMore setup
VS Code + ESP-IDFESP-IDFOfficial, JTAG, menuconfigESP-IDF only
ThonnyMicroPythonGreat to startMicroPython only
CLion / RustRoverRustTop refactor and debuggingCommercial / heavy

Arduino IDE 2.x

It is the “open and it works” option. Add the board URL, pick the board, hit upload. Done.

  • Pros: zero friction, built-in library manager.
  • Cons: weak editor, no serious IntelliSense, no JTAG debugging, and it struggles with large projects.
  • Ideal for: learning, small sketches, workshops.

VS Code + PlatformIO

My general recommendation. PlatformIO turns VS Code into a real IDE:

  • One environment for Arduino, ESP-IDF, Rust or MicroPython, with the same flow (build / upload / monitor).
  • platformio.ini: the project config is text, versionable.
  • Cross-platform and multi-board: switch from ESP32 to ESP8266, STM32 or RP2040.
  • Debugging with debug_tool and the right hardware.
  • Per-project dependency management (not global).

Ideal for: almost everything, especially if you will have several projects.

VS Code + the ESP-IDF extension

If you pick ESP-IDF, this is the official option: it integrates idf.py, menuconfig, the serial monitor and JTAG debugging inside VS Code.

  • Pros: official, real JTAG, Kconfig one click away.
  • Cons: it is meant only for ESP-IDF; the flow differs a bit from PlatformIO.
  • Ideal for: serious ESP-IDF projects.

Thonny (MicroPython)

For MicroPython, Thonny is the friendliest thing around: one button to flash the firmware, a built-in REPL and a file browser for the board.

Ideal for: teaching, learning, quick prototypes.

CLion / RustRover / VS Code (Rust)

If you program in Rust, the flow is cargo + espflash, so almost any editor works. VS Code with rust-analyzer is enough; CLion adds better refactoring and debugging.

How to choose (without getting it wrong)

If you use…Use…
Arduino coreVS Code + PlatformIO (or Arduino IDE to start)
ESP-IDFVS Code + ESP-IDF
MicroPythonThonny
RustVS Code + rust-analyzer
Several frameworksVS Code + PlatformIO

You do not have to decide forever: VS Code + PlatformIO covers almost every framework, so you can start there and add the ESP-IDF extension when you need it.

Extras that make a difference

  • Serial monitor with colors and timestamps: that is 30 % of your working time.
  • JTAG debugging (ESP32-S3/C3): real breakpoints, not printf.
  • Automatic formatting (clang-format) and linting.
  • Integrated Git: firmware deserves version control too.

Summary

  • Arduino IDE 2.x: start fast. PlatformIO: the most complete and versatile. VS Code + ESP-IDF: the official one for ESP-IDF. Thonny: MicroPython.
  • Choose based on your framework, not habit.
  • PlatformIO is the safest bet if you will touch several frameworks.
  • JTAG debugging is the quality jump once the project grows.

Next step: Arduino IDE 2.x step by step or VS Code + PlatformIO. Or go back to the series hub.

Related posts

↑↓ navigate ↵ open Esc close