What Programming Language Does ESP32 Use?

When it comes to developing IoT projects, the ESP32 is the first microcontroller board that comes to mind. It’s a low-cost, low-power device that provides Wi-Fi and Bluetooth capabilities, making it ideal for a wide range of applications.

One of the key factors that make the ESP32 so popular is the range of programming languages available for it. This article covers the most popular programming languages for the ESP32.

Table of Contents

ESP32 Programming Languages


ESP32 Programming Languages

The ESP32 microcontroller can be programmed using several languages, including C, C++, and Python. Let’s examine each language supported by ESP32 in more detail.

C Language

Microcontrollers like ESP32 support C as a programming language for these boards. The ESP32 SDK, which is a set of libraries and tools for developing applications for the ESP32, is written in C. C is a low-level language that provides direct access to the hardware, making it a good choice for programming microcontrollers.

C++ Language

C++ is another language used with microcontroller boards including ESP32. C++ is a subset or extension of C language as it also includes object-oriented programming which is missing in C. The ESP32 SDK also supports C++ programming, and many developers prefer to use C++ because of its more advanced features.

Python Language (MicroPython)

MicroPython is a version of the Python programming language that has been optimized to run on microcontrollers such as the ESP32. MicroPython provides a simplified programming interface that makes it easy to get started with the ESP32.

MicroPython provides a REPL (Read-Eval-Print Loop) interface, which allows us to interactively test code on the ESP32. Additionally, MicroPython has a vast library of modules that simplify complex tasks such as network connectivity, file I/O, and more.

MicroPython is equipped with advanced functionalities like an interactive prompt, closures, generators, and exception handling, among others. It required only 16 kb RAM and free space of up to 256kb for MicroPython code.

Following is the tutorial for setting up MicroPython with ESP32.

Getting Started MicroPython (Python) with Thonny IDE and ESP32.

Circuit Python

Circuit Python is another Python-based programming language that’s designed specifically for microcontrollers. It’s similar to MicroPython in many ways, but it’s optimized for use with Adafruit’s line of microcontrollers. Circuit Python provides an easy-to-use interface for accessing hardware peripherals, and it includes a library of pre-built modules for various tasks such as interacting with sensors, reading, and writing data to external storage, and more.

Mu is a user-friendly code editor designed specifically for Circuit Python, which is compatible with the Windows, Mac, and Linux operating systems. Check the Download Link for Mu Editor.

For Circuit Python Download Circuit Python.

Here is an article on Mu editor with ESP32:

Getting Started with ESP32 Using Circuit Python and Mu Editor.

Programming Environments to Program ESP32

There are some programming environments as well that can be used to program ESP32.

  • Arduino
  • NodeMCU
  • Mongoose


Arduino is another platform that is supported by ESP32. Arduino IDE uses Arduino code written in a variant of the C++ programming language and is compiled into machine code that runs on the ESP32.

Arduino provides a simplified programming environment for beginners. It also has a vast library of pre-built functions and modules that simplify complex tasks such as connecting to Wi-Fi networks, interacting with sensors, and more.

To set up ESP32 with Arduino IDE for the very first time, read:

Installing the ESP32 Board in Arduino IDE.


NodeMCU is a firmware that’s designed to run on the ESP8266 and ESP32 microcontrollers. It’s based on the Lua programming language, which is a lightweight scripting language that’s easy to learn. NodeMCU provides an easy-to-use interface for interacting with the hardware peripherals on the ESP32, and it includes a vast library of modules for various tasks such as connecting to Wi-Fi networks, interacting with sensors, and more. For NodeMCU firmware Click Here.


Mongoose is a networking library designed to work with the ESP32 microcontroller. Mongoose has an easy-to-use API for interacting with Wi-Fi networks, TCP/IP protocols, and more. Mongoose is written in the C programming language, which makes it a bit more complex to use than some of the other programming languages on this list. However, it’s a powerful tool for developing complex networking applications on the ESP32.

Check this link to download Mongoose OS.


The ESP32 microcontroller can be programmed using several languages, including C, C++, and Python. Selecting the programming language for ESP32 depends on different factors, including experience level, project requirements, and personal preference. The above article highlighted all the programming languages supported by the ESP32 board.

About the author


I am an Electrical Engineer. I love to write about electronics. I am passionate about writing and sharing new ideas related to emerging technologies in the field of electronics.