Whole-number sizes
| Sprite | ×2 | ×4 | ×8 | ×16 |
|---|---|---|---|---|
| 16 × 16 | 32 × 32 | 64 × 64 | 128 × 128 | 256 × 256 |
| 32 × 32 | 64 × 64 | 128 × 128 | 256 × 256 | 512 × 512 |
| 64 × 48 | 128 × 96 | 256 × 192 | 512 × 384 | 1024 × 768 |
| 320 × 180 | 640 × 360 | 1280 × 720 | 2560 × 1440 | 5120 × 2880 |
Limits
- Smoothing pixel-art upscalers (hqx, xBR and similar) are not offered: they invent colours by design.
- A JPEG of pixel art already carries compression noise around every edge; nearest enlarges that too. Start from a PNG.
Questions
Why do pixel-art enlargements go blurry?
Because an interpolating kernel — bilinear, bicubic, Lanczos — computes new colours between the existing ones. Pixel art is made of exact colours on a grid, so the in-between colours read as blur. Nearest copies each source pixel instead and invents nothing; a test in this repository checks that.
Why must the factor be a whole number?
At ×3, every source pixel becomes exactly 3 × 3. At ×2.5 some become 2 pixels wide and others 3, so the grid looks uneven. The kernel panel warns at a fractional factor and offers the nearest whole numbers.
What is the “native grid” suggestion?
If the picture is made of uniform k × k blocks — a sprite somebody already enlarged — the pixel-art check says so and offers ×1/k to get the original grid back, after which any whole-number enlargement is clean.
Is area average useful here?
Going down by a whole number on artwork that is not already blocky, yes: each output pixel is the exact mean of a k × k block. Going up, nearest is the one that keeps pixel art as it is.
Neighbouring measurements
Turning a photograph into pixel art is a different job: down to a grid first, then back up.
- Image to pixel artArea-average to a grid, a median-cut palette, cells back up by nearest.
- Upscale an imageEnlarge through a named kernel, with the share of computed pixels stated.
- Choosing a resampling kernelNearest, bilinear, bicubic and Lanczos compared, with linear light and alpha.
- Scale by percentA ratio in, a pixel count out.

