Simulator

ESP8266 simulator, running in this tab

Mokxi is a free ESP8266 simulator that runs in your browser, with nothing to install and no account needed. Mokxi models the NodeMCU V1.0: an ESP-12E with its Xtensa LX106 at 80 MHz, the GPIO block, the RTC pin that is D0, UART0 and the ten-bit ADC behind the board’s divider. No radio and no PWM hardware, because the chip has neither. The WiFi here is simulated and says so. Wire the circuit, press Run.

  • 192parts on the bench
  • 25boards running now
  • 1.00xreal time, on every board
NodeMCU: blinklive0.000 s 0.00x
Click to open it in the editor
Real firmware, running right now on our own core. Click it to open the circuit in the editor.
What is modeled

The numbers, not the marketing

Taken from the board's own contract document and put in plain words.

The core
Xtensa LX106 in the call0 ABI (sixteen registers and no window), one instruction per cycle at 80 MHz.
D0 to D8 are not GPIO numbers
D4 is GPIO 2, D2 is GPIO 4, D3 is GPIO 0, D0 is GPIO 16. Both on-board LEDs are active low. The model keeps every one of those, because the board does.
What is not there
No radio in any form, no flash or filesystem, no hardware timers and no PWM peripheral. analogWrite is software, 0 to 1023, and costs the core two wake-ups a period, exactly as on the real part. WiFi is simulated: the Arduino API over a network of ours, with no 802.11 and no real internet behind it.
Go further

The full board page

Every peripheral area, every example and the wiring notes, in one place.

ESP8266 NodeMCU simulatorBlink, a button and the serial monitor, running.

Questions

Is it free?

Yes, with no card and no account needed to try it.

Does it do WiFi?

Simulated WiFi, yes, and it says so. Your sketch uses the real Arduino calls and the board joins, fetches and serves. There is no radio, no 802.11 and no real internet under it, and on a chip whose reason to exist is the radio, that is said first rather than last.

Why is digitalWrite(2, HIGH) not D2?

Because D4 is GPIO 2 on this board. The silkscreen names are not GPIO numbers, and the runtime defines D0 to D8 so you can write the name you are looking at.

Can I compile my own sketch?

Yes. Edit the sketch and press Run: it compiles in the tab with clang for Xtensa, and the build panel shows every step. Nothing is uploaded.

Is analogRead accurate?

The pin is: ten bits of the real voltage, behind the NodeMCU’s own 220k/100k divider, so the header reads to about 3.2 V. The registers behind it are this model’s own, because Espressif never published the chip’s, which makes analogRead the one call here you would have to change for real hardware, and the contract says so.

Try your own firmware on the NodeMCU

What you build here runs on the board on your desk, unchanged. Nothing to install and no account needed.