Upload a picture, pick how many cells wide it should be, and download a PNG where each cell is one solid color. A 1200×900 photo at width 40 lands near 40×30. Count the cells. That's the art.
Sunset, Stones, and Ridge draw an example in the tab so you can play with sliders before your own file. They're not stock photos. Your upload stays on the device. Cap is 15 MB; GIF uses frame one only. Nothing here uploads; you'll keep the file on your machine.
Start here
Indie game folks use this for props and backgrounds. Streamers mock up emotes here, then resize elsewhere. Teachers demo grids in class. If your first question is "which DMC number is that green" or "which Perler code," jump to the craft links below. If it's "how wide should this be," you're on the right page.
Nothing leaves the browser. No account, no cloud queue, no training on your upload. That matters when the file is a family snapshot or a logo that isn't public yet. Close the tab and it's gone unless you saved a PNG.
Default sliders
Width 32, 12 colors, dither off, source palette. Thirty-two is enough to read a face without giving every pore its own hex. Twelve colors is a median cut that still looks like art, not a poster. Dither off means one solid hex per cell, which is what most importers expect.
Width is the number that counts. 16 reads as an icon, 32 as a character, 48 as a simplified photo, 64 keeps more of a face. The line under the canvas estimates source pixels per cell. About 8×8 inside each cell and you're still close to the photo. About 30×30 and fine detail is already gone, which is usually the point.
Colors runs a median cut. Ask for 12 and the legend shows up to 12 hex values, busiest first. "No color cut" keeps every sampled color and that's how you get a blocky photo with hundreds of entries. Dither is optional: off for flat cells, Floyd–Steinberg to fake gradients in a small palette, Atkinson for sharper speckle. For stitch or bead charts, leave dither off and open those tools instead of forcing craft through this page.
Pico-8, handheld green, Pixelate Sunset, and Pixelate Ink are built in. Paste your own hex list too; it saves in this browser only. The page won't pull palettes from elsewhere. General color-count advice lives in how many colors.
Run it once
Load a file or tap an example. Read the meta line under the canvas for cell count. Move width until the subject reads at arm's length. Nudge colors one step at a time. Flip dither only when skies or skin band into stripes. Pick a fixed palette when the jam rules already named the hex list.
When the preview's close, choose format PNG and hit Download before you paint. That's your baseline. Click a swatch, then a cell, to fix mistakes. Fill for connected blobs; Replace all swaps every cell of a color. Ctrl+Z undoes a stroke. Drop the corner color when a flat backdrop should go transparent. It only removes a hex if at least two corners share it, so check it didn't eat the subject. Alpha workflow details are in transparent pixel sprites, even if you're not making a game asset.
Gray mush? Bump contrast a notch before you widen the grid. The fix order is in fix a muddy conversion. Don't widen first; you'll just add noise.
If it looks muddy
Feeding the big preview PNG back through the converter is the classic accident. That file isn't one pixel per cell anymore. Always export actual size for reuse. Chasing width first hurts too: 96 wide with twelve colors often brings back camera noise. Drop width or colors instead. You can't un-blur a scaled preview in a second pass.
Dither on a chart-bound image gives speckles that become two symbols on paper. Turn dither off and open the stitch or bead tool. "No color cut" on a photo can yield hundreds of one-off hex values. Fun once, unmanageable in an editor after that.
Square lock changes aspect ratio. Leave it off for portraits unless you need a square texture. JPG never gains transparency here. Use PNG input or paint the backdrop away by hand.
Which download
Format PNG matches the meta line: 32×24 on the label means a 32×24 pixel file. Use it in engines, chat tools, and print at exact pixel scale. Preview is the same cells drawn larger for inspection. Grid lines, when Apply grid is checked, show on Preview only. They aren't baked into the actual-size PNG unless you screenshot the stage.
Crisp vs blurry imports are often engine settings, not the export button. Read actual size vs big preview before you post a scaled-up file and wonder why edges went soft.
Wrong page?
Game assets belong on the sprite converter. Swatches alone: palette from image. Stitchable patterns: cross-stitch chart. Pegs: fuse bead chart. Drills: diamond painting chart. Silhouette row/column numbers: Nonogram clues. Photos work on this page too — raise width toward 48 and turn on Floyd–Steinberg when skies band.
What counts as pixel art vs a phone filter is in what is pixel art. A click-by-click photo path is how to turn a photo into pixel art.
Questions
Does the image get uploaded?
No. Everything runs in this tab. Close the browser and the picture's gone unless you saved a PNG.
What do the export formats mean?
Pick PNG for 1 pixel per cell (games, Discord, chat). Preview scales the same grid up to view or share. Chart adds letters for stitch, beads, or diamond. PDF prints an A4 sheet. Grid lines only hit Preview when Apply grid is checked.
Can I use the result commercially?
Yes, if you own or licensed the photo. Pixelate Tools doesn't claim your export. It won't clear someone else's copyright for you.
Is this an AI generator?
No. It downsamples your upload onto a grid and snaps colors. There's no text prompt and no new picture drawn from scratch.
What happens if I change width after I painted cells?
The grid rebuilds from the source and your paint goes away. Lock width and colors first, or export before you touch a slider.
Updated 30 September 2026