# SSD1306 OLED stays blank: I2C address, init and display\(\) fixes

> Fix a blank SSD1306 OLED on Arduino or ESP32: I2C address 0x3C or 0x3D, wiring, display size, begin\(\) result and the missing display\(\) call.

Canonical: https://roboticsengineering.in/fix/ssd1306-oled-blank-screen/ | Published: 2026-11-03 | Updated: 2026-11-03

**A blank screen is usually a wrong I2C address, a wiring fault or a missing display() call.** Check these in order.

## What the message means

The SSD1306 draws into a buffer in memory. Nothing appears until you send the buffer to the screen with display(). If begin() fails, the library cannot find the screen on the I2C bus.

## Fix it in this order

1. Run an I2C scanner. Most modules answer at 0x3C; some at 0x3D. Use the address you find.
2. Check SDA and SCL wiring, power and ground. On an ESP32 make sure you use pins that are set for I2C in the sketch.
3. Check the sketch sets the right size, 128 by 64 or 128 by 32, to match the module.
4. Check the return value of display.begin(). If it fails, stop and print a message.
5. Call display.clearDisplay() before drawing and display.display() after.
6. Set a text colour. White text on a white background, or no colour set, shows nothing.

## If you see this, do this

| You see | Do this |
| --- | --- |
| Scanner finds nothing | Wiring, power or a dead module. See the I2C page. |
| Scanner finds 0x3C but the screen is blank | Wrong address in code or missing display(). |

## Related

[I2C device not found](https://roboticsengineering.in/fix/i2c-device-not-found-arduino-esp32/), [ESP32 pinout for robotics](https://roboticsengineering.in/esp32-pinout-for-robotics/).

Last reviewed: November 2026. These are the usual causes and the order that finds them fastest. Test on your own board; clones and cables differ.
