01 · Source
⇩
Drop a PNG here, or click to choose
Any PNG works — RGB, RGBA, or already-paletted
no image loaded
dimensions
—
file
—
02 · Format & options
Output size (px)
Lock aspect ratio
Smooth resample (uncheck for nearest-neighbor / pixel art)
Defaults to the source image's size. Lower these to downscale before converting.
Color format
RGB565 — 16bpp, no alpha
RGB565_SWAPPED — 16bpp, byte-swapped
RGB888 — 24bpp, no alpha
XRGB8888 — 32bpp, alpha forced 0xFF
ARGB8888 — 32bpp with alpha
ARGB8888_PREMULTIPLIED — 32bpp, RGB× alpha baked in
ARGB8565 — 24bpp with alpha
RGB565A8 — 16bpp color + separate 8bpp alpha plane
I1 — 1bpp, 2-color palette
I2 — 2bpp, 4-color palette
I4 — 4bpp, 16-color palette
I8 — 8bpp, 256-color palette
A1 — 1bpp mask
A2 — 2bpp mask
A4 — 4bpp mask
A8 — 8bpp mask
L8 — 8bpp grayscale
AL88 — 8bpp grayscale + 8bpp alpha
Background (flattens alpha)
Stride alignment (bytes)
Options
Ordered dither (reduces banding on RGB565-family gradients)
Pre-multiply alpha into color data
Compression
None
RLE
LZ4 isn't available in-browser yet — use the Python script if you need it.
Variable / file name
Load an image first
03 · Result
Packed size
—
Stride
—
vs. raw RGBA
—
Download .bin
Download .c
Copy C array
C array preview
Pixel inspector
click a pixel above
Click any pixel in the result preview to see exactly how it's packed.
—
—