ESP-IDF Programming Guide
Espressif's official documentation for ESP-IDF, the development framework for ESP32 chips: setup, API reference for Wi-Fi, Bluetooth, peripherals, FreeRTOS, OTA and power management, plus debugging guides. Essential once you go beyond the Arduino functions on an ESP32. Free and open source.
19.1k (espressif/esp-idf)
GitHub · Sept 2026
v6.1 (August 2026)
GitHub · Sept 2026
Apache 2.0
GitHub · Sept 2026
3.3.12, 17.4k GitHub stars
GitHub · Sept 2026
Guide
Other
Espressif Systems
Setup in an hour, reference for months
Intermediate
Free
What ESP-IDF is
ESP-IDF (Espressif IoT Development Framework) is the official framework for writing firmware for Espressif's ESP32 family of chips. It includes the build system, drivers for every peripheral, the Wi-Fi and Bluetooth stacks, networking and MQTT components, over-the-air update support, power management and FreeRTOS, which ESP-IDF uses as its operating system. The Programming Guide is its documentation: a getting started section, an API reference organised by topic, and API guides that explain how things work underneath.
Even if you write your code in the Arduino IDE, you are using ESP-IDF: Espressif's Arduino core for ESP32 is built on top of it. That is why the ESP-IDF guide is the right place to understand what a function really does on your chip.
Is it worth your time?
If you use an ESP32 for more than a weekend, yes. The Arduino functions cover the basics, but questions like "which pins can I use for analogue input while Wi-Fi is on", "why did my board print a panic message", "how do I update firmware over Wi-Fi safely" or "how big should this task's stack be" are answered in the ESP-IDF guide. Pages such as the ADC, GPIO, FreeRTOS, OTA, sleep modes and fatal errors sections are worth reading even before you switch frameworks.
Choosing the right version and chip
The documentation is versioned and has a separate edition for each chip, such as ESP32, ESP32-S3 or ESP32-C3. Use the chip selector at the top of the page, and the stable version unless your project pins another one. Features and pin limits differ between chips, so reading the wrong edition is a common source of confusion.
Getting started
The getting started section offers several routes: an extension for VS Code, an Eclipse-based IDE, or command-line tools. Pick one, build the hello_world and blink examples, and flash them to your board. Expect the first installation to take an hour or so. After that, working through the examples folder is one of the best ways to learn each component.
Prerequisites
You should be comfortable with C, basic command-line use and the ideas of tasks and interrupts. Beginners are better off starting with the Arduino core and opening these docs alongside it.
Free or paid?
ESP-IDF and its documentation are free and open source under the Apache 2.0 licence.
Common questions
Arduino core or ESP-IDF? Start with the Arduino core for speed, and move to ESP-IDF when you need full control of FreeRTOS, power, security or OTA. The ideas carry over.
Does it cover debugging? Yes. The JTAG debugging and fatal errors pages explain how to use a debugger and how to decode a crash backtrace.
Best for: anyone building a real product or final year project on an ESP32.
Ready to start?
Opens on Espressif Systems in a new tab.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.