BGZero
Auto RemoveManual RemoveBatch Remove
Game Assets
Blog
EN中文
Sign In
BG ZERO
All processing runs locally in your browser · No data uploaded · 100% private
ToolsChange Image Background ColorProduct Photo White BackgroundID Photo Background ChangerPassport Photo Background ChangerWebP Background RemoverTransparent PNG MakerBatch Background Remover
Game Asset ToolsGIF to Sprite SheetSprite Sheet MakerSprite Sheet CutterPixel Art UpscalerImage to Pixel Art
BGZero

AI-powered background removal tool
Runs locally in browser, zero data upload

Open Source Licenses

  • Default engineAGPL-3.0
  • Transformers.jsCC BY-NC 4.0
  • rembg-webMIT
Privacy PolicyTerms of ServiceOpen Source LicensesAccessibilityDMCAContactSource Code (AGPL-3.0)Report Abuse
© 2026 BG Zero. Released under AGPL-3.0.粤ICP备2026016654号-2Made with care · Local first
← Back to Tutorials
upscale pixel art without blurPublished August 16, 2026Updated August 16, 202624 min read

How to Upscale Pixel Art Without Blur

Learn why ordinary resizing blurs pixel art and follow a practical nearest-neighbor workflow for crisp, transparent game assets.

Pixel art is built from deliberate square pixels. An ordinary photo resizer treats those pixels as samples of a continuous image and blends neighboring colors to make curves look smooth. That is useful for photographs, but it turns a clean 16×16 icon into a soft, uneven grid.

The reliable way to enlarge pixel art is nearest-neighbor scaling, usually by an integer factor such as 2×, 3×, 4×, or 8×. Each source pixel becomes an exact block of identical output pixels. No new colors are invented, edges stay aligned to the grid, and transparent pixels remain transparent.

This guide explains the method, the settings that matter, and the checks needed after export and inside a game engine.

The core rule Use nearest-neighbor scaling at a whole-number multiplier. If a 32×32 sprite becomes 128×128 at 4×, every source pixel becomes a perfect 4×4 block.

Why normal image resizing blurs pixel art

Most image editors and browsers use interpolation when an image changes size. The algorithm estimates colors between source pixels. Bilinear interpolation blends nearby samples; bicubic methods consider a wider neighborhood and often look smoother on photos.

Pixel art does not want estimated in-between colors. A hard boundary between dark blue and light blue may define an outline, a highlight, or a one-pixel facial feature. Blending adds intermediate colors and makes that boundary appear fuzzy. Uneven scaling can make some source pixels two pixels wide and others three, changing line weight and rhythm.

Nearest neighbor chooses the closest source pixel without averaging. It is simple, predictable, and exactly suited to block-based enlargement. In Canvas-based tools, this corresponds to disabling image smoothing during the scale operation.

The same pixel-art heart enlarged with crisp nearest neighbor and blurry smoothing

Choose an integer scale factor

Whole-number scales keep every source pixel the same output size.

SourceScaleOutputBlock size
16×164×64×644×4 pixels
24×243×72×723×3 pixels
32×328×256×2568×8 pixels
64×485×320×2405×5 pixels

A non-integer target such as enlarging 32 pixels to 100 pixels requires a 3.125× scale. Some source pixels must become three pixels wide and others four, producing inconsistent blocks. If the exact display size is mandatory, consider placing the crisp integer-scaled sprite on a larger canvas instead of stretching the art itself.

For a game, you may not need to enlarge the source file at all. Many engines can display a small sprite at an integer transform scale while using nearest texture filtering. Upscaling the asset is useful when a platform requires larger files, when exporting promotional images, when an editor or UI system handles small textures poorly, or when you want a fixed high-resolution deliverable.

Step 1: Start with the real source pixels

Use the original PNG whenever possible. A screenshot, social-media copy, or JPG may already contain blended edge pixels and compression noise. Nearest-neighbor enlargement will preserve those defects faithfully—it prevents new blur but does not remove existing blur.

Open the image at high zoom and inspect one-pixel lines. If the palette contains many near-duplicate edge colors that were not part of the design, find an earlier source or clean it before scaling. Confirm the true dimensions; a 32×32 sprite inside a 64×64 transparent canvas still scales as a 64×64 image because the canvas is part of the asset.

PNG is the safest input for transparent sprites. JPG does not carry alpha and is rarely appropriate for pixel-art game assets. WebP can preserve crisp pixels, but verify whether it was exported losslessly.

Step 2: Select the scale and review the estimated output

Open the Pixel Art Upscaler, upload the image, and choose a whole-number scale. The preview should show the final width and height before processing.

Calculate dimensions with a simple formula:

output width = source width × scale

output height = source height × scale

Dimensions grow linearly, but uncompressed pixel memory grows by the area. A 4× scale creates 16 times as many output pixels; an 8× scale creates 64 times as many. A small sprite remains easy, but a large illustration can cross browser, GPU, or engine limits quickly.

When either output dimension exceeds 8,192 pixels, the tool displays an explicit warning with the estimated result and asks whether to continue. Treat it as a compatibility check. Reduce the scale when the larger file serves no real purpose, especially for mobile games and web projects.

Step 3: Generate with nearest-neighbor scaling

Run the upscale operation. The tool creates a new canvas, disables smoothing, and draws the source at the selected integer multiple. It does not run a generative AI model, redraw contours, or invent texture detail.

That distinction matters. “AI upscaling” for photos tries to infer eyelashes, fabric, or textural detail. For deliberate pixel art, invented detail can change the style, palette, and silhouette. Nearest-neighbor scaling makes a different promise: every original pixel remains authoritative.

