

ESP-IDF
Also available in 中文.
Welcome to ESP-IDF
ESP-IDF — the Espressif IoT Development Framework — is our official, production-grade SDK for every Espressif SoC. Whether you are prototyping a sensor node, shipping a Matter-certified product, or building an edge device with AI, ESP-IDF gives you drivers, networking stacks, security features, and build tooling in one place so you can focus on your application.
Why ESP-IDF
One framework, many chips. Use the same APIs, build system, and workflow across all Espressif SoC series. Switch to a newly-released chip to get the latest features, or to a cost-effective one to meet your BOM budget — all without changing your application code.
Built for real products. ESP-IDF powers applications running on over a billion ESP chips shipped worldwide. Our release roadmap includes regular feature and bugfix releases.
Open source on GitHub. Inspect the code and tap into a global community of contributors and commercial partners.
SoCs in the latest release
The latest ESP-IDF release — supports the full Espressif lineup below—pick the radio, performance, and peripherals that fit your design, and stay on one framework as your product evolves.
For the authoritative, up-to-date list (including new chips and targets), see the ESP-IDF Compatibility — Detailed ESP-IDF Support for Chip Revisions.
New chip support status
Track the support status of newly introduced Espressif chips in ESP-IDF and related frameworks, with links to detailed per-chip status pages and rollout updates.

Install ESP-IDF
The fastest path on Windows, macOS, and Linux is the ESP-IDF Installer Manager (EIM). It installs the toolchains, Python environment, and ESP-IDF itself so you can run idf.py build without manual dependency hunting.
Download
Get GUI installers, portable binaries, and release bundles from the EIM downloads page, or install EIM with your platform package manager:
Package manager (recommended)
# Install GUI version
winget install Espressif.EIM
# Install CLI version only
winget install Espressif.EIM-CLITo update EIM later:
winget upgrade Espressif.EIMManual download: Get the installer from the EIM downloads page or from GitHub Releases, then run the .exe. It will automatically detect and install any missing prerequisites and guide you through the setup process.
If you download the CLI-only version (e.g., eim-cli-*.exe), it must be run from a terminal/command prompt rather than double-clicking. Double-clicking opens a terminal window briefly, displays help information, and then closes immediately — which may appear as if the installer crashed. Open PowerShell, navigate to the file location, and run it with .\eim-cli-*.exe --help.
After installation, launch the GUI from the Start Menu or use the CLI:
eim installPackage manager (recommended)
# Add the Espressif tap
brew tap espressif/eim
# Install GUI version (launchable from Applications)
brew install --cask eim-gui
# Or install CLI version only (runnable from terminal)
brew install eimTo update EIM later:
brew upgrade eim
# or
brew upgrade --cask eim-guiManual download: You can also download macOS .dmg or .zip installers from the EIM downloads page — useful if you prefer manual setup or offline installation.
Homebrew works on most Linux distributions:
# Add the Espressif tap
brew tap espressif/eim
# Install CLI only
brew install eim
# Or install GUI (includes CLI)
brew install --cask eim-guiTo update EIM later:
brew upgrade eim
# or
brew upgrade --cask eim-guiThe GUI version requires a graphical environment and may have additional dependencies depending on your Linux distribution.
Package manager (recommended) — Debian, Ubuntu, Linux Mint, etc.
Install the Espressif signing key and add the signed APT repository:
# Install the Espressif signing key
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://dl.espressif.com/dl/eim/eim.gpg -o /etc/apt/keyrings/eim.gpg
sudo chmod 0644 /etc/apt/keyrings/eim.gpg
# Add the Espressif APT repository (deb822 with signed-by)
sudo curl -fsSL https://dl.espressif.com/dl/eim/eim.sources -o /etc/apt/sources.list.d/espressif.sources
# Update package lists
sudo apt update
# Install CLI only
sudo apt install eim-cli
# Or install GUI (includes CLI)
sudo apt install eimTo update EIM later:
sudo apt update && sudo apt upgrade eimManual download: use the EIM downloads page for .deb packages or portable Linux binaries.
Package manager (recommended) — Fedora, RHEL, CentOS, openSUSE, etc.
Import the Espressif signing key and add the RPM repository:
# Import the Espressif signing key
sudo rpm --import https://dl.espressif.com/dl/eim/eim.asc
# Add the Espressif RPM repository
sudo curl -fsSL https://dl.espressif.com/dl/eim/rpm/eim.repo -o /etc/yum.repos.d/espressif-eim.repo
# Install CLI only
sudo dnf install eim-cli
# Or install GUI (includes CLI)
sudo dnf install eimeim.repo enables both gpgcheck=1 (verifies each package) and repo_gpgcheck=1 (verifies repository metadata). If you previously set up this repo manually with gpgcheck=0, you can keep using it as-is — the change only affects new installs.
To update EIM later:
sudo dnf upgrade eimManual download: use the EIM downloads page for RPM packages or portable Linux binaries.
Package manager (recommended) — Arch Linux, Manjaro, EndeavourOS, CachyOS, etc.
# 1. Import and locally sign the Espressif signing key (required once, before pacman -Syu)
curl -fsSL https://dl.espressif.com/dl/eim/eim.asc | sudo pacman-key --add -
sudo pacman-key --lsign-key 06E9A6C0325E124198C685F18B1F38BDC9383E1D
# 2. Add the EIM pacman repository to /etc/pacman.conf
sudo tee -a /etc/pacman.conf << 'EOF'
[eim]
SigLevel = Required DatabaseOptional TrustAll
Server = https://dl.espressif.com/dl/eim/pacman/$arch
EOF
# 3. Update package databases
sudo pacman -Syu
# 4. Install CLI only
sudo pacman -S eim-cli
# Or install GUI (includes CLI)
sudo pacman -S eim-guiImportant: Step 1 (key import) must be done before running
pacman -Syu. Without it, pacman cannot verify the repository database and will refuse to sync. The key fingerprint is06E9A6C0325E124198C685F18B1F38BDC9383E1D.
The GUI package depends on gtk4, libadwaita, and webkit2gtk-4.1, which may require additional setup on some distributions.
To update EIM later:
sudo pacman -SyuManual download: use the EIM downloads page for Arch Linux packages or portable binaries.
After EIM finishes, you have CMake-based projects, Xtensa and RISC-V toolchains, and the same idf.py workflow on every supported OS.
IDEs and editors
Use the tools you already know. ESP-IDF is CMake-first, so any editor with solid CMake and C/C++ support works well. For the most integrated experience, start here:
- Visual Studio Code — Official ESP-IDF extension: setup, flash, monitor, and SDK configuration from the editor
- Eclipse — ESP-IDF plug-in for Eclipse users
- CLion — Open the project as a CMake profile and use CLion’s navigation and debugging
To know more about: Documentation
Everything you need to go from “blink” to production:
- ESP-IDF Programming Guide — Getting started, API reference, and guides
- ESP-IDF on GitHub — Source, issues, and contributions
- Release notes — What changed in each version
- Espressif SoCs — Browse the full SoC portfolio and compare families
- Espressif Documentation — Central hub for Espressif technical documentation across products
- Espressif Products — Modules, dev kits, and product-level information
AI-assisted development (MCP)
Connect ESP-IDF to assistants and automation through Model Context Protocol (MCP) servers:
- ESP-IDF Tools Local MCP Server (ESP-IDF v6.0+) — Exposes your project to compatible assistants; run with
eim run "idf.py mcp-server"(e.g. VS Code Copilot, Cursor) - Espressif Documentation MCP Server — Lets tools query current Espressif documentation, including ESP-IDF, for answers grounded in published docs
ESP Component Registry

