Open-source project
esp8266/Arduino avatar
esp8266/Arduino

esp8266/Arduino: the ESP8266 core for the Arduino IDE and PlatformIO

ESP8266 core for Arduino

16,689 stars13,063 forksC++LGPL-2.1

At a glance

What is it?
The ESP8266 Arduino core lets you run Arduino sketches directly on the ESP8266 WiFi chip, with no second microcontroller. Here is how it installs, what it ships, and where it stops being the right choice.
Who is it for?
Adopt esp8266/Arduino if you already have ESP8266 boards and want Arduino-style sketches with WiFi, mDNS, SSDP, OTA and a flash file system available without wiring a second microcontroller. Do not adopt it if you need ESP32 features, or if you expect the same code to run unchanged on both chips: the core targets one chip family.
Can I use it commercially?
Yes, with conditions. LGPL-2.1 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
Is it still maintained?
Yes. The repository last received commits 34 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the ESP8266 Arduino core actually replaces

The ESP8266 is a WiFi chip, not a general purpose board with an Arduino-compatible bootloader out of the box. This project supplies that layer. According to the README, it "brings support for the ESP8266 chip to the Arduino environment" so you can write sketches with the familiar Arduino functions and libraries and run them directly on the chip, "with no external microcontroller required". That last phrase is the whole point. The alternative pattern, an ATmega328 talking to an ESP8266 over a serial AT command set, costs you a second chip, a second power rail and a fragile command protocol. This core removes all three. The audience is anyone who has ESP8266 hardware and Arduino experience: hobby boards, sensor nodes, small WiFi endpoints, and people porting an existing Arduino sketch who want the network stack in the same binary.

What ships in the core: WiFi, servers, OTA and a flash file system

The README lists the bundled libraries plainly: TCP and UDP communication over WiFi, HTTP, mDNS, SSDP and DNS servers, OTA updates, a file system in flash memory, and support for SD cards, servos, SPI and I2C peripherals. Read that list as the actual scope of the project. A sketch can start an HTTP server, answer mDNS queries so the device is reachable by name, and update itself over the network, all without pulling in a third-party library for each. The flash file system matters for the same reason: configuration and static assets live on the device instead of being compiled into the binary. The repository layout backs this up. There are cores/, libraries/, variants/, tools/, bootloaders/ and a boards.txt at the top level, which is the structure the Arduino build system expects from a third-party platform package. The file system and OTA support are exactly the parts that a bare Arduino AVR toolchain does not give you.

Installing esp8266/Arduino through Boards Manager

The README's primary install path is Boards Manager, which works with Arduino IDE 1.x or 2.x. Install the IDE first, then open Preferences and add the package index URL to the Additional Boards Manager URLs field. Multiple URLs are allowed if you separate them with commas.

text
https://arduino.esp8266.com/stable/package_esp8266com_index.json

After that, open Boards Manager from the Tools > Board menu and install the esp8266 platform. The README is explicit about the step people skip: select your ESP8266 board from Tools > Board after installation. If the board list still shows only AVR boards, the platform did not install. The same README also points to a git version for people who want the latest master branch, with separate instructions for the Arduino IDE and for PlatformIO, and to makeEspArduino as a generic makefile for automated and production builds.

A first sketch and the second install path

Once the platform is installed, the usual Arduino flow applies: pick the board, pick the port, upload. The core is what makes the WiFi headers available to that sketch. If you prefer a command-line build system, the README documents PlatformIO as an alternative host, describing it as an open source ecosystem for IoT development with a cross-platform build system and a library manager, and noting that it runs on macOS, Windows, Linux 32/64 and Linux ARM. PlatformIO's own documentation covers the staging version of the framework and the advanced settings for uploading to SPIFFS and for OTA. The repository's package.json names the framework package and reports its version, which is what a PlatformIO build resolves against:

json
{
    "name": "framework-arduinoespressif8266",
    "description": "Arduino Wiring-based Framework (ESP8266 Core)",
    "url": "https://github.com/esp8266/Arduino",
    "version": "3.2.0-dev"
}

That version string is worth pausing on. It says 3.2.0-dev, while the most recent tagged releases listed for the project are 3.1.2, 3.1.1 and 3.1.0. A PlatformIO build pointed at the staging version is not the same artifact as a Boards Manager install of the released platform.

Where the core stops being the right tool

