image2cpp online — 100% in-browser, your images stay private

image2cpp — Image to C++ Converter
for Arduino, ESP32 & OLED Displays

image2cpp is the fastest free in-browser converter that turns any PNG, JPG or BMP into a paste-ready C++ byte array for SSD1306, SH1106, ST7735, ILI9341, Waveshare e-paper and Nokia 5110. Drag, drop, tweak, copy — the modern image2cpp online tool, ad-free and actively maintained.

📱 All display sizes
🎨 4 dithering algorithms
Instant preview
💰 100% free
Open Converter → Read Tutorial

Why use image2cpp?

image2cpp turns any picture into a paste-ready C++ array for your Arduino, ESP32 or RP2040 sketch — in under 30 seconds, with zero installs and zero upload.

1

image2cpp is in-browser

Every byte of your image is processed locally with the Canvas API. Nothing is uploaded. Use image2cpp on a flight, on a closed lab network, or with confidential product art — it just works.

2

image2cpp speaks every display

SSD1306, SH1106, ST7735, ILI9341, Waveshare e-paper, Nokia 5110 — image2cpp ships pre-tuned profiles for the displays makers actually use. Adafruit GFX, u8g2, LVGL, and raw byte output all supported.

3

image2cpp is free, forever

No signup. No watermark. No "10 conversions per day" wall. image2cpp is run by hjLabs.in as a free public utility for the maker community. A Pro tier (batch + team features) exists at $5/mo, but the core converter is and will stay free.

The new image2cpp vs. the original

The original image2cpp by javl (javl.github.io/image2cpp) is the OG tool that made bitmap-on-Arduino easy. pixel.hjlabs.in is a modern rebuild — same core idea, more displays, no ads, faster preview. Both run in your browser, both are free.

Capability image2cpp (this site) Original javl/image2cpp
Runs 100% in browserYesYes
Free, no signupYesYes
Ad-free interfaceYesNo
Live OLED preview simulationYesStatic only
Color TFT (ST7735/ILI9341 RGB565)YesMonochrome only
Waveshare 3-color e-paperYesNo
LVGL C array outputYesNo
Batch / multi-file uploadYesSingle file
Atkinson ditheringYesNo
Actively maintained2026 (monthly updates)2018 (archived)
Source on GitHubhjlabs.in-image2cppjavl/image2cpp

If you used the original image2cpp before, the workflow here is identical — drop image, pick display, copy array. The differences are extra display profiles, no ads, and a faster preview. Try image2cpp now.

Pro Tip — Better Input = Better OLED Output

Blurry or low-light source photo? Upscale it first with AI Image Enhancer

A 1-bit SSD1306 dither only looks as good as the source. If your photo is dark, soft, or noisy, run it through the free AI photo enhancer at enhance.hjlabs.in first — it fixes lighting, sharpens edges and boosts contrast in 10 seconds (Gemini-powered, no signup). Then drop the enhanced PNG back into image2cpp for a crisper Floyd-Steinberg result on your OLED. For product or marketing visuals headed to an e-paper signboard, the sister marketing image generator creates WhatsApp/Instagram-ready creatives from a text prompt.

Open AI Image Enhancer →

Supported Displays

Works with any monochrome or color display that accepts a byte array bitmap. Pre-tuned output formats for the most popular Arduino & ESP32 screens.

Monochrome OLED

SSD1306 128×64

The most popular Arduino OLED. 1-bit horizontal output, Adafruit GFX or u8g2 format.

Monochrome OLED

SSD1306 128×32

Slim OLED variant. Ideal for status bars, clocks, and sensor readouts.

Monochrome OLED

SH1106 128×64

Common SSD1306 alternative. Same output format, u8g2 native support.

Color TFT

ST7735 160×128

RGB565 color TFT. Generates 2-bytes-per-pixel PROGMEM arrays.

Color TFT

ILI9341 320×240

Large TFT for ESP32 projects. RGB565 or RGB888 output supported.

E-Paper

Waveshare e-Paper

Red/black/white 3-color e-ink. Generates per-color bitmap planes.

Character LCD

Nokia 5110 / PCD8544

Retro 84×48 monochrome LCD. Vertical 1-bit byte layout.

Custom

Custom Size

Any width & height up to 1024×1024. Supply your own dimensions.

How It Works

From raw image to Arduino-ready code in under 30 seconds.

1

