# ESP32 web server does not open in the browser: IP, network and port

> Fix an ESP32 web server that will not load: print the IP address, use the same Wi-Fi network, type http not https and check the server starts.

Canonical: https://roboticsengineering.in/fix/esp32-web-server-not-reachable-from-browser/ | Published: 2026-11-03 | Updated: 2026-11-04

**Print the IP address after Wi-Fi connects and open exactly that address, starting with http://, from a device on the same network.**

## What the message means

The page is served by the board, not the internet. The browser must reach the board on the local network, on the port the server listens on.

## Fix it in this order

1. Print WiFi.localIP() after the connection is made and wait until it is not 0.0.0.0.
2. Put the phone or computer on the same Wi-Fi network as the board. Guest networks often block devices from each other.
3. Type http:// and not https://, because a basic server has no certificate.
4. Call server.begin() in setup and server.handleClient() in loop, or the equivalent for your library.
5. Use port 80 unless you set another and include it in the address.
6. Check that long delay() calls in loop do not stop the server from answering.

## Why it happens

When the ESP32 joins your Wi-Fi network, the router assigns it an address on your local network. That address is reachable only from devices on the same network, and only on the port the server listens on. The browser fails when the typed address is wrong, when the device is on a different network such as a guest network or a mobile hotspot, or when the URL omits the port. The server is also only as responsive as the sketch, because code that blocks inside loop() stops it answering requests.

Print the address the board reports after the connection finishes, not before, since it reads 0.0.0.0 until the router assigns a real one. Then test from a second device on the same network. If the page loads once and then hangs, long delay() calls are probably holding up the server. Timing based on millis() keeps the loop short, so client requests get handled promptly.

## If you see this, do this

| You see | Do this |
| --- | --- |
| Page times out | Different network or wrong IP. |
| Page loads once then stops | Blocking code in loop(). |

## Confirm the fix

1. Print WiFi.localIP() after WiFi.status() reports connected, and confirm the value is not 0.0.0.0.
2. From a phone on the same Wi-Fi network, open http:// followed by the printed address and check for a response.
3. Add a Serial.println() inside the request handler and confirm it prints each time the page is opened.

**Common mistake:** Readers assume the ESP32 is on the internet, when it only serves pages on the local network that the browsing device must share.

## Related

[Wi-Fi will not connect](https://roboticsengineering.in/fix/esp32-wifi-wont-connect/), [delay() and millis()](https://roboticsengineering.in/fix/arduino-delay-blocks-robot-use-millis/).

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.