This is a single-chip-family core. It targets the ESP8266 and nothing else, so it is the wrong tool if your project needs ESP32 features, and it will not carry an ESP32 sketch. It is also the wrong tool if you want one codebase across both chips; that is a different problem than the one this repository solves. The bundled library list is a scope statement in the other direction too: it covers TCP, UDP, HTTP, mDNS, SSDP, DNS, OTA, flash file system, SD, servo, SPI and I2C. Anything outside that list is on you. Support expectations are worth reading before you file anything. The README routes general questions, "How do I..." questions and problems with third-party libraries to the ESP8266 community forum or Stack Overflow, and reserves the GitHub issue tracker for bugs in the core or its associated libraries and for enhancement proposals. If you open an issue, the template asks for the core version, your sketch in a code block, serial output for runtime problems, and verbose compiler output for compile-time problems. Missing that context is the most common way to get an issue closed rather than fixed.

How it compares with PlatformIO and makeEspArduino

These are not competitors in the usual sense; the README presents them as install and build options around the same core, and the difference is in workflow. Boards Manager installs the platform inside the Arduino IDE and gives you the editor, board menu and upload button, which suits interactive development and people who already work in that IDE. PlatformIO is a separate cross-platform build system with its own library manager and IDE integrations, and it is the better fit when you want builds driven from a config file and run outside the Arduino IDE. makeEspArduino is a generic makefile for any ESP8266 Arduino project, and the README recommends it for automated and production builds specifically because using make instead of the IDE makes that easier. The trade-off is real: the IDE path is the shortest to a first upload, and the make or PlatformIO paths are the ones that fit a build server. Choosing between them is a decision about your build pipeline, not about which core you get.

Licence, release cadence and what upgrading costs

The project is licensed LGPL-2.1, and the repository carries a LICENSE file plus a POLICY.md at the top level. LGPL-2.1 is a copyleft licence with specific obligations around modified library code and relinking, and those obligations depend on how you distribute your firmware. That is a question for your own legal review, not something this article can settle. On cadence, the last push to the repository was on 2026-08-27, and the most recent tagged release is 3.1.2 from 2023-03-20. Those two dates tell different stories: the tree is being touched, but the released platform that Boards Manager serves is not the same thing as master. The README links two separate documentation sets, one for the latest release and one for the current git version, which is the project's own acknowledgement that they diverge. Upgrading a released platform means moving between tagged versions and checking the release notes; building the git version means tracking a moving target with documentation that describes it as such. Budget for that difference before you pin a version in a product.

Editorial conclusion

Adopt esp8266/Arduino if you already have ESP8266 boards and want Arduino-style sketches with WiFi, mDNS, SSDP, OTA and a flash file system available without wiring a second microcontroller. Do not adopt it if you need ESP32 features, or if you expect the same code to run unchanged on both chips: the core targets one chip family. Before committing, verify which core version Boards Manager resolves for your board, confirm your flash size and board choice in the IDE settings, and read the release notes for 3.1.2 rather than assuming the git version matches the release. Note that the repository's package.json reports version 3.2.0-dev, so the git version is ahead of the last tagged release.

Frequently asked questions

How do I install esp8266/Arduino in the Arduino IDE?

Install Arduino IDE 1.x or 2.x, open Preferences, and add https://arduino.esp8266.com/stable/package_esp8266com_index.json to the Additional Boards Manager URLs field. Then open Boards Manager from Tools > Board, install the esp8266 platform, and select your ESP8266 board from the Tools > Board menu.

Is esp8266/Arduino the same as the Arduino IDE?

No. The Arduino IDE is the editor and upload tool; esp8266/Arduino is a third-party platform package that adds ESP8266 chip support to it. The README lists the IDE as a prerequisite you download and install separately.

Can I build esp8266/Arduino projects without the Arduino IDE?

Yes. The README documents PlatformIO, an open source ecosystem for IoT development with a cross-platform build system and library manager, and makeEspArduino, a generic makefile the README recommends for automated and production builds.

What libraries come with the esp8266/Arduino core?

The README lists libraries for WiFi over TCP and UDP, HTTP, mDNS, SSDP and DNS servers, OTA updates, a file system in flash memory, and support for SD cards, servos, SPI and I2C peripherals.

Which version of esp8266/Arduino am I getting?

The most recent tagged releases listed are 3.1.2, 3.1.1 and 3.1.0, while the repository's package.json reports version 3.2.0-dev for the framework. A Boards Manager install and a staging git or PlatformIO build are not necessarily the same artifact.

Official sources

  1. esp8266/Arduino on GitHub
  2. Issues
  3. License: LGPL-2.1
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/esp8266-arduino.svg)](https://hysenlabs.com/projects/esp8266-arduino)