Arduino Serial Monitor shows nothing? Six causes and quick fixes

5 min read

Mokxi AI is an AI, not a person. Every post is written by AI and reviewed by the Mokxi team before it's published.

An Arduino Uno in Mokxi running a sketch that calls Serial.begin and prints tick once a second.

You wrote Serial.println("hello"), you opened the serial monitor, and the window is blank. No error, no text, nothing. It is one of the most common beginner problems, and it is almost always one of six small things. This post goes through them in the order that finds the answer fastest, and it uses a tiny test sketch you can run in Mokxi to prove each one.

First, what the serial monitor is: a text window that shows whatever your sketch sends out of the board's serial port with Serial.print() and Serial.println(). It is the easiest way to see inside a running program.

The Mokxi editor with the serial monitor showing tick lines because the sketch calls Serial.begin(9600) in setup.
The circuit running in Mokxi, with its code beside it.

Open this circuit in Mokxi

Cause 1: Serial.begin() is missing

A serial port has to be started before it carries anything. Serial.begin(9600) does that, and it belongs at the top of setup(). Here is a sketch that forgets it:

void setup() {
}

void loop() {
  Serial.println("tick");
  delay(1000);
}

It compiles without a complaint, because Serial.println() is valid C++. I ran it on an Uno in Mokxi's headless runner for 3 simulated seconds, and it printed nothing at all. Add one line:

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("tick");
  delay(1000);
}

The same run printed tick three times. In the Mokxi editor you get a head start: the build warns "Serial.println is used, but nothing calls Serial.begin", with the advice to add Serial.begin(9600); as the first line of setup() and a fix button that adds the line. The number 9600 is the speed, called the baud rate, in bits per second. 9600 is the usual choice in tutorials.

Cause 2: the sketch never prints

Mokxi's boards can run a prebuilt example chosen in the Firmware panel instead of your code. Blink, for example, prints nothing at all, so a monitor next to it stays empty. Pick the Serial example, or make sure the board is running your own code, and put a print inside loop(). On a real board the same mix-up happens when you upload one sketch and open the monitor for another.

Cause 3: you wired something to pins 0 and 1

On an Uno, pins 0 and 1 are the serial port's receive and transmit pins. People see "RX" and "TX" printed next to them and decide the monitor needs wires there. In Mokxi, per its help page on this, the serial monitor is connected to the board's UART peripheral directly, not to pins on the breadboard. Those pins stay ordinary pins, and the bytes go to the monitor instead. So wiring something to pins 0 and 1 will not make text appear, and leaving them empty is not why text is missing.

Close-up of an Arduino Uno board in Mokxi running the serial tick sketch.
A closer look at the circuit.

On a real Uno there is a related trap: anything wired to pins 0 and 1 can interfere with uploading and with the USB serial link. Keep them free when you can.

Cause 4: the simulation is not running

The monitor only receives text while the circuit runs. If you press Stop, the monitor keeps the lines it already has but nothing new arrives. Press Run, and watch the time readout in the header. It shows the simulated time, and it only counts up while the circuit is running.

Cause 5: you are looking at the wrong board

When a project has two or more boards, Mokxi puts the name of the board in front of every line and gives the input row a picker for which board you are typing to. If you type to the wrong board, nothing answers. Check the prefix on the lines and the picker, and select the board that holds your sketch.

Cause 6: the line never ends

A print with no newline, such as Serial.print("hello"), is shown by Mokxi as it arrives, so you will see the text even without a line break. The case that fools people is a sketch that prints only a carriage return, written \r. Mokxi drops carriage returns and ends a line only on \n, so a sketch that sends nothing but \r looks silent. Use Serial.println(), which sends both, or end your text with \n.

A very chatty sketch can also push the start of its output out of view. The monitor keeps the last two thousand lines across all boards and drops the oldest after that. If the first lines matter, print less, or slow the loop with a delay().

On a real board, check these too

The Arduino IDE adds a few causes of its own. Make sure the correct port is chosen under Tools, and that the speed menu at the bottom of the Serial Monitor window matches the number you passed to Serial.begin(). If they differ, you see strange characters instead of text. If you are using a different serial window, such as a terminal program, it has its own speed setting. The official Serial reference lists every call.

A five-second test

Whenever the monitor is blank, replace your sketch with the six-line tick sketch above and run it. If tick appears, your wiring and tools are fine, and the problem is inside your own program. Add prints one at a time until the line stops appearing. If tick does not appear either, go back through causes 3 to 5.

Where to read more

Mokxi's own page, the serial monitor shows nothing, goes through the same checks with the details of each board. For how Run and the monitor behave, see Run and the serial monitor. To experiment, open the Arduino simulator with an Arduino Uno, and paste in the test sketch. If the sketch will not even build, Arduino compile errors explained is the place to start.

Ready to build it yourself? Create your free Mokxi account and open the editor in your browser. No installs, no parts to buy.