Skip boilerplate and pull in maintained, versioned building blocks from the official ESP Component Registry—drivers, protocols, UI helpers, cloud connectors, and more. Add a dependency without vendoring entire trees:
idf.py add-dependency "namespace/component_name"Browse the full catalog at components.espressif.com.
Popular right now
A snapshot of widely used components from the registry:
Frameworks for specialized stacks
When your product needs more than “vanilla” firmware, these Espressif frameworks sit on top of ESP-IDF and accelerate common domains:
- ESP-BROOKESIA — UI toolkit for HMIs and products with displays
- ESP-DSP — Optimized digital signal processing for audio, control, and analytics on-chip
- ESP-WHO — Vision pipeline building blocks for ESP32-class devices with a camera
- ESP-Matter — Matter connectivity aligned with Espressif silicon and certification paths
- ESP-Zigbee-SDK — Zigbee stack for IEEE 802.15.4–capable chips such as ESP32-C6 and ESP32-H2
Follow us on the community side
Join other ESP32 and ESP-IDF developers for questions, project showcases, and informal support:
- ESP32.com forum — Official Espressif community forum
- r/esp32 on Reddit — News, builds, and discussion
- Espressif Discord — Real-time chat with the community
Related

Recovery Bootloader

Building an OpenCode Companion with ESP-BLE-UART and ESP-VoCat

Build a Cloud-connected device with ESP RainMaker Studio

AES67 audio-over-IP on the ESP32-P4

Rust smoltcp as an alternative TCP/IP stack for ESP-IDF

Introducing the esp_trace component

ESP-IDF Tools Local MCP Server: Build, Flash, and Manage Projects from Your AI Assistant

ESP-IDF: Propagating compiler flags to ExternalProject builds

C++ Components for ESP-IDF

ESP-IDF v6.0: Default libc Switches from Newlib to PicolibC

Introducing the SPIFFS component

Announcing ESP-IDF v6.0

Understanding the EU Cyber Resilience Act (CRA)

Staying Ahead with ESP32 Security Updates

ESP-IDF Installation Manager v0.8: Streamlined Setup for ESP-IDF Development

Introducing ESP-IDF button component

ESP-IDF tutorial series: GPIO get started - Part 2

Secure DNS for ESP32: A Quick Guide to ESP DNS Component

ESP-IDF tutorial series: GPIO get started - Part 1

Introduction to Fuzzing ESP-IDF components

Changes in the Configuration System in ESP-IDF v6: Default Values

Manage multiple ESP-IDF build configurations with ease

Optimizing RAM Usage on ESP32-C2


Extending idf.py: Create custom commands for your ESP-IDF workflow

ESP-IDF tutorial series: Object oriented programming in C

ESP-IDF tutorial series: Logging

Transparent Wi-Fi connectivity for non-Wi-Fi ESP32 chips

Implementing a Deep-sleep wake stub application on Espressif chips to enable power-efficient IoT devices

