Pixel art upscaler
Enlarge sprites by a whole number so every pixel stays a sharp square: no blur, no new colours. Drop an image or try the sample below.
Your upscaled image appears here.
Why pixel art blurs when you resize it
Image editors and browsers resize photos with bilinear or bicubic filtering, which averages neighbouring pixels. On a photo that looks smooth. On pixel art it melts hard edges into in-between colours, and at a non-integer scale such as 2.5× some pixels end up wider than others. The fix is to scale by a whole number and copy pixels instead of blending them.
Nearest neighbour or Scale2x?
| Method | What it does | Use it for |
|---|---|---|
| Nearest neighbour | Every pixel becomes an exact N×N square | Store pages, itch.io screenshots, printing, anything that should look exactly like the original |
| Scale2x / Scale4x | Fills corners where edges meet, softening stair-step diagonals; still only original colours | Large posters or icons where a rounder look is wanted |
Choose the scale with the pixel-perfect scaling calculator: it finds the largest whole number that fits a 1080p, 1440p or 4K screen. If you are building a sprite sheet, upscale after packing it with the sprite sheet maker, or better, keep it at 1× and let the engine scale it with point filtering.
Upscaling is not converting
This tool assumes the input is already pixel art. To turn a photo into pixel art, use the image to pixel art converter; for a mosaic effect at the original size, use pixelate image. The editor also exports PNGs at 1–20× directly.
Frequently asked questions
How do I upscale pixel art without blurring it?
Use a whole-number scale (2×, 3×, 4×…) with nearest-neighbour sampling, so every original pixel becomes an exact square block. Smooth resampling (bilinear, bicubic, and most AI photo upscalers) blends neighbouring colours and leaves soft, muddy edges. This tool only does whole-number nearest-neighbour or Scale2x, so no new colours are invented.
What is Scale2x (EPX)?
A pixel art scaling rule published by Andrea Mazzoleni, based on Eric Johnston’s EPX algorithm from LucasArts. Each pixel becomes a 2×2 block, and where two neighbouring edges share a colour the corner is filled to round off staircase diagonals. It uses only colours already in the image. Applied twice it gives Scale4x.
Why does my sprite look blurry in my game engine after upscaling?
The engine is filtering the texture. Set the filter to nearest/point (Unity: Filter Mode Point and Compression None; Godot: Texture Filter Nearest; Phaser: pixelArt: true; CSS: image-rendering: pixelated). Then you often do not need to upscale the file at all.
My image is already enlarged and slightly off. Can it be fixed?
If the image was enlarged by a whole number, the tool detects the block size and samples the centre of each block to recover the original 1× sprite before rescaling. That also removes stray anti-aliased edge pixels. Images resized by fractional amounts or saved as JPEG cannot be restored perfectly.
Is my image uploaded?
No. Everything runs in your browser on a canvas; the file never leaves your device.