Upload Your Image

Drag & drop any PNG, JPG, BMP, GIF, or SVG. Multiple files at once for sprite sheets and animations.

2

Tweak & Preview

Set screen size, pick a dithering algorithm, adjust threshold, rotate, flip, invert. Live OLED simulation shows exactly what your display will render.

3

Copy C++ Code

Get Adafruit GFX, u8g2, plain byte array, or XBM output. Copy to clipboard or download a ready-to-include .h header file.

Example Output — SSD1306 128×64

// 'arrow', 16x16px
const unsigned char epd_bitmap_arrow [] PROGMEM = {
  0x00, 0x00, 0x01, 0x80, 0x03, 0xc0, 0x07, 0xe0,
  0x0f, 0xf0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe,
  0xff, 0xff, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
  0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x00, 0x00
};

// Draw it on Adafruit SSD1306:
display.drawBitmap(56, 24, epd_bitmap_arrow, 16, 16, WHITE);
display.display();

Frequently Asked Questions

What is image2cpp? +
image2cpp is a free online tool that converts images (PNG, JPG, BMP, SVG) into C++ byte arrays ready to paste into Arduino, ESP32, or other embedded projects using OLED, LCD, or e-paper displays. The original image2cpp was created by javl in 2017; pixel.hjlabs.in is a modern 2026 rebuild with more displays, no ads, and live preview.
How does the new image2cpp compare to the original? +
Both run 100% in the browser and are free. The new image2cpp at pixel.hjlabs.in adds color TFT support (ST7735, ILI9341 RGB565), Waveshare 3-color e-paper, LVGL output, batch upload, Atkinson dithering, live OLED preview simulation, and is ad-free. The original javl/image2cpp has been archived since 2018 and supports only monochrome output.
Is image2cpp the same as imagetocpp or "image to cpp"? +
Yes — "image2cpp", "imagetocpp", "image to cpp" and "image to cpp converter" all refer to the same category of tool: a converter that turns an image into a C++ array for embedded displays. pixel.hjlabs.in is the modern free in-browser implementation.
Which displays are supported? +
SSD1306 (128×64, 128×32), SH1106, ST7735, ILI9341, Waveshare e-paper, Nokia 5110, and any custom monochrome or color display. Output formats include Adafruit GFX, u8g2, and plain byte arrays.
Is image processing done on a server? +
No. All image conversion happens 100% client-side in your browser using the Canvas API. Your images never leave your device, ensuring full privacy.
What dithering algorithms are supported? +
Binary threshold, Bayer 4×4 ordered, Floyd-Steinberg error diffusion, and Atkinson dithering — all optimized for 1-bit monochrome OLED displays like SSD1306.
Can I use the output with u8g2? +
Yes. Enable the "Swap bits" option for u8g2 compatibility, or use the Adafruit GFX format which is compatible with both libraries.
Is it free? +
Yes. Image2CPP is completely free with no signup, no watermarks, no limits. A Pro tier ($5/month) is available for batch conversion and team features.

Companion Developer Tools

Embedded work doesn’t end at the OLED. Free browser-based utilities for the rest of your stack.

Building an ESP32, Pi Pico W, or Arduino-with-WiFi project that talks to a backend? Pair image2cpp with our sister site fmt.hjlabs.in — a suite of 15 free, 100% client-side developer tools on the same Cloudflare edge network. Most-used by embedded developers:

All 15 tools at fmt.hjlabs.in are free, run entirely client-side, and never send your data to any server — the same privacy guarantee as image2cpp.

Shipping a hardware product to Indian customers? If your IoT app, ESP32 device, or hardware product captures any user data (Wi-Fi credentials, telemetry, location, account info) and serves Indian users, you need a privacy policy compliant with India’s Digital Personal Data Protection Act 2023. Our sister tool compliance.hjlabs.in generates a DPDPA-compliant policy free in 2 minutes — built specifically for Indian makers, hardware startups, and IoT companies.

Ready to light up your OLED?

Open the image2cpp converter, drop your image, and get Arduino-ready C++ in seconds. New to embedded displays? Read our step-by-step Arduino OLED tutorial for a complete SSD1306 wiring + sketch walkthrough. Need to clean up a fuzzy source photo before dithering? Use the free AI photo enhancer — it sharpens and boosts contrast so your 128×64 SSD1306 bitmap actually looks readable.

Launch Converter →