Learning how to make pixel art from an image comes down to three moves: shrink the picture onto a small grid, cut its colours down to a tight palette, and clean up what the shrink got wrong. Quick filters do the first move and skip the rest, which is why so many converted images look like blurry mosaics rather than game sprites. This guide covers the theory in plain language, then gives you three working methods: an image editor like Photoshop, a free browser script you can run yourself, and the Sorceress tools built for turning images into sprite sheets.
What “pixel art from an image” actually means
Pixel art is digital art where every pixel is a deliberate building block, usually at a low resolution and with a small colour count. The Wikipedia entry on pixel art makes a useful distinction: a low-resolution photo is made of pixels too, but it only counts as pixel art when the pixels are placed with intent. That is the whole challenge of converting an image. A converter can give you visible pixels in seconds. Intent is what you add afterwards.
A few terms you will see throughout:
- Sprite: a 2D image, like a character or item, drawn on top of a game scene.
- Sprite sheet: one image that holds many sprites or animation frames in a grid, so the game loads a single file. In 3D graphics the same idea is called a texture atlas.
- Palette: the fixed list of colours your art is allowed to use, often 4 to 32 colours.
- Nearest-neighbour resampling: a resize method that copies the closest pixel instead of blending neighbours, so edges stay hard instead of going soft.
- Mixels: pixels of different sizes in the same image, the most common sign of a sloppy conversion.
Why do quick filters disappoint? A photo has thousands of colours and soft gradients. When you shrink it, the resize blends colours together, so you get muddy in-between shades along every edge. A good conversion fights that blending with palette limits and manual cleanup.
How to make pixel art from an image in five steps
Every method in this guide, from a free script to a dedicated sprite tool, runs the same pipeline. Understand it once and you can make pixel art from an image in any software.
- Pick and crop the source. Simple subjects with clear silhouettes convert best: a character on a plain background, a single object, a face with strong lighting. Crop tight. Busy backgrounds turn into noise at low resolution, so remove them first if you can.
- Downscale to your target size. Decide how big the final sprite is in real pixels: 16, 32, 48 or 64 pixels wide is typical for game characters. A 1,000-pixel photo becomes a 64-pixel image, so most fine detail disappears. That is expected.
- Limit the palette. Reduce the image to a small set of colours. Fewer colours means cleaner clusters and less noise. Retro palettes like the four greens of early handhelds give a strong look instantly.
- Clean up by hand. Fix the eyes, the outline, and any single stray pixels. Remove “jaggies” (stair-step lines with uneven steps) and add a one-pixel outline if the sprite needs to read against busy backgrounds.
- Upscale by a whole number for display. Scale up 4x, 8x or 10x with nearest-neighbour so each art pixel becomes a crisp square block. Never upscale by odd amounts like 3.5x, which creates mixels.
Step 4 is the one that separates real pixel art from a pixelate filter. Even with automation, plan to spend a few minutes on the face and silhouette of every character.

Method 1: convert an image in Photoshop or another editor
If you already own an image editor, this is the most hands-on way to make pixel art from an image. Here is how to make pixel art in Photoshop specifically, with notes for other apps.
Photoshop steps
- Open the image and crop to your subject with the Crop tool.
- Go to Image > Image Size. Set the width to your target, such as 64 pixels, keep proportions linked, and set Resample to Nearest Neighbor (hard edges). If the result looks too harsh, undo and try Bicubic for the shrink only, then rely on the palette step to sharpen colours.
- Go to Image > Mode > Indexed Color. Choose a local palette with a small number of colours (start with 16) and turn dithering off for a clean look, or set it to a low amount if you want a retro texture.
- Zoom in to 800% or more. Use the Pencil tool (not the Brush, which anti-aliases) at 1 pixel to fix outlines and features. Use the Eraser in Pencil mode for the same reason.
- Switch back to RGB Color if you need layers or transparency, then export a PNG. For a preview or social image, use Image Size again with Nearest Neighbor at 400% or 800%.
Other editors
The same steps work in GIMP (Scale Image with Interpolation set to None, then Image > Mode > Indexed), Aseprite, and most paint apps. For drawing apps that lack a palette reduction step, do the downscale on a small canvas, then pick colours by hand from a limited swatch set. If you work in Clip Studio Paint, our guide on pixel art in Clip Studio Paint covers its specific settings.
A note on Minecraft and physical builds
If you want to know how to make a Minecraft pixel art from a picture, the workflow is identical, with one twist: each pixel becomes one block, so your palette should match blocks you actually have, such as wool or concrete colours. A 32 by 32 image is already 1,024 blocks, so start small. For paper, bead or paint versions, see how to make pixel art in real life.
Method 2: a free browser script you control
If you code, or you want to understand exactly what converters do under the hood, this short JavaScript file does the full downscale, palette and upscale pipeline in about 50 lines. It runs in any browser with no install. Save it next to an HTML page containing <input type="file" id="file"> and <canvas id="out"></canvas>.
// pixelate.js: image -> limited-palette pixel art, upscaled crisply
const PALETTE = [
[15, 56, 15], [48, 98, 48], [139, 172, 15], [155, 188, 15]
]; // a classic 4-colour green palette; swap in your own
function nearestColour(r, g, b) {
let best = PALETTE[0];
let bestDist = Infinity;
for (const c of PALETTE) {
const d = (r - c[0]) ** 2 + (g - c[1]) ** 2 + (b - c[2]) ** 2;
if (d < bestDist) { bestDist = d; best = c; }
}
return best;
}
function pixelate(img, targetWidth, scale) {
const w = targetWidth;
const h = Math.round(img.height * (w / img.width));
// 1. Downscale onto a tiny canvas
const small = document.createElement("canvas");
small.width = w;
small.height = h;
const sctx = small.getContext("2d");
sctx.drawImage(img, 0, 0, w, h);
// 2. Snap every pixel to the palette, with hard transparency
const data = sctx.getImageData(0, 0, w, h);
const p = data.data;
for (let i = 0; i < p.length; i += 4) {
if (p[i + 3] < 128) { p[i + 3] = 0; continue; }
const [r, g, b] = nearestColour(p[i], p[i + 1], p[i + 2]);
p[i] = r; p[i + 1] = g; p[i + 2] = b; p[i + 3] = 255;
}
sctx.putImageData(data, 0, 0);
// 3. Upscale by a whole number with smoothing off
const out = document.getElementById("out");
out.width = w * scale;
out.height = h * scale;
const octx = out.getContext("2d");
octx.imageSmoothingEnabled = false;
octx.drawImage(small, 0, 0, out.width, out.height);
}
document.getElementById("file").addEventListener("change", (e) => {
const file = e.target.files[0];
if (!file) return;
const img = new Image();
img.onload = () => pixelate(img, 64, 8);
img.src = URL.createObjectURL(file);
});
The key line is imageSmoothingEnabled = false. Browsers and game engines blend texture colours by default when scaling, a process called texture filtering. That blending is great for photos and terrible for pixel art. The same rule applies in your game: in Phaser, add pixelArt: true to the game config so sprites render crisp:
const config = {
type: Phaser.AUTO,
width: 320,
height: 180,
pixelArt: true, // nearest-neighbour filtering for every texture
scale: { mode: Phaser.Scale.FIT, zoom: 4 },
scene: { preload, create }
};
new Phaser.Game(config);
This script is honest about its limits. It does no background removal, no outline cleanup and no edge repair, so you still do step 4 by hand. It is a great way to learn how to make pixel art from an image, and a fine tool for one-off pictures. For a batch of game sprites, the manual cleanup adds up fast.





