Skip to main content
How to Run a Public Website on a $10 ESP32 Without Servers

How to Run a Public Website on a $10 ESP32 Without Servers

Self-Hosted Public Website Running on a $10 ESP32: DIY Guide for 2026

Learn how to run a self-hosted public website on a $10 ESP32 with no servers or software. Perfect for low-cost IoT projects and home labs.

An ESP32 can absolutely serve a public website without a separate server — its built-in Wi-Fi and 4 MB of flash are plenty for a small static site or a tiny API, and a $10 board sips milliwatts to do it. The catch is "public": you either give it a static IP and port-forward (works, gets scanned hard), or — much better — front it with a Cloudflare Tunnel for free TLS and DDoS protection without opening a single port. Here's the realistic 2026 build.

🛒 The hardware is current-production and cheap: ESP32 dev boards on Amazon.

What an ESP32 can actually serve

The ESP32 (and the newer ESP32-S3) is a dual-core 240 MHz MCU with 4–16 MB of flash, ~520 KB of SRAM, and Wi-Fi/Bluetooth built in. For a website, this means: a static site of HTML/CSS/JS (~1–3 MB after compression), a small JSON API (sensor readings, IoT control, a hit counter), or simple form handling. What it can't do: large image galleries, dynamic database-heavy apps, HTTPS termination at high volume, or anything CPU-heavy. Think of it as a one-page personal site, a sensor dashboard, or an IoT control panel — not a full CMS.

Use caseESP32 fit
Static one-page personal/portfolio site✅ great
Sensor / IoT dashboard with live data✅ great
Small JSON API (~10 req/s)✅ great
Blog with images and posts⚠️ via SD card, modest images only
Anything with a real DB❌ wrong tool

The hardware

A standard ESP32 DevKit (ESP-WROOM-32 or ESP32-S3) for around $10 is the starting point. Add a microSD card module if you want more storage than the onboard 4 MB flash; add a small power supply (any 5V USB will do). Total bill of materials: $10–$15. The board can run continuously on a USB power bank for hours and on wall power indefinitely with negligible draw.

ESP32 DevKit on Amazon →

The software stack

Two routes. The Arduino IDE with the WebServer.h library is the gentlest entry point — a 30-line sketch can serve a static page and respond to API calls. For more control, ESP-IDF (Espressif's official C SDK) plus the esp_http_server component gives you finer-grained sockets, async handlers, and HTTPS. For most personal sites, Arduino is plenty; ESP-IDF is the path when you outgrow it. Store your HTML/CSS/JS in the ESP32's flash filesystem (SPIFFS or LittleFS), gzip them at build time (the ESP32 can serve Content-Encoding: gzip directly), and keep the total under 2–3 MB to leave room for OTA updates.

Making it public, safely

This is where most ESP32 web-server tutorials go wrong. You can give the board a static LAN IP, port-forward 80/443 on your router, and call it "public" — but it'll be scanned within hours, hammered by bots, and any vulnerability is now your home network's problem. The right way in 2026 is a Cloudflare Tunnel (cloudflared): you run a tiny cloudflared connector on any machine on your LAN (or even another ESP32-class device with enough power), and Cloudflare proxies your custom domain to the ESP32 over an outbound-only connection. Benefits: real HTTPS via Cloudflare's edge, no inbound ports opened, free DDoS protection, and a custom domain. The setup is one config file plus a CNAME — half an hour total.

For a stripped-down alternative, localtunnel or ngrok give you a temporary public URL with no router config; fine for demos, not for a real public site.

Performance reality check

Don't oversell it. A single ESP32 reliably handles around 10–30 requests per second for small static pages (cached gzipped HTML), and the Wi-Fi stack will start dropping packets at sustained higher loads. For a personal site that gets sporadic traffic, this is plenty. For anything expecting bursts (a viral post, a news mention), put a CDN in front (which Cloudflare Tunnel effectively gives you for free — Cloudflare caches your static responses at the edge so the ESP32 sees only origin pulls).

When you've outgrown it

If your site is hitting the ESP32's request ceiling or you want a real CMS, the natural step up is a Raspberry Pi Zero 2 W (~$15) — far more capable, runs full Linux + nginx, same idle power profile. Beyond that, a Pi 4/5 or a cheap VPS handles serious workloads. But the appeal of the ESP32 isn't matching those — it's the absurd power efficiency and the fact that a $10 chip on your desk is genuinely serving real visitors.

Frequently asked questions

Can an ESP32 really run a public website? Yes — for small static sites, sensor dashboards, or simple JSON APIs. Its 240 MHz dual-core CPU, ~520 KB RAM, and 4 MB flash comfortably handle 10–30 req/s. For anything bigger, step up to a Pi Zero 2 W or above.

How do I make the ESP32 site public safely? Use a Cloudflare Tunnel (cloudflared). It gives you real HTTPS on a custom domain via an outbound-only connection, with no router port forwarding and free DDoS protection. Port-forwarding directly works but exposes the board to constant scanning.

What's the realistic request limit? Around 10–30 requests/second for small cached static pages. If you front the site with Cloudflare (which the tunnel setup does), edge caching absorbs traffic bursts so the ESP32 sees only origin pulls.

Does the ESP32 need a special enclosure or cooling? No. It runs cool enough to live indefinitely on an open dev board, and the SoC's thermal output is small enough that no heatsink is required for a web-server workload. Pop it in a cheap printed case if you want it tidy on the shelf.

Related guides

Products mentioned in this article

Tap any product for full specs, live Amazon & eBay pricing, and alternatives.

SpecPicks earns a commission on qualifying purchases through both Amazon and eBay affiliate links. Prices and stock update independently.

Frequently asked questions

What are the limitations of hosting a website on an ESP32?
The ESP32 is limited by its 4MB flash memory, which restricts the size of static content like HTML, CSS, and JavaScript files. Additionally, its 520KB RAM limits the complexity of dynamic content and encryption algorithms. It is best suited for low-traffic websites due to its software-based HTTPS implementation, which is slower than hardware-accelerated solutions.
How does the ESP32 compare to a Raspberry Pi for web hosting?
The ESP32 is more power-efficient, consuming only 150mA at 3.3V during active operation, compared to the Raspberry Pi Zero W's higher power draw. However, the ESP32 has less memory and processing power, making it suitable for simpler, low-traffic websites, whereas the Raspberry Pi can handle more complex applications and higher traffic.
Can the ESP32 support dynamic content on a website?
Yes, the ESP32 can support basic dynamic content using embedded C or MicroPython. However, due to its limited RAM (520KB), the complexity of dynamic content should be minimal. It is ideal for lightweight applications like sensor data visualization or simple dashboards.
What tools are required to program an ESP32 web server?
To program an ESP32 web server, you need the ESP-IDF (Espressif IoT Development Framework) and a code editor like VSCode with the ESP-IDF Extension Pack. These tools allow you to write, compile, and upload code to the ESP32. A micro-USB cable is also required for programming and powering the device.
Is it possible to power an ESP32 website using solar energy?
Yes, the ESP32 can be powered using solar energy with a 5V boost converter and a 2000mAh LiPo battery. The boost converter stabilizes the voltage from the solar panel to 3.3V, while the battery stores excess energy. This setup can sustain the ESP32 for up to 6 months in locations with 8 hours of daily sunlight.

Sources

— SpecPicks Editorial · Last verified 2026-06-08

More guides & deep dives from the SpecPicks archive

Browse all articles & guides →

More reviews from the SpecPicks archive

Browse all reviews →