ESP8266 Serial Monitor Garbage
Your ESP8266 Serial Monitor displays random symbols, Chinese characters, or unreadable text instead of readable output. The serial communication is working but the data is corrupted. This guide covers baud rate mismatches, bootloader output timing, electrical noise, and proper serial configuration.
Last updated: April 22, 2026 | 10 min read
Symptoms
- Serial Monitor shows random symbols, boxes, or Chinese characters
- Boot messages appear as garbage but then clear (partial mismatch)
- Some characters readable, others replaced with or
- Output is consistent but completely unreadable
- Serial Monitor shows data but it's not what you expect
- Changing baud rate changes garbage pattern but still unreadable
- Device works correctly but serial output is corrupted
Common Causes
- Baud Rate Mismatch Serial Monitor baud rate doesn't match Serial.begin() in code
- Bootloader Output at Different Baud Rate ESP8266 bootloader outputs at 74880 baud, while application uses 115200. Early boot messages are garbage, later messages clear
- Wrong Serial Monitor Settings Line ending setting incorrect
- Electrical Noise on Serial Lines Poor USB cable or ground issues causing bit errors
- Power Supply Noise Unstable power affecting UART communication
- Faulty USB Cable Intermittent data lines causing corruption
- Multiple Serial.begin() Calls Changing baud rate mid-operation causes garbage
ESP8266 Baud Rate Reference
| Baud Rate | Used For | When to Use |
|---|---|---|
| 74880 | ROM Bootloader | View bootloader messages, debugging boot issues () |
| 115200 | Standard Arduino sketch | Most OceanRemote firmware uses this () |
| 9600 | Legacy sensors, GPS modules | Compatibility with older devices () |
| 57600 | Some custom firmware () | Alternative speed () |
| 230400 | High-speed communication () | When faster data transfer needed () |
OceanRemote firmware uses 115200 baud. Set Serial Monitor to 115200 for readable output.
Step-by-Step Fixes
1. Match Baud Rate
The #1 reason for garbage output baud rate mismatch:
- In Arduino IDE, check your code:
Serial.begin; - Note the baud rate number
- Open Serial Monitor
- In the bottom-right corner of Serial Monitor, select the same baud rate
- If you see garbage, try different rates: 115200, 74880, 9600 in sequence
- When text becomes readable, you've found the correct rate
// Check your code for Serial.begin()
void setup() {
Serial.begin; // Match this number in Serial Monitor
delay;
Serial.println;
}
// If you see garbage, the baud rate is wrong
// Try these rates in Serial Monitor:
// 115200 (most common)
// 74880
// 9600
2. Understand Bootloader Output
ESP8266 bootloader outputs at 74880 baud, not 115200:
- When ESP8266 first powers on, bootloader sends messages at 74880 baud
- If Serial Monitor is set to 115200, these early messages appear as garbage
- Once your sketch starts, Serial.begin() reconfigures to 115200
- Subsequent messages will be readable
- This is normal behavior only a problem if all output is garbage
- To see bootloader messages, temporarily set Serial Monitor to 74880 baud
3. Check Line Ending Settings
Incorrect line endings can cause display issues:
- In Serial Monitor, bottom dropdown: "Both NL & CR" is recommended
- Options: No line ending, Newline, Carriage return, Both NL & CR
- Try changing this setting sometimes fixes formatting issues
- "Both NL & CR" works best for most Arduino sketches
4. Test with Simple Sketch
Isolate the issue with minimal code:
// Upload this minimal test sketch
void setup() {
Serial.begin;
delay;
Serial.println;
Serial.println;
Serial.println;
}
void loop() {
Serial.print(".");
delay;
}
// After uploading, open Serial Monitor at 115200 baud
// You should see clear text
// If still garbage, hardware issue
5. Fix Electrical Noise
Poor connections cause data corruption:
- Try different USB cable
- Try different USB port on computer
- Avoid USB hubs connect directly to computer
- Add 100F capacitor between 5V and GND to stabilize power
- Keep USB cable away from AC power cords and motors
6. Check Power Supply Stability
Unstable power causes UART errors:
- Measure voltage at ESP8266 3.3V pin should be stable
- If voltage fluctuates, add 470F capacitor between 5V and GND
- Use quality USB power source
- Remove relays or other high-current devices temporarily
- Test with only ESP8266 connected
7. Verify Serial Initialization Order
Incorrect initialization causes garbage:
// CORRECT - Single Serial.begin() at start
void setup() {
Serial.begin;
delay; // Allow time for serial to stabilize
Serial.println;
}
// WRONG - Multiple Serial.begin() calls
void setup() {
Serial.begin;
// ... some code ...
Serial.begin; // Changing baud rate mid-stream causes garbage
}
// WRONG - No delay after Serial.begin()
void setup() {
Serial.begin;
Serial.println; // May be lost or garbled
}
Serial Monitor Settings
| Setting | Recommended Value | Why |
|---|---|---|
| Baud Rate () | 115200 | Matches firmware default () |
| Line Ending () | Both NL & CR () | Most compatible with Arduino () |
| Auto-scroll () | On () | Keeps latest data visible () |
| Show timestamp () | Optional () | Debugging timing issues () |
Prevention Tips
- Always use same baud rate in Serial.begin() and Serial Monitor
- Add delay after Serial.begin() to allow USB enumeration
- Use 115200 baud for OceanRemote firmware (standard)
- Use quality USB data cables
- Keep USB cable short
- Avoid calling Serial.begin() multiple times in same sketch
- If you see early garbage but later clear text, ignore it that's bootloader output
Related Issues
Frequently Asked Questions
Q: I see garbage for first 2 seconds, then clear text. Is something wrong?
A: No, this is normal. ESP8266 bootloader outputs at 74880 baud. Your Serial Monitor is set to 115200, so boot messages appear as garbage. Once your sketch runs, Serial.begin takes over and output becomes readable.
Q: All output is garbage, no readable text at all. What do I do?
A: Try different baud rates in Serial Monitor. If still garbage, upload the minimal test sketch. If test sketch works, issue is in your code. If test sketch also garbage, hardware issue .
Q: Serial Monitor shows nothing at all . What's wrong?
A: Different problem. Check: Correct COM port selected, Board powered on, USB cable supports data, Serial.print() statements exist in code, delay after Serial.begin(). See "ESP8266 Serial Monitor No Output" guide.
Still having serial issues? Contact Support or return to the Troubleshooting Hub.