If the source uses transparency, alpha scales with the color. A fully transparent pixel becomes a transparent block. Semi-transparent pixels also remain semi-transparent; these may be intentional soft effects, or they may be unwanted anti-aliasing from an earlier export.

Step 4: Inspect the pixel grid

Do not judge only from a “fit to screen” preview. Zoom to 100% or a whole-number zoom and inspect several areas:

  • One source pixel should map to one equally sized square block.
  • Vertical and horizontal one-pixel lines should have constant thickness.
  • Diagonal stair steps should repeat the original pattern.
  • No blended colors should appear between palette colors.
  • Transparent edges should not gain a dark or light halo.

A quick verification method is to sample colors from the original and output. Nearest-neighbor enlargement should not introduce new RGB values. The only differences should be the number and arrangement of repeated pixels.

Also compare the outer canvas. If the original had transparent padding around the character, the scaled output has proportionally more padding. That is correct. Cropping it away after scaling can change the pivot and break alignment with other animation frames.

Step 5: Export as PNG

Download the result as PNG. PNG preserves sharp boundaries and alpha without lossy compression. Keep a filename that includes the multiplier or target dimensions, such as “hero-idle-4x.png” or “icon-128x128.png,” while retaining the original master.

Do not repeatedly scale an already enlarged file. Always generate new sizes from the smallest clean master. Scaling a 4× output to another arbitrary size makes it easier to apply the wrong interpolation or accumulate editing mistakes.

If a marketplace or design tool requires a JPG, place the PNG over the intended solid background only at the final export step. Save the transparent PNG separately because the JPG conversion cannot be reversed to recover exact alpha.

Configure the game engine correctly

A perfectly crisp exported PNG can still look blurry in a game if the engine samples it with linear filtering, scales it to a non-integer screen size, compresses it, or places it between screen pixels.

Use this engine-side checklist:

  1. Select nearest or point texture filtering for pixel art.
  2. Avoid lossy compression that alters palette edges.
  3. Match pixels per unit and camera scale to the project's pixel grid.
  4. Position sprites consistently when pixel-perfect rendering is required.
  5. Test at real target resolutions, not only in an editor preview.

Mipmaps can also blend colors at reduced sizes. They are useful for distant 3D textures but often undesirable for fixed-scale 2D pixel sprites. Decide based on how the texture is used rather than applying one import preset to every asset.

Upscaling a complete sprite sheet

You can upscale a complete sheet when every cell, margin, and spacing should grow by the same factor. A 32×32 cell with 1-pixel spacing becomes a 128×128 cell with 4-pixel spacing at 4×. Remember to enter the scaled measurements when slicing the output.

Alternatively, use the sprite sheet cutter, upscale individual frames, and rebuild them with the sprite sheet maker. This longer route is useful when some frames need manual cleanup, but it introduces opportunities to change order or canvas size. Keep the process consistent across all frames.

Never upscale only selected animation frames to a different multiplier and place them back into one regular grid. Every frame in the same animation should share cell dimensions and the same pixel scale unless the engine explicitly supports a different workflow.

Common mistakes

Choosing a target size instead of an integer multiplier

An arbitrary target creates uneven pixel blocks. Pick the nearest useful integer scale, then add canvas space if a platform needs exact outer dimensions.

Assuming nearest neighbor repairs a blurry source

It only repeats existing pixels. If the source contains anti-aliasing or JPG noise, those colors become larger blocks. Clean or replace the source first.

Exporting correctly but displaying with smoothing

Check the engine, CSS, canvas, or editor preview. The stored pixels may be crisp while the display layer applies linear filtering.

Ignoring memory because the input file is small

Compressed file size is not the same as decoded canvas memory. Estimate output width × height × four bytes as a baseline for one RGBA buffer, then allow additional working memory.

Cropping transparent borders from animation frames

The borders often encode alignment. Removing them independently can make a character jump even when every visible sprite looks correct in isolation.

When not to upscale

Keep the original resolution when the engine already renders the sprite at a clean integer scale, when texture memory is limited, or when the enlarged file offers no distribution benefit. Upscaling cannot add animation detail or improve a weak silhouette.

If your real goal is to turn a photo or smooth illustration into a pixel-art style, use the Image to Pixel Art Converter. That process reduces spatial resolution and colors, which is fundamentally different from enlarging existing pixel art.

Final verification workflow

Start from the clean master, choose an integer scale, check the predicted dimensions, generate with nearest neighbor, inspect colors and alpha, export PNG, then verify filtering and screen alignment inside the destination.

The result should look like the same artwork viewed through a larger grid—not a smoother interpretation and not an AI-redrawn variant.

Upscale pixel art without blur

FAQ

What is the best scaling method for pixel art?

Nearest-neighbor scaling is the predictable choice for preserving exact pixel blocks and palette colors.

Should I use 2×, 4×, or 8×?

Use the smallest integer scale that meets the output requirement. Larger multipliers increase both dimensions and pixel memory rapidly.

Why is the exported image crisp but blurry in my game?

The engine may be using linear filtering, non-integer transforms, compression, mipmaps, or non-pixel-aligned placement. Review import and rendering settings.

Does nearest-neighbor scaling add detail?

No. It repeats source pixels exactly. That is why it preserves pixel-art style, but it cannot restore details missing from the original.

Can I upscale a transparent sprite sheet?

Yes. Transparency, cells, margins, and spacing scale together. Use the multiplied grid values when importing or slicing the enlarged sheet.

Related guides

convert image to pixel artHow to Convert an Image to Pixel Artremove background from spriteHow to Remove the Background from a Sprite or Pixel Artconvert GIF to sprite sheetHow to Convert a GIF to a Sprite Sheet
← Back to Tutorials