Upload an image
Drag an image here or click to select
JPG, PNG, WebP or GIF — everything is processed in your browser
All processing happens locally in your browser. Your image never leaves your device.
Printable templates from your pixel grid.
Drag an image here or click to select
JPG, PNG, WebP or GIF — everything is processed in your browser
All processing happens locally in your browser. Your image never leaves your device.
Printable templates from your pixel grid.
Upload a photo (or pick an example). Everything runs locally in your browser.
Pick an output size — the smaller the grid
the chunkier the pixels.
Choose a palette: Auto derives colors from your photo; Retro snaps to a classic console palette; Custom lets you paste your own hex colors.
Optionally turn on dithering (Floyd–Steinberg or Ordered) for a retro shaded look
and tune vividness.
Download the result as a pixel-perfect PNG
or upscaled 4×/8× for sharing.
Set the output resolution from chunky 32px sprites to detailed 128px art. The image is block-averaged down to that grid, so every pixel is a real, paintable block.
Snap your photo to verified classic palettes — Game Boy, PICO-8, CGA, Sweetie-16, or 1-bit — for an instantly nostalgic look.
Floyd–Steinberg error diffusion and ordered Bayer dithering recreate shading and gradients with a limited palette, exactly like classic hardware did.
Download the native grid as a tiny exact PNG, or an integer-upscaled 4×/8× version with crisp, un-blurred edges.
Your photo is processed entirely on your device using standard web technologies and is never uploaded to any server, third-party API, or cloud store. That privacy matters for personal photos, portraits of family and friends, and any image you would not want sitting on someone else's infrastructure. Because nothing is transmitted, the tool also works offline once the page has loaded.
Auto palettes are chosen by k-means clustering in the CIELAB color space rather than raw RGB, so the reduced colors match what your eye actually perceives instead of what is mathematically convenient. The result is a small palette that still reads as the original photo — skin tones stay lifelike, skies stay smooth, and the dominant colors of the scene survive the reduction.
It implements the real Floyd–Steinberg (1976) error-diffusion method and true ordered Bayer dithering, not a semi-transparent noise overlay pretending to be dithering. These are the same techniques retro consoles and early PCs used to fake extra shades from tiny palettes, so the output has authentic period character rather than a modern filter look.
Integer nearest-neighbor scaling keeps every pixel a hard-edged square at any zoom, with no blurry interpolation creeping in. The color clustering is seeded and the dithering is fully deterministic, so the same photo and the same settings always produce byte-identical pixel art — handy when you are iterating on a sprite and need reproducible results.
A photograph stores millions of subtly different colors on a fine grid of pixels. Pixel art is the opposite: a small grid of large, flat blocks drawn from a tiny, deliberate palette. Converting one into the other is a two-part problem — reducing the resolution and reducing the colors — and doing each well is what separates crisp, readable pixel art from a muddy, downscaled photo.
The first step shrinks the image to the target grid (say 64×64). Rather than pick one source pixel per block, a good converter averages every source pixel that falls inside each block. This area averaging keeps colors representative and avoids the noise you get from naive nearest-pixel sampling. The block average is also alpha-weighted, so transparent regions do not drag colors toward black.
With the grid in place, each block still holds a full-color value that must be mapped to a small palette. In Auto mode the palette is learned from the photo using k-means clustering in the CIELAB color space, so the chosen colors are perceptually distinct. In Retro mode the blocks are snapped to a fixed console palette, and in Custom mode to colors you supply. Working in CIELAB rather than raw RGB means "nearest color" matches human perception.
A four-color Game Boy palette cannot show a smooth sky — unless you dither. Floyd–Steinberg dithering, published in 1976, quantizes each pixel to the nearest palette color and then pushes the resulting error onto neighboring pixels, so a region that is "between" two colors becomes a fine mix of both that the eye blends into an intermediate shade. Ordered (Bayer) dithering instead adds a fixed threshold pattern before snapping, producing the characteristic cross-hatch of old games with no error propagation. Both keep the output strictly inside the palette.
Finally the small grid is drawn to screen with nearest-neighbor scaling (no smoothing), so each block stays a crisp square. Exporting the native grid gives a tiny, exact PNG ideal as a sprite; exporting at an integer multiple (4×, 8×) gives a larger image with the same hard edges — perfect for avatars, wallpapers, or printing.
Pixel art was born from constraint. Early home computers and consoles could only address a handful of colors and a few thousand pixels, so artists learned to say a lot with very little: a face in sixteen pixels, a forest in four colors. Those limits are gone technically, yet the aesthetic endures because the constraints force clarity. A well-made piece of pixel art reads instantly, scales to any size without a rendering engine, and carries a nostalgic charge that high-resolution art rarely matches. Converting a photo into that language is not just a downscale — it is a translation from "capture everything" to "keep only what reads."
The right settings depend on your subject. Portraits and faces benefit from a slightly larger grid (96–128px) so the eyes, nose, and mouth remain distinct, plus an Auto palette that preserves natural skin tones; heavy dithering can add noise around fine features, so start light. Landscapes and skies are where dithering shines: a small palette plus Floyd–Steinberg turns a smooth gradient into a convincing blend, and Ordered dithering gives it a deliberately retro banding. Logos, icons, and flat graphics usually want a small grid, few colors, and no dithering at all, because clean flat blocks read best. When in doubt, start at 64px with an Auto palette and no dithering, then adjust one control at a time.
It is counter-intuitive, but reducing the number of colors often improves a converted image rather than degrading it. A full-color photo scattered across a tiny grid tends to look muddy, because adjacent blocks differ by tiny, meaningless amounts. Snapping those blocks to a deliberate, limited palette imposes order: shapes gain edges, shadows group into a few readable tones, and the whole image feels designed rather than sampled. This is why classic four-color and sixteen-color palettes still look striking. Because the palette selection happens in CIELAB, the tool spends its scarce colors where your eye will notice them most — a few tones for a face, a couple for a background — instead of wasting them on differences you cannot perceive.
Conversion works best on images with a clear subject, good contrast, and simple backgrounds: a single face, a pet, an object on a plain surface, a bold landscape. It struggles with busy scenes full of small overlapping details, very low-contrast photos where everything is a similar mid-tone, and text — small lettering rarely survives being reduced to a coarse grid. If a first attempt looks muddy, try increasing the grid size (more detail), reducing the color count (more graphic), or cropping tighter so the subject fills more of the frame. Pixel art rewards a strong, simple composition; feeding it a cleaner input almost always beats fighting the settings.
Native-resolution exports are ideal as game sprites, favicons, emoji-style reactions, or the source for further hand-editing in a dedicated pixel editor. Integer-upscaled exports (4×, 8×) keep their hard edges and work well as profile avatars, chat stickers, phone or desktop wallpapers, and print pieces such as stickers or cross-stitch and bead patterns, where each block maps naturally to a physical unit. Because every export is a standard PNG, it drops straight into any app that accepts images — no special format, no watermark, no account.
No. The entire conversion — downsampling, color quantization, and dithering — runs locally in your browser using standard web technologies. Your image never leaves your device.
Smaller grids (32–48px) give a chunky, iconic look good for sprites and avatars; larger grids (96–128px) keep more detail. Start around 64px and adjust to taste.
Auto derives an optimal palette from your photo with k-means clustering. Retro snaps to a classic console palette (Game Boy, PICO-8, CGA, Sweetie-16, 1-bit). Custom lets you paste your own hex colors.
Dithering simulates shades and gradients that a small palette cannot represent directly, by mixing available colors in a pattern. Floyd–Steinberg looks organic; Ordered gives a retro cross-hatch.
Floyd–Steinberg (error diffusion) usually looks smoother and more natural. Ordered (Bayer) produces the regular, patterned dithering associated with 8-bit and early PC games. Try both.
Yes. Transparent areas of a PNG stay transparent in the output, and transparent pixels are ignored when averaging colors so they don't muddy the result.
1× exports the native pixel grid as a tiny exact PNG. 4×/8×/16× export the same art upscaled with crisp, un-blurred pixels for sharing or printing.
Yes. The color clustering is seeded and the dithering is deterministic, so identical photo and settings always produce identical pixel art.
Yes — choose Custom and paste your hex colors. The tool reduces a large palette to the number of colors you want and snaps the image to those exact colors.
Posterizing only reduces colors; this also reduces resolution to a real block grid, snaps to a perceptual or retro palette, and adds authentic dithering — producing true pixel art rather than a low-color photo.
What dithering is and how it fakes shades with a tiny palette. Floyd–Steinberg error diffusion vs ordered Bayer dithering compared, with when to use each.
Read more →A step-by-step guide to converting any photo into pixel art: choosing a grid size, picking a palette, adding dithering, and exporting a crisp PNG.
Read more →