A custom LZ4 index lets an ESP32 touchscreen search and read about 285,000 Simple English Wikipedia articles offline from a microSD card.

Developer Alun Morris has released firmware that turns a low-cost ESP32 touchscreen board into a standalone offline Wikipedia reader. The project, Offline-Wikipedia-ESP32, is published on GitHub. The target hardware is the ESP32-2432S028, commonly known as the Cheap Yellow Display (CYD). It combines a 320 × 240-pixel ILI9341 TFT display, XPT2046 resistive touch controller and microSD card slot on a single board. Morris also documents an alternative build using an ESP32-C3 with a JC2432S024 display module, which requires manual wiring of the shared SPI bus.
Offline Wikipedia normally comes as a ZIM file from the Kiwix project. ZIM stores article data in compressed clusters using Zstandard (zstd), but decompressing a cluster requires more working memory than the ESP32 can comfortably provide, making direct ZIM reading impractical on the microcontroller. Morris addresses this with a preprocessing tool that converts the dump into a custom binary format. Each article is compressed individually using LZ4, which can be decompressed with only a few kilobytes of working memory. The original ZIM index is replaced with fixed-width records, reducing storage overhead and avoiding repeated SD-card seeks during title lookups. WebP images are converted to JPEG for photographs and QOI for diagrams, while Wikipedia’s boilerplate HTML is removed using BeautifulSoup, leaving the ESP32 with a smaller dataset to search and render.
The Simple English Wikipedia dump is about 3.3 GB when downloaded from Kiwix and expands to roughly 10 GB after processing, covering approximately 285,000 articles with images. The conversion process takes around 30–60 minutes on a modern desktop when using parallel workers. The microSD card must be at least 8 GB, formatted as FAT32 with 64 KB allocation units. The processed data is stored in a /wiki/ directory at the card’s root, containing the index files, 32 MB article chunks and 4 MB image chunks. The firmware itself is a PlatformIO C++ project, while the preprocessing tools require Python 3.9 or later along with libzim, lz4, BeautifulSoup4, Pillow, cairosvg and qoi, plus Cairo as a system dependency.
The usual way to carry Wikipedia offline is with a Raspberry Pi or smartphone running Kiwix. Those platforms provide more capable software environments but require substantially more memory and power than a microcontroller-based reader. The CYD build instead runs directly on an ESP32, with about 520 KB of on-chip SRAM, and does not require a conventional operating system.
The trade-off is straightforward. Morris does not publish search-latency or page-load benchmarks in the project documentation. Touch calibration runs automatically on the first boot and is then saved to flash. The project recommends an 8 GB or larger microSD card for the Simple English Wikipedia build, while the full English Wikipedia is roughly 90 GB and is beyond the practical storage capacity of the cards normally used with these boards. The README also does not currently display a software licence statement.
Offline reference hardware has a practical use in environments where connectivity is unreliable or mobile data is costly. A reader that stores an encyclopaedia on a microSD card and works without a network could be useful in rural schools, field sites and community learning centres. The CYD platform is inexpensive, although its actual Indian street price varies by seller and should be checked before adding a rupee figure.
The regulatory question is less significant for this particular project because the firmware does not require Wi-Fi for its core operation. However, whether a finished product containing an ESP32 but shipping with its radio disabled would require WPC Equipment Type Approval depends on the final product configuration and applicable rules, so this should not be presented as a confirmed exemption.
The more interesting extension is language support. Kiwix provides offline Wikipedia content in Hindi, Tamil, Bengali, Marathi and other Indian languages, so the same preprocessing approach could potentially be adapted for regional-language editions. However, Morris does not document support for Indic scripts in the current firmware. Supporting languages such as Hindi or Tamil would require appropriate font glyphs and, depending on the renderer, proper handling of Indic text shaping and conjunct characters. It should therefore be presented as a possible extension rather than a currently supported feature.
Nothing here requires a semiconductor fab or specialised infrastructure. The project combines an inexpensive ESP32 touchscreen board with a microSD card and an offline dataset, making it a practical candidate for reproduction in Indian college laboratories, maker spaces and embedded-systems projects.
For more information, click here.



